2017-06-29 101 views
0

做任务,我的主机之前初始化主机,它需要时间(约20秒)来初始化CLI会话,......做CLIAnsible等待在剧本

CLI init

我试图做之前通过剧本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 port=22 delay=60 state=started 

    - name: run show sub command 
    raw: show sub id=xxxxx;display=term-type 

10分钟后,ansible给我输出这是不显示子命令的结果:(

... 
["CLI Session initializing..", "Autocompleter initializing..", "CLI>This session has been IDLE for too long.", 
... 

我很高兴听到您的建议。谢谢:)

回答

0

我没有针对你的复制粘贴解决方案,但我学到的一件事就是在ssh之后进行睡眠'up'以允许机器完成它的工作。这可能会让你朝正确的方向发展。

- 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 
+0

Tks for your solution。我试过,但结果相同。我只是想知道每个剧本都做了ssh连接还是每个任务都做了ssh连接? –

+0

这取决于你如何配置它。默认情况下,除非在ansible.cfg中用ssh_args = -o ControlMaster = no'指定,否则将重用ssh-connection。这将每次启动一个新的SSH连接(并使Ansible慢得多)。 – Evert

+0

我很高兴听到你的回答。那么在每个剧本中只做一个ssh连接的特定配置是什么? –