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_user
은 ansible_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'