반응형
Ansible playbook에서 sudo 사용하기
문제 상황
Ansible로 host에 접속해야하는데
해당 host는 ssh접속 시 root계정은 막혀있음.
일반 계정으로 ssh 접속 가능.
하지만 Ansible로 확인해야하는 파일은
root 권한이 있어야 확인 가능함.
이를 해결하기 위해
Ansible 접속 시 일반 계정으로 접속해서
sudo 명령으로 진행해야함.
환경
[host]
SSH 접속 : root 차단, centos 계정으로 접속 가능
확인해야하는 파일 경로 : /root/rootTempFile.txt
문제가 되는 ansible playbook
[예제 playbook]
---
- hosts: all
tasks:
- name: execute the script
command: cat /root/rootTempFile.txt
register: temp
- name: print temp value
debug: msg="{{temp.stdout_lines}}"
|
[결과]
centos 계정은 root권한이 없어서
/root/rootTempFile.txt 파일 내용을 확인할 수 없음.
해결책 Ansible become 옵션 사용
Ansible에서 sudo는 2.9 버전 부터 제거됨.
그래서 sudo 대신 become을 사용해야함.
Ansible become
[ansible_become]
become은 특정 사용자로 전환할것인지 설정하는 옵션임.
become은 true, false, yes, no 설정 가능.
yes 설정 시 하위의 become_user, become_method 등 옵션이 적용됨.
[ansible_become_user]
사용자 지정 가능.
해당 옵션을 설정하지 않는 경우 root가 default임.
[ansible_become_method]
sudo , su , pbrun , pfexec , doas , dzdo , ksu 중 하나로 선택할 수 있음.
해당 옵션을 설정하지 않는 경우 sudo가 default임.
[become_flags]
실행할 명령어 지정.
[become_pass]
계정을 변경하는 경우 password가 필요함.
해당 옵션에 password를 넣어주면됨.
Ansible become 예제
[예제 playbook]
---
- hosts: all
tasks:
- name: execute the script
vars:
ansible_become: yes
ansible_become_method: sudo
ansible_become_pass: 'qwer1234'
command: cat /root/rootTempFile.txt
register: temp
- name: print temp value
debug: msg="{{temp.stdout_lines}}"
|
[결과]
centos 계정으로 접속해서
root 권한이 필요한 파일 내용을 확인할 수 있음.
참고
반응형
'클라우드 > Ansible' 카테고리의 다른 글
ansible-vault 리서치 (0) | 2022.05.05 |
---|---|
Ansible dynamic inventory란? (0) | 2022.05.05 |
Ansible, Hashicorp vault container 연동 (0) | 2022.04.07 |
Ansible "to use the 'ssh' connection type with passwords, you must install the sshpass program" (0) | 2022.02.23 |
Ansible directory, file 생성 후 file 내용 추가 (0) | 2022.02.10 |