gpt4 book ai didi

linux - ansible完成后不进入下一步

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:12 25 4
gpt4 key购买 nike

我有一个可执行的 shell 任务,它执行一个 sh 脚本,就是这样:

#/bin/bash

echo Which version will you be using
read VERSION
export VERSION=$VERSION

sh deployvcenter.v1.sh

sh deployf5.v1.sh

sh deployadmin.sh

ansible 任务如下所示:

- name: Run build scripts
shell:
cmd: echo "beta-1" | sudo sh /home/admin/buildscripts/deployall.sh >> /tmp/build.log
chdir: /home/admin/buildscripts
become: true
become_method: su
become_user: root

deployadmin.sh 的最后一部分是这样的:

terraform init && terraform apply -var-file=static-ip.tfvars -auto-approve -input=false

terraform 确实完成了,因为 /tmp/build.log 最后有这个:

vsphere_virtual_machine.vm: Still creating... (1m10s elapsed)
vsphere_virtual_machine.vm: Creation complete after 1m17s (ID: 4226c091-bb3a-4d3a-d2af-c31933425991)

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

ip_address = ip addy

但 ansible 只是坐在那个任务上,不会移动到下一个任务。

任务 [运行构建脚本] ************************************** *****************

我不明白为什么它不移动到下一个或出错?

更新:

我让它运行,大约一个小时后我得到了这个:

TASK [Run build scripts] *******************************************************

fatal: [ip]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Shared connection to ip closed.\r\n", "unreachable": true}

这很奇怪,因为我在一个单独的终端上通过 ssh 进入机器并再次执行它,它仍然在那里...任务确实成功完成,所以我不太确定它试图做什么...

最佳答案

我将在此处发布我自己的答案作为解决方法,因为几个小时后我只是无法弄清楚它不会进入下一步。

绝对是执行此操作效率最低的方法(更不用说与此相关的其他问题),但希望这能让遇到类似情况的任何其他人了解如果他们处于类似情况下如何解决它。

我最终使用 nohup 运行了测试,如下所示:

   - name: Run build scripts
shell: cd /home/admin/buildscripts; nohup sh deployall.sh > /tmp/build.log 2>&1 &
become: true
become_method: su
become_user: root

运行 shell 命令的任务完成并且进程正确退出但不确定为什么 ansible 不接收它。

然后我添加了另一个任务来查看 vcenter 服务器和其他服务器是否像这样出现:

- name: Wait for Vcenter to come alive
uri:
url: "https://vcenter/vsphere-client/?csp"
status_code: 200
validate_certs: False
register: result
until: result.status == 200
retries: 240
delay: 30
tags:
- debug

- name: Wait for F5 to come alive and get token
uri:
url: https://{{ f5_addr }}/mgmt/shared/authn/login
method: POST
body_format: json
body:
username: '{{ f5_user }}'
password: '{{ f5_pass }}'
needsToken: true
return_content: yes
validate_certs: no
register: token
until: token.status == 200
retries: 240
delay: 30
tags:
- f5license

- name: Waits ws to come up
wait_for:
host: '{{ admin_ip }}'
port: 22

关于linux - ansible完成后不进入下一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55754806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com