0
我有一個創建一個ec2實例的劇本,並從該創建我想註冊輸出爲var。從那裏我會使用註冊的var創建並附加一個ebs卷。不過,我遇到了以下錯誤。註冊ec2創建變量的問題
- name: Create EC2 instance for zone A
ec2:
key_name: "{{ keypair }}"
group: "{{ security_groups }}"
image: "{{ ami }}"
instance_type: "{{ instance_type }}"
wait: true
region: "{{ ec2_region }}"
vpc_subnet_id: "{{ subneta }}"
assign_public_ip: "{{ public_choice }}"
zone: "{{ zonea }}"
count: 1
instance_tags:
Name: "db{{ item }}a.{{ env }}"
envtype: "{{ envtype }}"
register: ec2
with_sequence: "start=1 end={{ num }}"
- debug:
msg: "{{ ec2 }}"
- debug:
msg: "{{ ec2.instance_ids }}"
有了這個,我得到以下輸出
[email protected]:/etc/ansible/roles/db_ec2/tasks > ansible-playbook db_ec2.yml -e 'env=qa num=1 ebs=true'
______
<PLAY>
------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
______________________
< TASK [db_ec2 : fail] >
----------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
_______________________
< TASK [db_ec2 : debug] >
-----------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
ok: [localhost] => {
"msg": "If you need to change any default variables for this playbook edit vars/qa.yml and vars/ebs.yml for ebs configs"
}
_________________________
< TASK [db_ec2 : include] >
-------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
included: /etc/ansible/roles/db_ec2/tasks/./db_create.yml for localhost
________________________________________________
< TASK [db_ec2 : Create EC2 instance for zone A] >
------------------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
changed: [localhost] => (item=1)
_______________________
< TASK [db_ec2 : debug] >
-----------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
ok: [localhost] => {
"msg": {
"changed": true,
"msg": "All items completed",
"results": [
{
"_ansible_no_log": false,
"changed": true,
"instance_ids": [
"i-1046c108"
],
"instances": [
{
"ami_launch_index": "0",
"architecture": "x86_64",
"block_device_mapping": {
"/dev/sda1": {
"delete_on_termination": true,
"status": "attached",
"volume_id": "vol-55812edd"
}
},
"dns_name": "",
"ebs_optimized": false,
"groups": {
"sg-749f3c0d": "qa-ssh",
"sg-8f983bf6": "qa-db"
},
"hypervisor": "xen",
"id": "i-1046c108",
"image_id": "ami-55e31a35",
"instance_type": "m4.xlarge",
"kernel": null,
"key_name": "ccpkey",
"launch_time": "2016-09-28T00:28:00.000Z",
"placement": "us-west-2a",
"private_dns_name": "ip-10-50-36-201.us-west-2.compute.internal",
"private_ip": "10.50.36.201",
"public_dns_name": "",
"public_ip": null,
"ramdisk": null,
"region": "us-west-2",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"state": "running",
"state_code": 16,
"tags": {
"Name": "db1a.qa",
"envtype": "qa-db"
},
"tenancy": "default",
"virtualization_type": "hvm"
}
],
"invocation": {
"module_args": {
"assign_public_ip": false,
"aws_access_key": null,
"aws_secret_key": null,
"count": 1,
"count_tag": null,
"ebs_optimized": false,
"ec2_url": null,
"exact_count": null,
"group": [
"qa-db",
"qa-ssh"
],
"group_id": null,
"id": null,
"image": "ami-55e31a35",
"instance_ids": null,
"instance_profile_name": null,
"instance_tags": {
"Name": "db1a.qa",
"envtype": "qa-db"
},
"instance_type": "m4.xlarge",
"kernel": null,
"key_name": "ccpkey",
"monitoring": false,
"network_interfaces": null,
"placement_group": null,
"private_ip": null,
"profile": null,
"ramdisk": null,
"region": "us-west-2",
"security_token": null,
"source_dest_check": true,
"spot_price": null,
"spot_type": "one-time",
"spot_wait_timeout": 600,
"state": "present",
"tenancy": "default",
"termination_protection": false,
"user_data": null,
"validate_certs": true,
"volumes": null,
"vpc_subnet_id": "subnet-5d625c39",
"wait": true,
"wait_timeout": 300,
"zone": "us-west-2a"
},
"module_name": "ec2"
},
"item": "1",
"tagged_instances": []
}
]
}
}
_______________________
< TASK [db_ec2 : debug] >
-----------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
fatal: [localhost]: FAILED! => {"failed": true, "msg": "'dict object' has no attribute 'instance_ids'"}
____________
< PLAY RECAP >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
localhost : ok=4 changed=1 unreachable=0 failed=1
所以我可以看到,應該存在變量確實在充分EC2變量的輸出。但是,試圖利用ec2.instance_ids的失敗的關鍵特定變量...
編輯時:
這似乎是特定於with_sequence。如果我刪除序列並將其更改爲這樣的內容。
- name: Create EC2 instance for zone A
ec2:
key_name: "{{ keypair }}"
group: "{{ security_groups }}"
image: "{{ ami }}"
instance_type: "{{ instance_type }}"
region: "{{ ec2_region }}"
vpc_subnet_id: "{{ subneta }}"
assign_public_ip: "{{ public_choice }}"
zone: "{{ zonea }}"
count: "{{ num }}"
wait: true
instance_tags:
envtype: "{{ envtype }}"
register: ec2
- debug:
msg: "{{ item.id }}"
with_items: "{{ ec2.instances }}"
我不再有任何錯誤,它打印實例ID沒有問題。
啊,那完全是我所錯過的。在這裏謝謝你的答案,這正是我所需要的。 – stobiewankenobi
酷!很高興幫助! – rk2