저는 Linux 시스템에서 작업 중이며 Ansible-2.0
다음과 같이 ansible을 사용하여 원격 시스템의 DNS를 변경하고 싶습니다.
---
# tasks file for test
- name: Change dns
become: yes
become_user: admin
replace:
dest: /etc/resolv.conf
regexp: '192.168.1.24'
replace: '8.8.8.8'
산출:
$ ansible-playbook -i "mn," test.yml
TASK [test : Change dns] *******************************************************
fatal: [mn]: FAILED! => {"changed": false, "failed": true, "msg": "The destination directory (/etc) is not writable by the current user."}
PLAY RECAP *********************************************************************
mn : ok=1 changed=0 unreachable=0 failed=1
원격 컴퓨터에서 관리자는 sudo 사용자이고 여기서는 원격 컴퓨터의 설정을 변경하고 싶지 않습니다 sudo
. 명령줄을 사용하는 대신 작업(스크립트)을 사용하여 비밀번호를 전달할 수 있는 방법이 있습니까?
답변1
admin
대신 이 옵션을 구성하여 특정 작업을 수행할 사용자를 설정 remote_user
해야 합니다 . 즉, 스크립트는 다음과 같아야 합니다.become_user
become_user
su
---
- hosts: somehosts
remote_user: admin
roles:
....
#tasks file
---
# tasks file for test
- name: Change dns
become: yes
replace:
dest: /etc/resolv.conf
regexp: '192.168.1.24'
replace: '8.8.8.8'
이렇게 하면 admin 사용자가 SSH 세션을 설정하는 데 사용되지만 이 Change dns
작업 에서는 sudo
.
또한 admin
sudo에 비밀번호가 필요한 경우 다음과 같이 플레이북을 실행해야 합니다.
ansible-playbook -i mn test.yml -K
스위치는 -K
sudo 비밀번호를 묻는 메시지를 표시합니다 admin
.
답변2
대상 디렉토리를 변경하기 위한 sudo 액세스 권한이 있는 경우 아래 var를 사용할 수 있습니다.
ansible_user: 사용자 이름
ansible_ssh_pass: 비밀번호
되기: 예
메소드가 됨: sudo
ansible_become_password: sudo 비밀번호