2016-12-12 2 views
1

In den letzten paar Tagen bekomme ich den folgenden Fehler beim Ausführen von Ansible-Playbooks mit den AWS-Cloud-Modulen oder beim direkten Ausführen der ec2.py-Datei mit dem --refresh-Cache Befehl von meinem lokalen Rechner:Fehler beim Aktualisieren von ElastiCache in Ec2.py beim Ausführen von Ansible-Playbooks

ap:~ ap$ /ansible/inventory/ec2.py --refresh-cache 
Traceback (most recent call last): 
    File "/ansible/inventory/ec2.py", line 1510, in <module> 
    Ec2Inventory() 
    File "/ansible/inventory/ec2.py", line 186, in __init__ 
    self.do_api_calls_update_cache() 
    File "/ansible/inventory/ec2.py", line 492, in do_api_calls_update_cache 
    self.get_elasticache_replication_groups_by_region(region) 
    File "/ansible/inventory/ec2.py", line 722, in get_elasticache_replication_groups_by_region 
    self.add_elasticache_replication_group(replication_group, region) 
    File "/ansible/inventory/ec2.py", line 1198, in add_elasticache_replication_group 
    dest = replication_group['NodeGroups'][0]['PrimaryEndpoint']['Address'] 
TypeError: 'NoneType' object has no attribute '__getitem__' 

Dieses Problem scheint weg zu gehen, wenn sie aus einer EC2-Instanz in dem AWS-Konto ausgeführt wird.

Ich habe die neuesten EC2.py und EC2.ini Dateien, Ansible Version ist 2.2.0.0, Boto3 ist installiert und ich setze die gültigen AWS-Anmeldeinformationen vor dem Ausführen des Playbooks.

Irgendwelche Ideen, was vor sich geht?

Antwort

1

Versuchen Sie den Patch auf https://github.com/ansible/ansible/pull/20190


@@ -1194,13 +1194,14 @@ def add_elasticache_replication_group(self, replication_group, region): 
      if not self.all_elasticache_replication_groups and replication_group['Status'] != 'available': 
       return 

+  # Skip clusters we cannot address (e.g. private VPC subnet or clustered redis) 
+  if replication_group['NodeGroups'][0]['PrimaryEndpoint'] is None or \ 
+   replication_group['NodeGroups'][0]['PrimaryEndpoint']['Address'] is None: 
+   return 
+ 
      # Select the best destination address (PrimaryEndpoint) 
      dest = replication_group['NodeGroups'][0]['PrimaryEndpoint']['Address'] 

-  if not dest: 
-   # Skip clusters we cannot address (e.g. private VPC subnet) 
-   return 
- 
      # Add to index 
      self.index[dest] = [region, replication_group['ReplicationGroupId']] 
+0

Schiff pls :-) – Metallikanz

Verwandte Themen