Estou usando o Ansible e tenho essa configuração no meu inventário/todos:
[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?
Você pode adicionar a seguinte seção ao seu arquivo de inventário:
Nota: Antes do Ansible 2.0
ansible_user
eraansible_ssh_user
.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 do Ansible e criando um
group_vars/all
arquivo onde você as define .[editar] Estou confuso com o que você está tentando fazer. Você não precisa especificar o usuário ou a senha do Ansible no inventário. Se você estiver usando o Vagrant, definitivamente não, e se estiver chamando o Ansible pela linha de comando, poderá 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 no pull. Você deve executar ssh-copy-id apenas por nó e instalar sua chave ssh em todos os lugares para que o ansible possa fazer login usando sua chave ssh. Será mais seguro não salvar senhas no playbook/inventário.
Para fazer isso, você deve gerar seu par de chaves ssh e executar ssh-copy-id para todos os servidores posteriormente.
Adicione abaixo aos hosts de inventário.
Para Ansible <2.0:
Para Ansible >=2.0 :
Isenção de responsabilidade: 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 os arquivos
Vagrantfile
.Arquivo de inventário do Ansible gerado automaticamente pelo Vagrant:
O Vagrant cria um arquivo de inventário com as vars de conexão padrão do Ansible. Procure-o 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 substituídas. No entanto, de acordo com os documentos do Vagrant, você pode especificar várias máquinas, vars de grupo, etc.
Vagrantfile
e elas serão adicionadas a este arquivo de inventário.Configure o Ansible como padrão para este arquivo de inventário:
Para tornar este arquivo o padrão usado pelo
ansible
comando quando estiver no diretório do projeto (no host), adicione umansible.cfg
arquivo no diretório do seu 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 informado 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 o Ansible com estes hosts:
De dentro do diretório do projeto, você poderá usar
ansible
normalmente com os hosts definidos noVagrantfile
.Por exemplo:
Você tem que definir as variáveis certas. Você precisa usar:
Você precisa ler com muita atenção, pois
ansible_ssh_password
eansible_ssh_user
não funciona na versão: ansible 2.9.6Abaixo estão as etapas de como definir o nome de usuário/senha padrão do Ansible para conexão SSH
a configuração do ansible.cfs será
O arquivo de inventário será
resultado de sucesso de execução ansible