在我的ansible攻略中反复出现的一个主题是,我经常必须使用sudo特权(sudo: yes
)执行命令,因为我希望为某个用户执行该命令。理想情况下,我更愿意使用sudo切换到该用户并正常执行命令。因为这样我就不必像往常一样清理post命令了,比如chowning目录。以下是我的一本攻略中的一段:
- name: checkout repo
git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
sudo: yes
- name: change perms
file: dest={{ dst }} state=directory mode=0755 owner=some_user
sudo: yes
理想情况下,我可以以不同用户的身份运行命令或命令集,即使它需要sudo才能切换到该用户。
发布于 2017-06-03 19:32:18
在Ansible 2.x中,您可以对任务组使用block
:
- block:
- name: checkout repo
git:
repo: https://github.com/some/repo.git
version: master
dest: "{{ dst }}"
- name: change perms
file:
dest: "{{ dst }}"
state: directory
mode: 0755
owner: some_user
become: yes
become_user: some user
发布于 2014-07-17 23:51:19
在Ansible >1.4中,您实际上可以在任务级别指定一个远程用户,这应该允许您以该用户身份登录并执行该命令,而无需求助于sudo。如果您不能以该用户身份登录,那么sudo_user解决方案也可以使用。
---
- hosts: webservers
remote_user: root
tasks:
- name: test connection
ping:
remote_user: yourname
请参阅http://docs.ansible.com/playbooks_intro.html#hosts-and-users
发布于 2014-02-04 16:42:41
一种解决方案是使用带有remote_user
变量的include
语句(在那里描述:http://docs.ansible.com/playbooks_roles.html),但它必须在剧本级别而不是任务级别完成。
https://stackoverflow.com/questions/21344777
复制相似问题