당신은 '나단'로 제어 호스트에 로컬로 로그온 만에 사용자 ('ansible'더 나은로 다른 서버에 연결할 수
플레이 북을 실행하는 사용자의 이름을 사용할 수 있습니다 ansible.cfg)는 'ansible'로 연결하고 루트 또는 아파치로 하나 개의 작업을 수행 할 원격 호스트하려면
remote_user = ansible
- 루트 (아파치 나 다른 사용자에게 다음 sudo를)이 특정 작업 become_user
를 사용해야합니다 .
또한 원격 서버가 제어 호스트와 같은 사용자를 가질 수 없다는 점에 유의하십시오. (일반적인 방법으로)
'nathan'으로 로컬 로그온하고 'nathan'으로 '원격'서버에 연결하려는 경우, remote_user
과 become_user
을 모두 생략해야합니다. 현재 자격 증명으로 로그온하면됩니다!
예를 들어, nathan과 peter라는 두 개의 sysadminst가 있습니다. 따라서 제어 가능한 호스트와 수천 개의 클라이언트로 두 개의 워크 스테이션 (heidelberg-nathan 및 berlin-peter)이 있습니다. 네이선과 피터 모두 네이선이나 피터로서 원격 측에 연결하여 작업을 수행합니다. 그들 각각은 비 암호 sudoers로 관리 작업을 수행 할 수 있습니다.
추신 : 두 솔루션 (첫 번째 - Konstantin Suvorov의 대답, 두 번째 - knowhy의 대답)을 테스트 해 봅시다.
내 제어 호스트 berlin-ansible-01, 'nathan'으로 로그인했습니다. 원격 클라이언트는 호스트 berlin-client-01입니다. 나는 사용자로 '클라이언트'로 클라이언트 호스트에 로그인 할 것입니다.
내 책임.CFG는 다음과 같습니다
[defaults]
sudo_flags=-HE
hash_behaviour = merge
retry_files_enabled = false
log_path = ./main.log
ask_vault_pass=true
remote_user = ansible
플레이 북은 간단하다 :
- name: test
hosts: '{{ target }}'
tasks:
- debug: msg="step 1 = {{ lookup('env','USER') }}"
- setup:
- debug: msg="step 2 = {{ hostvars[target].ansible_env.USER }}"
#more than one client in taget needs iterate items:
# - debug: msg="step 2 = {{ hostvars[item].ansible_env.USER }}"
# with_items: "{{ hostvars }}"
이의 그것을 실행하자
[[email protected] stackoverflow]$ ansible-playbook -i hosts_staging test.yml --extra-vars "target=berlin-client-01"
Vault password:
PLAY [test] ********************************************************************
TASK [setup] *******************************************************************
ok: [berlin-client-01]
TASK [debug] *******************************************************************
ok: [berlin-client-01] => {
"msg": "step 1 = nathan"
}
TASK [setup] *******************************************************************
ok: [berlin-client-01]
TASK [debug] *******************************************************************
ok: [berlin-client-01] => {
"msg": "step 2 = ansible"
}
PLAY RECAP *********************************************************************
berlin-client-01 : ok=4 changed=0 unreachable=0 failed=0
사용'remote_user' 대신'원격지를 연결하는 become_user'. 'become_user'는 권한 에스컬레이션을위한 것입니다. –