我以我的用户身份登录服务器(CentOS 7)并执行双
sudo
成为root
。此时不需要密码。
命令
sudo sudo su
我需要使用 Ansible 作为
root
用户在此类服务器上安装应用程序。
不幸的是,当我尝试遵循它时,它给出了:
"msg": "Timeout (12s) waiting for privilege escalation prompt: "
---
- name: Copy file
hosts: all
become: true
become_method: su
tasks:
- name: Copy file
copy:
src: abc.txt
dest: /tmp/
我尝试过其他版本,例如将
become_method
更改为sudo
等。但它们不起作用。
有什么建议可以帮忙吗?
如何在 Ansible 中使用双
?sudo
(1)
根据成为指令,人们可以简单地使用
become_flags
。
一个最小的示例手册
---
- hosts: localhost
become: true
become_method: sudo
become_flags: 'sudo'
gather_facts: false
tasks:
- shell:
cmd: pstree
register: result
- debug:
var: result
将产生
的输出ansible-playboo-+-ansible-playboo---sh---sudo---sudo---sh---python2---pstree
`-{ansible-playboo}
如果没有旗帜,它将是一个
sudo
ansible-playboo-+-ansible-playboo---sh---sudo---sh---python2---pstree
`-{ansible-playboo}
(2)
您可以创建自己的定制
become
插件。
类似问答
Ansible 无需密码即可进行
访问?root
(3)
正如 已经在评论中提到并确认的那样 ,这与 Ansible 本身无关,而是与 管理
sudo
访问有关。很简单,通过配置即可解决sudoers
。
假设用户
ansible_user
是本地组wheel
的成员,或者在某个文件中拥有自己的sudoers
条目
/etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL
ansible_user ALL=(ALL) NOPASSWD: ALL
或
/etc/sudoers.d/ansible_user
ansible_user ALL=(ALL) NOPASSWD: ALL
一个最小的示例手册
---
- hosts: localhost
become: false
gather_facts: false
tasks:
- shell:
cmd: who; id; sudo id
register: result
- debug:
var: result
通过
执行sshpass -p ${PASSWORD} ansible-playbook --user 'ansible_user' --ask-pass who.yml
将导致输出
ASK [debug] **********************************************************************************************
ok: [localhost] =>
result:
changed: true
cmd: who; id; sudo id
delta: '0:00:00.110247'
end: '2023-10-10 09:00:00.110247'
failed: false
msg: ''
rc: 0
start: '2023-10-10 09:00:00.000000'
stderr: ''
stderr_lines: []
stdout: |-
ansible_user pts/0 2023-10-10 09:00 (192.0.2.1)
uid=123456789(ansible_user) gid=1234560513(domain users) groups=1234560513(domain users) <omitted>
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
在所示示例中,用户
ansible_user
根本不存在于本地,由于系统已连接并加入域,所以 /etc/passwd
、/etc/group
或 /etc/shadow
中没有条目。
类似问答