gpt4 book ai didi

ssh - Ansible ssh 连接在其中一项任务中丢失 [失败] 而对其他任务有效

转载 作者:行者123 更新时间:2023-12-02 14:26:17 25 4
gpt4 key购买 nike

这是我的剧本,有三个任务:

- name: Play 2- Configure Source nodes
hosts: all_hosts

vars:
ansible_ssh_extra_args: -o StrictHostKeyChecking=no -o ConnectTimeout=8 -o ServerAliveInterval=50
ansible_ssh_private_key_file: /app/misc_automation/ssh_keys/id_rsa

gather_facts: false
tasks:

- name: Get Process Dump for tomcat on non-Solaris
ignore_errors: yes
block:
- raw: ps -ef | grep java | grep -i tomcat | grep -v grep
ignore_errors: yes
register: tomjavadump

- raw: ps -ef | grep java | grep -i tomcat | grep -v grep | wc -l
ignore_errors: yes
register: tomjavadumpcount

- raw: "echo <tr><td>{{ inventory_hostname }}</td><</tr>"
delegate_to: localhost
when: tomjavadump.rc == 0 and patchthistomcat is undefined
我在 Debug模式下运行了上面的剧本,完全相同的 ssh 连接适用于两个任务,但第一个任务失败,如下面的调试输出所示:
TASK [raw] *************************************************************************************************************************************************************
task path: /app/Ansible/playbook/check.yml:1260
<10.0.0.211> ESTABLISH SSH CONNECTION FOR USER: root
<10.0.0.211> SSH: EXEC ssh -o 'IdentityFile="/app/misc_automation/ssh_keys/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ConnectTimeout=8 -o ServerAliveInterval=50 10.0.0.211 'ps -ef | grep java | grep -i tomcat | grep -v grep'
<10.0.0.211> (1, '', '')
<10.0.0.211> Failed to connect to the host via ssh:
fatal: [10.0.0.211]: FAILED! => {
"changed": true,
"msg": "non-zero return code",
"rc": 1,
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
}
...ignoring

TASK [raw] *************************************************************************************************************************************************************
task path: /app/Ansible/playbook/check.yml:1267
<10.0.0.211> ESTABLISH SSH CONNECTION FOR USER: root
<10.0.0.211> SSH: EXEC ssh -o 'IdentityFile="/app/misc_automation/ssh_keys/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ConnectTimeout=8 -o ServerAliveInterval=50 10.0.0.211 'ps -ef | grep java | grep -i tomcat | grep -v grep | wc -l'
<10.0.0.211> (0, '0\n', '')
changed: [10.0.0.211] => {
"changed": true,
"rc": 0,
"stderr": "",
"stderr_lines": [],
"stdout": "0\n",
"stdout_lines": [
"0"
]
}

TASK [raw] *************************************************************************************************************************************************************
task path: /app/Ansible/playbook/check.yml:1270
skipping: [10.0.0.211] => {
"changed": false,
"skipped": true,
我不知道,但如果我将目标服务器从 10.0.0.211 更改为其他东西,相同的代码可以正常工作。
为什么完全相同的 ssh 连接适用于其他任务而第一个任务失败?
我该如何解决这个问题?
这是失败和传递任务的 ssh 失败和传递连接的最大调试 https://filebin.net/8v5xy28edtaz0bhh/ansible_ssh_issue.txt?t=o4l9o4d1 .

最佳答案

这里的问题是raw模块,它在远程节点内运行你的 shell 命令,可能没有在它上面安装 python。
这意味着 ansible 正在运行您的命令,如下所示:

ssh user@ip "commands"
在你的情况下:
<10.0.0.211> SSH: EXEC ssh -o 'IdentityFile="/app/misc_automation/ssh_keys/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ConnectTimeout=8 -o ServerAliveInterval=50 10.0.0.211 'ps -ef | grep java | grep -i tomcat | grep -v grep'
如果 ssh 失败 OR rc of commands 则抛出错误非零。
保留命令的返回码并防止 rc要变为非零,您应该使用
-raw: ps -ef | grep java | grep -i tomcat | grep -v grep; awk -vrc=$? 'BEGIN{print "rc="rc}'
通过这样做,您正在捕获 rc最后 grep命令并通过 awk 打印命令。这里 awk总是返回 zero-rc .
捕获标准输出后,您可以搜索 rc=0rc=1根据您在 var.stdout 中的要求.
如果你不关心 rc然后只需添加 ||true 的后缀听从你的命令。

关于ssh - Ansible ssh 连接在其中一项任务中丢失 [失败] 而对其他任务有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64285968/

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