내 플레이 가능한 플레이 북에 반복되는 테마 sudo: yes
는 특정 사용자를 위해 sudo 권한 ( ) 으로 명령을 실행해야한다는 것입니다. 이상적으로는 sudo를 사용하여 해당 사용자로 전환하고 명령을 정상적으로 실행하는 것이 좋습니다. 그런 다음 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가 필요하더라도 명령 또는 명령 세트를 다른 사용자로 실행할 수 있습니다.
답변
Ansible 1.9 이상
Ansible 사용 become
, become_user
및 become_method
지침은 권한 상승을 달성했다. 전체 플레이 또는 플레이 북에 적용하거나 포함 된 플레이 북에서 설정하거나 특정 작업에 대해 설정할 수 있습니다.
- name: checkout repo
git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
become: yes
become_user: some_user
become_with
권한 에스컬레이션 수행 방법을 지정하는 데 사용할 수 있습니다 ( 기본값은) sudo
.
지시문은 명령이 사용되는 블록의 범위에 적용됩니다 ( 예제 ).
몇 가지 추가 예는 호스트 및 사용자 를 참조 하고 자세한 문서는 (권한 에스컬레이션)이 됩니다.
작업 범위 become
및 become_user
지시문 외에도 Ansible 1.9는 명시 적 지시문이없는 경우 재생 기간 동안 이러한 값을 설정하는 몇 가지 새로운 변수 및 명령 행 옵션을 추가했습니다.
Ansible 2.0.2.0부터는 아래에 설명 된 이전 sudo
/ sudo_user
구문이 여전히 작동하지만 사용 중단 알림에 “이 기능은 향후 릴리스에서 제거 될 것입니다.”
이전 구문은 Ansible 1.9에서 더 이상 사용되지 않으며 제거 예정입니다.
- name: checkout repo
git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
sudo: yes
sudo_user: some_user
답변
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
답변
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를 참조 하십시오.
답변
해결책은 var ( http://docs.ansible.com/playbooks_roles.html ) include
문 을 사용하는 것이지만 작업 수준 대신 플레이 북에서 수행해야합니다.remote_user
답변
(있는 경우)에 become_method
설정된 기본 방법을 재정의하도록 지정할 수 있으며이 ansible.cfg
중 하나를 설정할 수 있습니다 sudo, su, pbrun, pfexec, doas, dzdo, ksu
.
- name: I am confused
command: 'whoami'
become: true
become_method: su
become_user: some_user
register: myidentity
- name: my secret identity
debug:
msg: '{{ myidentity.stdout }}'
표시해야합니다
TASK [my-task : my secret identity] ************************************************************
ok: [my_ansible_server] => {
"msg": "some_user"
}