Configurar credenciais de SSH por ambiente

9

Estou tentando descobrir como configurar as credenciais de SSH separadamente para um ambiente de produção e preparação com o Ansible. Entendo que você pode configurar os endereços IP e os nomes de host do servidor separadamente usando diferentes arquivos de inventário passando o argumento -i ou --inventory-file para o comando ansible-playbook . No entanto, não vejo essa opção para ansible.cfg . Atualmente, as credenciais vivem em /etc/ansible/ansible.cfg como:

[defaults]
private_key_file=/home/caleb/.ssh/staging_key.pem
remote_user=ubuntu
sudo_user=root
gathering=explicit

Como posso configurar várias credenciais de SSH, uma para produção e outra para preparação?

    
por cpburnz 22.04.2015 / 17:41

1 resposta

15

Parece que minha primeira resposta não foi totalmente correta. Embora, é claro, seja possível resolvê-lo em seu .ssh/config , como descrito abaixo, parece também possível com Ansibles Parâmetros de Inventário Comportamental .

Você deve (de acordo com a documentação) ser capaz de definir o arquivo-chave e o usuário em seu inventário, por host ou por grupo.

Definição por grupo:

[some_hosts]
host1.foo
host2.foo

[some_hosts:vars]
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem

Definição por host:

[some_hosts]
host1.foo     ansible_ssh_user=ubuntu          ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
host2.foo     ansible_ssh_user=another_user    ansible_ssh_private_key_file=/home/caleb/.ssh/production_key.pem

Mas você pode definir vários grupos de hosts já no seu .ssh/config e cada grupo pode ter suas configurações separadas em relação à chave e ao usuário.

Aqui está um exemplo rápido

#Example with a wildcard
Host *.foo.com
  user ubuntu
  IdentityFile /home/caleb/.ssh/staging_key.pem

#Example with multiple hostnames
Host hostname.one hostname.two hostname.three
  user other_user
  IdentityFile /home/caleb/.ssh/production_key.pem

Você também pode definir um padrão e substituí-lo posteriormente com configurações mais detalhadas.

Host *
  user defaut_username

Host somehost
  user special_username
    
por 22.04.2015 / 19:41

Tags