Como definir o nome de usuário / senha Ansible padrão para conexão SSH?

38

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?

    
por Robert 16.09.2014 / 21:11

5 respostas

45

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 .

    
por 11.12.2015 / 11:12
16

Variáveis do grupo

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 .

    
por 16.09.2014 / 23:31
3

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.

    
por 18.09.2014 / 09:33
2

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'
    
por 14.12.2016 / 21:52
1

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
    
por 03.11.2017 / 08:23