0
我已經用Ansible編寫了兩個角色。第一個角色(即規定)上具有所需的綜合評估,以提供EC2實例的實例本地執行(見下文):在Ansible/AWS中本地和遠程執行角色
- name: Provison "{{ count }}" ec2 instances in "{{ region }}"
ec2:
key_name: "{{ key_name }}"
instance_type: "{{ instance_type }}"
image: "{{ image }}"
...
exact_count: "{{ count }}"
count_tag: "{{ count_tag }}"
instance_tags:
...
register: ec2
我再放入私有IP地址的主機。
- name: Add the newly created EC2 instances to the local host file
local_action: lineinfile
dest="./hosts"
regexp={{ item.private_ip }}
insertafter="[sit]" line={{ item.private_ip }}
with_items: "{{ ec2.instances }}"
我等待SSH可用。
- name: Wait for SSH process to be available on "{{ sit }}"
wait_for:
host: "{{ item.private_ip }}"
port: 22
delay: 60
timeout: 320
state: started
with_items: "{{ ec2.instances }}"
第二個角色(即setupEnv)設置在「坐」宿主如用戶/組的目錄的環境變量。我嘗試按順序運行中的作用(見下文main.yml
劇本):
- hosts: local
roles:
connection: local
gather_facts: false
user: svc_ansible_lab
roles:
- provision
- hosts: sit
roles:
connection: ssh
gather_facts: true
user: ec2-user
roles:
- setupEnv
但是,只有第一個角色被本地主機上執行。 Ansible會一直等待,直到提供的實例上有可用的SSH,然後該過程完成而不會改變角色setupEnv。
有沒有一種方法可以確保第二個角色在sit
主機上執行SSH後可用?
啊!謝謝。我認爲這是與內存相關的,因爲我運行腳本兩次,第一個安裝實例使用我給他們的參數設置。但我不知道如何將主機添加到內存中。這就是說add_host不會更改磁盤上的我的清單。我仍然應該使用* lineinfile *中止我的主機文件? – SSF