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