Estou usando o Ansible e tenho essa configuração no meu inventário / tudo:
[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
Não quero repetir todos os parâmetros para cada nova instância. Como posso configurá-los em um só lugar? Existe algum arquivo com esses parâmetros?
~/.ssh/config
Respostas:
Você pode adicionar a seguinte seção ao seu arquivo de inventário:
Nota: Antes de Ansible 2.0
ansible_user
foiansible_ssh_user
.fonte
[all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin
ansible_port
, portanto, você não precisa especificá-la explicitamente, a menos que seja diferente. Interessado se alguém souber aplicar variáveis a mais de um grupo por vez (mas não 'todos'), a separação por vírgula parece não funcionar.Variáveis de grupo
Você pode definir variáveis que se aplicam a todos os hosts usando o layout do manual especificado no documento de práticas recomendadas da Ansible e criando um
group_vars/all
arquivo onde você os define .[editar] Mas estou confuso com o que você está tentando fazer. Você não precisa especificar o usuário ou senha Ansible no inventário. Se você estiver usando o Vagrant, definitivamente não o fará e, se estiver ligando para o Ansible, na linha de comando, você pode especificar o usuário
--user=vagrant
e solicitar a senha--ask-pass
.fonte
group_vars/all/main.yml
ou simplesmentegroup_vars/all
?sshpass
-"you must install the sshpass program"
group_vars/all
.Eu acho que é melhor usar a instalação da chave ssh em todos os servidores através da atração. Você deve executar ssh-copy-id apenas por nó e instalar sua chave ssh em todos os lugares para que a ansible possa efetuar login usando sua chave ssh. Será mais seguro não salvar senhas no manual / inventário.
Para fazer isso, você deve gerar seu par de chaves ssh e executar o ssh-copy-id para todos os servidores posteriormente.
fonte
Adicione abaixo aos hosts de inventário.
Para Ansible <2.0:
Para Ansible> = 2.0 :
fonte
ansible_ssh_pass
, nãoansible_pass
.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 Ansible Inventory gerado automaticamente pelo Vagrant:
O Vagrant cria um arquivo de inventário com os vars de conexão Ansible padrão. Procure por ele
<project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
.Este arquivo será regenerado pelo Vagrant conforme necessário, para que as edições manuais sejam substituídas. No entanto, de acordo com os documentos do Vagrant, você pode especificar várias máquinas, grupos de vars, etc.,
Vagrantfile
e eles serão adicionados a esse arquivo de inventário.Configure Ansible como padrão para este arquivo de inventário:
Para tornar esse arquivo o padrão usado pelo
ansible
comando quando você estiver no diretório do projeto (no host), adicione umansible.cfg
arquivo no diretório do projeto com este conteúdo, alterando o caminho conforme necessário:Para confirmar que este arquivo de inventário está sendo usado, procure-o como o padrão relatado pelo ansible:
(de 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 hosts:
$ ansible all --list-hosts hosts (2): master slave
Usando Ansible com estes hosts:
No diretório do projeto, você poderá usar
ansible
normalmente os hosts que você definiuVagrantfile
.Por exemplo:
fonte