我正在尝试设置一个寄存器,即在 ansible 中执行任务之前检查文件是否存在
- name: check CRAN R script exists
stat:
path: "{{ playbook_dir }}/scripts/R/cran.R"
delegate_to: localhost
register: cran
tags: r_extras
Run Code Online (Sandbox Code Playgroud)
此任务是剧本的一部分,作为 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
Run Code Online (Sandbox Code Playgroud)
当我像这样运行剧本时
ansible-playbook -vvvv -i my_hosts all.yml --tags r_extras
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
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"
}
Run Code Online (Sandbox Code Playgroud)
因为 Ansible 认为我root......这对我来说似乎有点愚蠢,但我可能没有抓住重点?
如何检查本地文件是否存在?和/或如何获取$USER本地主机的变量
我可以通过添加来“解决”这个问题,become_user: $USER但我不知道如何使这个通用。
become为角色设置的指令对所有任务都有效,包括带有delegate_to.
实际上,您尝试使用前面的命令在本地运行任务sudo,并且需要提供在 中设置的密码/etc/sudoers。
Ansible 在这里所做的事情并不愚蠢,它不会“认为”你是rootroot,实际上,如果它“认为”你是 root,它就不会要求输入密码。
您可以添加become: false到任务中。
| 归档时间: |
|
| 查看次数: |
4424 次 |
| 最近记录: |