Dnl*_*Dnl 4 ansible ansible-inventory
使用个人用户帐户 (userx),我在所有指定的主机上运行 ansible playbook。在 ansible.cfg 中,要使用的远程用户(可以成为 root)是:
remote_user = ansible
Run Code Online (Sandbox Code Playgroud)
对于远程主机,这一切正常。它以用户 Ansible 的身份连接,并根据需要执行所有任务,同时更改/etc/ssh/sshd_config需要 root 权限的信息(如)。
但现在我也想在 Ansible 主机上执行剧本。我将以下内容放入我的库存文件中:
localhost ansible_connection=local
Run Code Online (Sandbox Code Playgroud)
现在确实在本地主机上执行。但是作为userx,这会导致它需要执行的某些任务“拒绝访问”。
这当然在某种程度上是预料之中的,因为 remote_user 讲述了一些关于remote 的信息,而不是本地用户。但是,我仍然希望剧本也能--become在本地以 root 身份执行任务(例如sudo su -)。似乎没有这样做。
运行剧本--become -vvv告诉我
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: userx
Run Code Online (Sandbox Code Playgroud)
并且似乎不会尝试使用 sudo 执行任务。如果不使用 sudo,任务就会失败。
我如何告诉 ansible 在本地连接上也使用 sudo / become ?
没有什么特别的要求。证明:
剧本:
---
- hosts: localhost
gather_facts: no
connection: local
tasks:
- command: whoami
register: whoami
- debug:
var: whoami.stdout
Run Code Online (Sandbox Code Playgroud)执行线:
ansible-playbook playbook.yml --become
Run Code Online (Sandbox Code Playgroud)结果:
PLAY [localhost] ***************************************************************************************************
TASK [command] *****************************************************************************************************
changed: [localhost]
TASK [debug] *******************************************************************************************************
ok: [localhost] => {
"changed": false,
"whoami.stdout": "root"
}
PLAY RECAP *********************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0
Run Code Online (Sandbox Code Playgroud)该ESTABLISH LOCAL CONNECTION FOR USER:消息将始终显示当前用户,因为它是用于“连接”的帐户。
稍后从模块 get(s) 调用的命令以提升的权限执行。
当然,您可以添加become: yes游戏级别或单个任务。
| 归档时间: |
|
| 查看次数: |
12817 次 |
| 最近记录: |