【问题标题】:Error refreshing ElastiCache in Ec2.py when running Ansible playbooks运行 Ansible playbook 时在 Ec2.py 中刷新 ElastiCache 时出错
【发布时间】:2016-12-12 18:18:04
【问题描述】:

在过去的几天里,我在使用 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 凭证。

有什么想法吗?

【问题讨论】:

    标签: ansible amazon-elasticache ansible-inventory


    【解决方案1】:

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

    【讨论】:

    • 请发货 :-)
    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多