Ansible : sudo 권한이있는 사용자 생성
Ubuntu 14.04 서버를 인수했습니다. "deployer"(capistrano와 함께 사용)라는 사용자가 있으므로 sudo 권한이 필요합니다. 이 설정으로 서버에 로그인하여 다음과 같은 작업을 수행 할 수 있습니다.
workstation> ssh deployer@myserver
myserver> sudo apt-get install git
myserver> exit
workstation>
Ansible (버전 2.0.2.0 및 python 2.7.3)을 사용하여 "deployer"라는 사용자를 만들고 해당 ID로 서버에 로그인 한 다음 "apt"와 같은 sudo-ish 작업을 수행하는 방법을 알아 내려고합니다. -get install ". 내 플레이 북은 다음과 같습니다.
---
- hosts: example
become: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes
cache_valid_time: 3600
- group: name=sudo state=present
- name: Add deployer user and add it to sudo
user: name=deployer
state=present
createhome=yes
become: yes
become_method: "sudo"
- name: Set up authorized keys for the deployer user
authorized_key: user=deployer key="{{item}}"
with_file:
- /home/jaygodse/.ssh/id_rsa.pub
이 플레이 북을 실행 한 후 "배포자"(예 : ssh deployer @ myserver)로 시스템에 ssh 할 수 있지만 sudo 명령을 실행하면 항상 내 sudo 암호를 묻습니다.
"배포자"사용자가 궁극적으로 visudo 사용자 파일로가는 길을 찾아야한다는 것을 이해합니다.하지만 어떤 마법의 Ansible 주문을 호출해야하는지 알 수 없어서 배포자로서 머신에 ssh 한 다음 sudo 명령 (예 : sudo)을 실행할 수 있습니다. apt-get install git ") sudo 암호를 입력하라는 메시지가 표시되지 않습니다.
높고 낮게 검색했는데 암호없이 사용자 "배포자"를 sudo 그룹에 넣는 Ansible 플레이 북 조각을 찾을 수없는 것 같습니다. 어떻게하나요?
때로는 무엇을 물어봐야할지 알고 있습니다. DevOps 작업을 수행 한 개발자이므로 몰랐습니다.
분명히 '비밀번호없는'또는 NOPASSWD 로그인은 / etc / sudoers 파일에 넣어야하는 것입니다.
내 질문에 대한 답은 Ansible : sudoers 목록 유지를위한 모범 사례입니다 .
Ansible 플레이 북 코드 조각은 내 문제에서 다음과 같이 보입니다.
- name: Make sure we have a 'wheel' group
group:
name: wheel
state: present
- name: Allow 'wheel' group to have passwordless sudo
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%wheel'
line: '%wheel ALL=(ALL) NOPASSWD: ALL'
validate: 'visudo -cf %s'
- name: Add sudoers users to wheel group
user: name=deployer groups=wheel append=yes state=present createhome=yes
- name: Set up authorized keys for the deployer user
authorized_key: user=deployer key="{{item}}"
with_file:
- /home/railsdev/.ssh/id_rsa.pub
그리고 가장 중요한 부분은 솔루션이 멱 등성이라는 것입니다. 라인을 추가하지 않습니다
%wheel ALL=(ALL) NOPASSWD: ALL
플레이 북이 다음 번에 실행될 때 / etc / sudoers에. 그리고 예 ... 저는 "배포자"로 서버에 ssh하고 암호를 제공하지 않고도 sudo 명령을 실행할 수있었습니다.
sudo 권한이있는 사용자를 만드는 것은 사용자를에 넣거나 사용자를 /etc/sudoers
에 지정된 그룹의 구성원으로 만드는 것입니다 /etc/sudoers
. 그리고 그것은 암호 적은 추가로 지정할 수 있도록 NOPASSWD
에서 /etc/sudoers
.
예 /etc/sudoers
:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
And instead of fiddling with /etc/sudoers
file, we can create a new file in /etc/sudoers.d/
directory since this directory is included by /etc/sudoers
by default, which avoids the possibility of breaking existing sudoers file, and also eliminates the dependency on the content inside of /etc/sudoers
.
To achieve above in Ansible, refer to the following:
- name: sudo without password for wheel group
copy:
content: '%wheel ALL=(ALL:ALL) NOPASSWD:ALL'
dest: /etc/sudoers.d/wheel_nopasswd
mode: 0440
You may replace %wheel
with other group names like %sudoers
or other user names like deployer
.
Using visudo, press Shift+G
And append to end of file:
deployer ALL=(ALL) NOPASSWD: ALL
then write and quit (:wq
)
참고URL : https://stackoverflow.com/questions/37333305/ansible-create-a-user-with-sudo-privileges
'code' 카테고리의 다른 글
Android Studio에서 프로젝트를 bitbucket 저장소로 가져 오는 방법은 무엇입니까? (0) | 2020.12.01 |
---|---|
BroadcastReceiver 대 WakefulBroadcastReceiver (0) | 2020.12.01 |
비동기 코드에서 비동기 메서드 호출 (0) | 2020.12.01 |
HTML에서 목록에 대한 캡션, 제목 또는 레이블을 의미 론적으로 제공하는 방법 (0) | 2020.12.01 |
삼성 갤럭시 탭 에뮬레이트 (0) | 2020.12.01 |