由于某些原因,这一做法失败了:
- name: "Get GPG key from the Jenkins portal"
get_url:
url: https://pkg.jenkins.io/debian-stable/jenkins.io.key
dest: /usr/share/keyrings/jenkins.io.key
- name: "Delete existing keys and de-arm"
become: true
shell: |
"rm -rf /usr/share/keyrings/jenkins.gpg"
"gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key"这是从另一个文件调用的任务文件的一部分。我不明白为什么第一个失败了。失败的原因是:
fatal: [localhost]: FAILED! => {
"changed": true,
"cmd": "\"rm -rf /usr/share/keyrings/jenkins.gpg\"\n\"gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key\"\n",
"delta": "0:00:00.021351",
"end": "2023-02-07 12:00:17.975367",
"invocation": {
"module_args": {
"_raw_params": "\"rm -rf /usr/share/keyrings/jenkins.gpg\"\n\"gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key\"\n",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true
}
},
"msg": "non-zero return code",
"rc": 127,
"start": "2023-02-07 12:00:17.954016",
"stderr": "/bin/sh: 1: rm -rf /usr/share/keyrings/jenkins.gpg: not found\n/bin/sh: 2: gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key: not found",
"stderr_lines": [
"/bin/sh: 1: rm -rf /usr/share/keyrings/jenkins.gpg: not found",
"/bin/sh: 2: gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key: not found"
],
"stdout": "",
"stdout_lines": []
}我不知道not found在这种情况下意味着什么。我可以在一个真实的shell上按顺序运行这些命令,它们可以工作。
- name: "Get GPG key from the Jenkins portal"
get_url:
url: https://pkg.jenkins.io/debian-stable/jenkins.io.key
dest: /usr/share/keyrings/jenkins.io.key
- name: "Delete existing key"
become: true
shell: "rm -rf /usr/share/keyrings/jenkins.gpg"
- name: "De-arm the keys"
become: true
shell: "gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key"
register: jenkinskey因为这些都是经过外壳处理的,所以我相信它们应该很好。
有什么暗示吗?
发布于 2023-02-07 11:07:45
我不明白为什么第一个失败了。
看起来任务有语法错误。
- name: "Delete existing keys and de-arm"
become: true
shell: |
"rm -rf /usr/share/keyrings/jenkins.gpg"
"gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key"根据错误信息
"stderr": "/bin/sh: 1: rm -rf /usr/share/keyrings/jenkins.gpg: not found\n/bin/sh: 2: gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key: not found",
"stderr_lines": [
"/bin/sh: 1: rm -rf /usr/share/keyrings/jenkins.gpg: not found",
"/bin/sh: 2: gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key: not found"这些行被处理为一个命令,如果我正确解释它的话。此外,不需要引号。
我不知道
not found在这种情况下意味着什么。
这意味着命令的整体或部分没有找到,这是一个语法错误,是预期的行为。
你可以试试
- name: Exec sh script on Remote Node
shell:
cmd: |
rm -f /usr/share/keyrings/jenkins.gpg
gpg --dearmor -o /usr/share/keyrings/jenkins.gpg /usr/share/keyrings/jenkins.io.key
register: result甚至连
shell: "rm -f /usr/share/keyrings/jenkins.gpg && gpg --dearmor -o /usr/share/keyrings/jenkins.gpg"而不是使用shell模块,而是使用Ansible模块实现命令
https://devops.stackexchange.com/questions/17382
复制相似问题