Ansible在playbook中执行任务之前等待初始化主机
在我的主机中,初始化CLI会话需要大约20秒的时间,。。。在执行cli之前 我正试图通过playbook ansible执行命令:Ansible在playbook中执行任务之前等待初始化主机,ansible,Ansible,在我的主机中,初始化CLI会话需要大约20秒的时间,。。。在执行cli之前 我正试图通过playbook ansible执行命令: --- - name: Run show sub command hosts: em gather_facts: no remote_user: duypn tasks: - name: wait for SSH to respond on all hosts local_action: wait_for host=em por
---
- name: Run show sub command
hosts: em
gather_facts: no
remote_user: duypn
tasks:
- name: wait for SSH to respond on all hosts
local_action: wait_for host=em port=22 delay=60 state=started
- name: run show sub command
raw: show sub id=xxxxx;display=term-type
10分钟后,ansible给我的输出不是show sub命令的结果:
...
["CLI Session initializing..", "Autocompleter initializing..", "CLI>This session has been IDLE for too long.",
...
我很高兴听到你的建议。谢谢:我没有拷贝粘贴解决方案,但我学到了一件事,那就是在ssh“启动”后休眠,让机器完成它的工作。这可能会给你一个正确的方向
- name: Wait for SSH to come up
local_action: wait_for
host={{ item.public_ip }}
port=22
state=started
with_items: "{{ ec2.instances }}"
- name: waiting for a few seconds to let the machine start
pause:
seconds: 20
所以我遇到了同样的问题,我就是这样解决的:
---
- name: "Get instances info"
ec2_instance_facts:
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
region: "{{ aws_region }}"
filters:
vpc-id : "{{ vpc_id }}"
private-ip-address: "{{ ansible_ssh_host }}"
delegate_to: localhost
register: my_ec2
- name: "Waiting for {{ hostname }} to response"
wait_for:
host: "{{ item.public_ip_address }}"
state: "{{ state }}"
sleep: 1
port: 22
delegate_to: localhost
with_items:
- "{{ my_ec2.instances }}"
这就是名为aws_ec2_status的剧本
我运行的剧本如下所示:
---
# Create an ec2 instance in aws
- hosts: nodes
gather_facts: false
serial: 1
vars:
state: "present"
roles:
- aws_create_ec2
- hosts: nodes
gather_facts: no
vars:
state: "started"
roles:
- aws_ec2_status
我将创建和检查拆分为两个不同的剧本的原因是,我希望剧本创建实例,而不是等到一个实例准备好后再创建另一个实例。
但是如果第二个实例依赖于第一个实例,那么您应该合并它们
如果您想查看我的aws\u create\u ec2手册,请告知。Tks了解您的解决方案。我试过了,但效果一样。我只是想知道每个剧本是建立ssh连接还是每个任务都建立ssh连接?这取决于您如何配置它。默认情况下,ssh连接将被重用,除非您在ansible.cfg中使用ssh_args=-o ControlMaster=no另外指定。这将每次启动一个新的ssh连接,并使Ansible慢得多。我很高兴听到你的回答。那么,在每个playbook上只创建一个ssh连接的具体配置是什么呢?我不确定它只会为每个playbook创建一个连接,但是您可以按照这里的文档中所述启用管道