Você pode adicionar a seguinte seção ao seu arquivo de inventário:
[all:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_ssh_pass=vagrant
Nota: Antes do Ansible 2.0 ansible_user
era ansible_ssh_user
.
Estou usando o Ansible e tenho essa configuração no meu inventário / all:
[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
Eu não quero repetir todos os parâmetros para cada nova instância. Como posso configurá-los em apenas um lugar? Existe algum arquivo com esses parâmetros?
Você pode definir variáveis que se aplicam a todos os hosts usando o layout de manual de reprodução especificado em Ansible's documentar e criar um arquivo group_vars/all
onde você defina-as .
---
# file: group_vars/all
ansible_connection: ssh
ansible_ssh_user: vagrant
ansible_ssh_pass: vagrant
[edit] Estou confuso no que você está tentando fazer. Você não precisa especificar o usuário Ansible ou a senha no inventário. Se você estiver usando o Vagrant, você definitivamente não o faz, e se você está chamando Ansible da linha de comando, você pode especificar o usuário com --user=vagrant
e pedir a senha com --ask-pass
.
Eu acho que é melhor usar a instalação da chave ssh em todos os servidores. Você deve executar ssh-copy-id apenas por nó e instalar sua chave ssh em todos os lugares para a capacidade do ansible de efetuar login usando sua chave ssh. Será mais seguro não salvar as senhas no livro / inventário.
Para fazer isso, você deve gerar seu par de chaves ssh e executar ssh-copy-id para todos os servidores depois.
Disclaimer: Eu só testei isso no OSX. Com base nos vários documentos, espero que funcione em outras plataformas.
"diretório do projeto" refere-se ao diretório base do projeto Vagrant - o diretório que contém Vagrantfile
.
Arquivo de Inventário Ansível gerado automaticamente pelo Vagrant:
O Vagrant cria um arquivo de inventário com as vars de conexão padrão Ansible. Procure em <project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
.
Este arquivo será regenerado pelo Vagrant conforme necessário, então as edições manuais serão sobrescritas. No entanto, de acordo com os documentos do Vagrant, você pode especificar várias máquinas, grupos vars, etc em Vagrantfile
e eles serão adicionados a este arquivo de inventário.
Configure o Ansible para usar como padrão este arquivo de inventário:
Para tornar esse arquivo o padrão usado pelo comando ansible
quando você está no diretório do projeto (no host), adicione um arquivo ansible.cfg
no diretório do projeto com esses conteúdos, alterando o caminho conforme necessário:
[defaults]
inventory = ./path/to/inventory
Para confirmar que este arquivo de inventário está sendo usado, procure-o como o padrão relatado por ansible:
(dentro do diretório do projeto)
$ 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
Para confirmar seus anfitriões:
$ ansible all --list-hosts
hosts (2):
master
slave
Usando o Ansible com esses hosts:
De dentro do diretório do projeto, você deve poder usar ansible
como normal com os hosts que você definiu em Vagrantfile
.
Por exemplo:
ansible slave -a 'hostname'
Adicione abaixo aos hosts do inventário.
Para Ansible < 2.0:
[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
Para Ansible > = 2.0 :
[all:vars]
ansible_connection=ssh # actually default mode smart is OK
ansible_user=vagrant
ansible_pass=vagrant