ec2.py
动态清单生成清单时,剧本运行完毕后,结果显示为特定标签下的IP地址列表,并带有下划线而不是点。 例如,我想在具有特定标签的实例上运行一个剧本,不知道其他人如何使用IP地址?
---
- hosts: tag_test_staging
sudo: true
tasks:
- name: Make sure that we can connect to the machine
ping:
PLAY RECAP *********************************************************************
10_80_20_47 : ok=0 changed=0 unreachable=1 failed=0
对于私有地址,ec2.ini:
hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address
ec2.py的结果:
"tag_test_staging": [
"10_80_20_47"
],
对于公共地址,ec2.ini:
hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address
ec2.py的结果:
"tag_test_staging": [
"52_28_11_11"
],
#1 楼
如果我注释掉hostname_variable,它会起作用,因为它允许使用ec2变量来覆盖ventory_name,而不是使用destination_variable#hostname_variable = private_ip_address
#hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = private_ip_address
对于专用IP:
destination_variable = private_ip_address
评论
las,我看到的是相同的行为,并且注释掉hostname_variable并不能纠正它。
–托德·沃尔顿(Todd Walton)
18年6月14日在20:26
但是......我现在有几次注意到,更改ini文件并重新运行ec2.py不会立即返回正确的信息。 AF很奇怪,对不对?但是经过几次尝试之后,大约20分钟后,它突然开始返回带点而不是下划线的IP地址!我不知道。
–托德·沃尔顿(Todd Walton)
18年6月14日在20:33
您知道我要提出条件怎么办吗?例如vpc_destination_variable:“ {{ip_address,如果ec2_platform =='windows',否则为private_ip_address}}”
– Nimitack
19/12/26在8:42
#2 楼
我遇到过同样的问题。我使用下划线而不是点来获取IP地址。但是我现在有几次注意到,更改ini文件并重新运行ec2.py不会立即返回正确的信息。一旦我更改为private_ip_address,并且一段时间后它一直返回private_dns_name。这次,更改为private_ip_address并重新运行了好几次-尝试一下然后尝试一下-大约20分钟后,它突然开始返回带点而不是下划线的IP地址!我不知道。 AF很奇怪,对吧?评论
听起来像是缓存中的“问题”。您是否尝试更改ec2.ini中的“ cache_max_age”参数?
–麦芽
18年8月25日在22:21
你可能是完全正确的。实际上,我今天只是在看那个。您可以运行“ ./ec2.py --refresh-cache”。
–托德·沃尔顿(Todd Walton)
18年8月27日在22:34
评论
为什么脚本给每个主机提供的名称对非字母数字字符加下划线对您来说很重要?这似乎是一个非常具体的以工具为中心的问题。为此有ServerFault,它的主题是serverfault.com/help/on-topic。完全不知道这里的主题。
@Evgeny,不确定我是否理解您的意思,如果您不提出问题,http://devops.stackexchange.com有什么意义?不是DevOps问题吗?