gpt4 book ai didi

Ansible 获取 localhost USER 错误?

转载 作者:行者123 更新时间:2023-12-05 01:45:22 28 4
gpt4 key购买 nike

我正在尝试设置一个寄存器,即在 ansible 中执行任务之前检查文件是否存在

- name: check CRAN R script exists
stat:
path: "{{ playbook_dir }}/scripts/R/cran.R"
delegate_to: localhost
register: cran

tags: r_extras

这个任务是作为 sudo 运行的剧本的一部分

- name: installing common apt dependencies, pip python packages as well as java
hosts: base
remote_user: "{{ sudo_guy }}"
roles:
# need to have non previlidged installer guy
- make_sw_guy
# apt-get installation
- common

become: true

当我像这样运行 playbook 时

ansible-playbook -vvvv -i my_hosts all.yml --tags r_extras

我收到这个错误

fatal: [bio_training -> localhost]: FAILED! => {
"changed": false,
"failed": true,
"invocation": {
"module_name": "stat"
},
"module_stderr": "sudo: a password is required\n",
"module_stdout": "",
"msg": "MODULE FAILURE"
}

因为 Ansible 认为我是 root .. 这对我来说有点傻,但我可能没有捕获要点?

如何检查本地文件是否存在?和/或如何获取本地主机的 $USER 变量


我可以通过添加 become_user: $USER 来“解决”这个问题,但我不知道如何使它通用..

最佳答案

become为角色设置的指令对所有任务都有效,包括带有 delegate_to 的任务.

实际上,您尝试使用 sudo 在本地运行任务命令在前面,要求提供/etc/sudoers中设置的密码.

Ansible 在这里所做的并没有什么愚蠢的,它不会“认为”你是 root ,实际上如果它“认为”你是 root,它就不会要求输入密码。

您可以添加 become: false到任务。

关于Ansible 获取 localhost USER 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41817841/

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