我正在运行一个执行多个Ansible剧本的气流DAG
Playbook1通过Ansible分配两个EC2(Ubuntu 20.04的默认AMI)实例(一切正常)
Playbook 2和3按顺序执行,并通过不同的Ansible Playbook在这些实例上部署两个不同的服务。两个剧本都以相同的调用开始,如以下代码段所示
然而,playbook2或playbook3都被困在Playbook的setup
调用中
剧本片段:
- name: init tasks on all hosts
hosts: all
remote_user: ubuntu
gather_facts: no
vars:
ansible_python_interpreter: /usr/bin/python3.8
tasks:
- name: Wait until hosts are reachable
wait_for_connection:
connect_timeout: 5
sleep: 10
timeout: 300
# setting the path to the python interpreter manually for Ubuntu 20.04, otherwise python 2.7 might be chosen randomly
- name: Gather facts for first time as host is reachable
setup:
- name: check which python version is used by ansible
debug:
msg: "python version is {{ ansible_python_version }}"
然而,在两个EC2实例中的一个实例上,playbook将永远停留在这个任务中,永远不会到达check which python version is used by ansible
另一个工作没有问题
在下面找到卡住的剧本的-vvv
日志输出:
<52.209.69.27> ESTABLISH SSH CONNECTION FOR USER: ubuntu
[2020-12-08 10:04:40,164] {bash_operator.py:157} INFO - <52.209.69.27> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/opt/baas/keys/ec2"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/c0fdd259e3 52.209.69.27 '/bin/sh -c '"'"'echo ~ubuntu && sleep 0'"'"''
[2020-12-08 10:04:40,240] {bash_operator.py:157} INFO - <52.209.69.27> (0, b'/home/ubuntu\n', b'')
[2020-12-08 10:04:40,240] {bash_operator.py:157} INFO - <52.209.69.27> ESTABLISH SSH CONNECTION FOR USER: ubuntu
[2020-12-08 10:04:40,241] {bash_operator.py:157} INFO - <52.209.69.27> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/opt/baas/keys/ec2"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/c0fdd259e3 52.209.69.27 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /home/ubuntu/.ansible/tmp `"&& mkdir "` echo /home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202 `" && echo ansible-tmp-1607421880.2405577-3462-268510123659202="` echo /home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202 `" ) && sleep 0'"'"''
[2020-12-08 10:04:40,314] {bash_operator.py:157} INFO - <52.209.69.27> (0, b'ansible-tmp-1607421880.2405577-3462-268510123659202=/home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202\n', b'')
[2020-12-08 10:04:40,761] {bash_operator.py:157} INFO - Using module file /usr/local/lib/python3.7/site-packages/ansible/modules/setup.py
[2020-12-08 10:04:40,763] {bash_operator.py:157} INFO - <52.209.69.27> PUT /root/.ansible/tmp/ansible-local-3395wtci4jxr/tmp1wpwdhy1 TO /home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202/AnsiballZ_setup.py
[2020-12-08 10:04:40,764] {bash_operator.py:157} INFO - <52.209.69.27> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/opt/baas/keys/ec2"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/c0fdd259e3 '[52.209.69.27]'
[2020-12-08 10:04:41,153] {bash_operator.py:157} INFO - <52.209.69.27> (0, b'sftp> put /root/.ansible/tmp/ansible-local-3395wtci4jxr/tmp1wpwdhy1 /home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202/AnsiballZ_setup.py\n', b'')
[2020-12-08 10:04:41,154] {bash_operator.py:157} INFO - <52.209.69.27> ESTABLISH SSH CONNECTION FOR USER: ubuntu
[2020-12-08 10:04:41,155] {bash_operator.py:157} INFO - <52.209.69.27> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/opt/baas/keys/ec2"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/c0fdd259e3 52.209.69.27 '/bin/sh -c '"'"'chmod u+x /home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202/ /home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202/AnsiballZ_setup.py && sleep 0'"'"''
[2020-12-08 10:04:41,226] {bash_operator.py:157} INFO - <52.209.69.27> (0, b'', b'')
[2020-12-08 10:04:41,226] {bash_operator.py:157} INFO - <52.209.69.27> ESTABLISH SSH CONNECTION FOR USER: ubuntu
[2020-12-08 10:04:41,227] {bash_operator.py:157} INFO - <52.209.69.27> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/opt/baas/keys/ec2"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ubuntu"' -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/c0fdd259e3 -tt 52.209.69.27 '/bin/sh -c '"'"'/usr/bin/python3.8 /home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202/AnsiballZ_setup.py && sleep 0'"'"''
在卡住的实例上手动调用此模块,例如/usr/bin/python3.8 /home/ubuntu/.ansible/tmp/ansible-tmp-1607421880.2405577-3462-268510123659202/AnsiballZ_setup.py
,不会出错
更新:
Not通过!hardware
收集硬件事实解决了问题,但后续任务依赖于硬件事实,因此这不是解决方案
在通过setup
模块收集事实之前添加延迟可以解决以下问题:
- name: Sleep for 30 seconds and continue with play otherwise setup module might hang forever
wait_for:
timeout: 30
但是,在调用setup
模块作为所需的解决方案之前,需要等待确切的条件得到满足
目前没有回答
相关问题 更多 >
编程相关推荐