我使用ansible來設置完整環境。出於某種原因,ansible不會選擇變量值。ansible:從寄存器變量中提取值以在同一劇本中的其他劇本中使用它
我使用ansible 2.1.1.0
這裏是我想要做一個帶例子: 我已經註冊了我的VPC與register: ec2_vpc
。
1. #This didn't works
- name: Add to host vars
add_host:
name: vpc_vars
groups: vpc_subnets
vpc_subnet_id: "{{ ec2_vpc.subnets[0].id }}"
vpcid: "{{ ec2_vpc.vpc_id }}"
- debug: var=vpc_subnet_id
- debug: var=vpcid
2. These works
- name: Record vpc id
debug: var=ec2_vpc.vpc_id
- name: Record subnet id
debug: var=ec2_vpc.subnets[0].id
導致我上面帶的JSON:
TASK [debug] *******************************************************************
ok: [localhost] => {
"vpc_subnet_id": "VARIABLE IS NOT DEFINED!"
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"vpcid": "VARIABLE IS NOT DEFINED!"
}
TASK [Record vpc id] ***********************************************************
ok: [localhost] => {
"ec2_vpc.vpc_id": "vpc-4sdh3832f"
}
TASK [Record subnet id] ********************************************************
ok: [localhost] => {
"ec2_vpc.subnets[0].id": "subnet-edfjdh3482"
}
爲什麼我的第一個語法不採摘的價值,而不是它給VARIABLE IS NOT DEFINED!
更新時間:這裏我的第二個語法說明我正確從註冊變量的JSON結果中篩選出值。但我希望它適用於我的第一個語法,這意味着我想將主機變量添加到動態庫存。以便我可以在其他遊戲中重複使用它
第一種語法不起作用,因爲您將變量添加到名爲「vpc subnets」和組名稱爲「vpc_vars」(用於什麼?)的新主機中...如果您針對'vpc_vars'組運行後續遊戲,您的變量將可見。我無法理解你用這一切努力達到什麼目的。 –