SSH 연결에 기본 Ansible 사용자 이름 / 암호를 설정하는 방법은 무엇입니까? / 전체에이 구성이 있습니다. [master] 192.168.1.10 ansible_connection=ssh

Ansible을 사용하고 있으며 인벤토리 / 전체에이 구성이 있습니다.

[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[all:children]
master
slave

새 인스턴스마다 매개 변수를 모두 반복하고 싶지 않습니다. 한곳에서 구성 할 수 있습니까? 이 매개 변수가있는 파일이 있습니까?



답변

인벤토리 파일에 다음 섹션을 추가 할 수 있습니다.

[all:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_ssh_pass=vagrant

참고 : Before Ansible 2.0 ansible_useransible_ssh_user입니다.


답변

그룹 변수

Ansible의 Best Practices 문서에 지정된 플레이 북 레이아웃 을 사용하고 정의한 파일을 만들어 모든 호스트에 적용되는 변수를 설정할 수 있습니다 .group_vars/all

---
# file: group_vars/all
ansible_connection: ssh
ansible_ssh_user: vagrant
ansible_ssh_pass: vagrant

[편집] 그래도 당신이하려는 일에 혼란 스럽습니다. 인벤토리에서 Ansible 사용자 또는 비밀번호를 지정할 필요가 없습니다. Vagrant를 사용하는 경우 확실히 사용하지 않으며 명령 줄에서 Ansible을 호출하는 경우 사용자를 지정하고을 사용 --user=vagrant하여 비밀번호를 요청할 수 있습니다 --ask-pass.


답변

풀의 모든 서버에 ssh 키 설치를 사용하는 것이 좋습니다. 노드 당 ssh-copy-id를 실행하고 ssh 키를 사용하여 로그인 할 수 있도록 ssh 키를 어디에나 설치해야합니다. 플레이 북 / 인벤토리에 비밀번호를 저장하지 않는 것이 더 안전합니다.

이를 위해 ssh 키 페어를 생성 하고 이후에 모든 서버에 대해 ssh-copy-id를 실행해야합니다.


답변

인벤토리 호스트에 아래를 추가하십시오.

Ansible <2.0의 경우 :

[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant

의 경우 > = 2.0 Ansible :

[all:vars]
ansible_connection=ssh # actually default mode smart is OK
ansible_user=vagrant
ansible_pass=vagrant # or ansible_ssh_pass=vagrant


답변

면책 조항 : 나는 이것을 OSX에서만 테스트했습니다. 다양한 문서를 기반으로 다른 플랫폼에서 작동 할 것으로 기대합니다.

“프로젝트 디렉토리”는 Vagrant 프로젝트의 기본 디렉토리를 포함하는 디렉토리를 나타냅니다 Vagrantfile.

Vagrant가 자동 생성 한 Ansible Inventory 파일 :

Vagrant 는 기본 Ansible 연결 변수를 사용하여 인벤토리 파일만듭니다 . 에서 찾아보십시오 <project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory.

이 파일은 필요에 따라 Vagrant에 의해 재생성되므로 수동 편집 내용을 덮어 씁니다. 그러나 Vagrant 문서에 따르면 여러 시스템, 그룹 변수 등을 지정할 수 있으며이 Vagrantfile인벤토리 파일에 추가됩니다.

이 인벤토리 파일을 기본값으로 설정하십시오.

이 파일을 ansible프로젝트 디렉토리 (호스트의)에있을 때 명령에서 사용하는 기본값으로 만들려면 ansible.cfg다음과 같은 내용으로 프로젝트 디렉토리에 파일을 추가하고 필요에 따라 경로를 변경하십시오.

[defaults]
inventory = ./path/to/inventory

이 인벤토리 파일이 사용 중인지 확인하려면 해당 인벤토리 파일을 ansible에서보고 한 기본값으로 찾으십시오.

(프로젝트 디렉토리 내에서)


$ ansible | grep inventory
ERROR! Missing target hosts
-i INVENTORY, --inventory-file=INVENTORY
specify inventory host path (default=./.vagrant/provis
ioners/ansible/inventory/vagrant_ansible_inventory) or

호스트를 확인하려면


$ ansible all --list-hosts
hosts (2):
master
slave

다음 호스트에서 Ansible 사용 :

그런 다음 프로젝트 디렉토리에서에 ansible정의한 호스트에서 정상적으로 사용할 수 있어야합니다 Vagrantfile.

예를 들면 다음과 같습니다.

ansible slave -a 'hostname'


답변