运行Ansible Playbook时,EC2的错误弹性ection



在过去的几天中,我在使用AWS云模块运行ansible playbook或直接使用-refresh-cache命令直接运行ec2.py文件时会遇到以下错误本地机器:

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__'

从AWS帐户中的EC2实例运行时,此问题似乎消失了。

我有最新的ec2.py和ec2.Ini文件,安装了Ansible版本为2.2.0.0,已安装了Boto3,并且在运行Playbook之前,我确实设置了有效的AWS凭据。

对发生的事情有什么想法?

在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']]

相关内容

  • 没有找到相关文章

最新更新