다음 ansible_user
은 플레이 북의 '첫 실행'과 다른 경우 수행하는 작업 입니다 (예 : root
사용자 만 있고 SSH 키를 사용하여 새 사용자를 설정하려는 경우).
ansible_pass
비밀번호 로그인을 사용하는 경우 와 마찬가지로 비밀번호를 저장 합니다 (Vault를 사용해야 함). 이것은 플레이 북의 '첫 실행'에 사용하는 사용자의 비밀번호 여야합니다.
ansible_user
서버에서 사용자를 올바르게 설정 한 경우 처음 실행 한 후 사용하려는 사용자의 사용자 이름으로 설정하십시오 .
ansible_user_first_run
플레이 북의 '처음 실행'에 사용할 사용자 의 변수를 설정합니다 ( 예 :) root
.
- 사용하여 올바른 SSH 키를 사용하여 서버에 연결을 시도하는 로컬 명령을 사용
ignore_errors
하고changed_when: False
- 실패하면
ansible_user
다음 값으로 업데이트 하십시오.ansible_user_first_run
코드는 다음과 같습니다.
---
- name: Check if connection is possible
command: ssh -o User={{ ansible_user }} -o ConnectTimeout=10 -o PreferredAuthentications=publickey -o PubkeyAuthentication=yes {{ inventory_hostname }} echo "Worked"
register: result
connection: local
ignore_errors: yes
changed_when: False
- name: If no connection, change user_name
connection: local
set_fact:
ansible_user: "{{ ansible_user_first_run }}"
when: result|failed
참고 : transport = ssh
일부 구성에서 paramiko가 예기치 않게 서버에 로그인하지 못할 수 있으므로 설정하는 것이 좋습니다 (예 : 서버가 비밀번호를 허용하지 않도록 설정되어 있고 먼저 키를 사용하여 비밀번호를 시도하는 경우 ... 이상합니다!) 또한 ssh 전송이 더 빠르므로 어쨌든 가치가 있습니다.
추가 참고 :이 방법을 사용 gather_facts: false
하는 경우 암호 테스트 단계에 도달하기 전에 설정 / 사실 수집 작업이 자동으로 실행되지 않도록 플레이 북 정의 파일에서 지정해야 합니다. 가능한 사실이 필요한 경우 setup
등의 장소에서 일반적으로 사용 가능한 데이터에 액세스하기 전에 역할 을 명시 적으로 호출해야합니다 ansible_devices
.이를 수행하는 한 가지 좋은 방법은 다음 을 확인 setup
하는 when
절 을 호출하는 것 입니다. 당신이 사용하는 사실은 당신의 역할에서 전화하기 전에 비어 있거나 아닙니다.