Настройте учетные данные SSH для среды

10

Я пытаюсь выяснить, как настроить учетные данные SSH отдельно для рабочей и промежуточной среды с помощью Ansible. Я понимаю, что вы можете настроить IP-адреса сервера и имена хостов отдельно, используя различные файлы инвентаризации, передав аргумент -ior --inventory-fileв ansible-playbookкоманду. Однако я не вижу такой возможности для ansible.cfg. В настоящее время учетные данные живут /etc/ansible/ansible.cfgкак:

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

Как я могу настроить несколько учетных данных SSH, один для производства и один для подготовки?

user369450
источник
что меняется между вашими средами? Просто файл ключа или также remote_user / sudo_user?
tedder42
@ tedder42 Закрытый ключ SSH и удаленный пользователь.
user369450
Почему бы вам не рассказать об этом в вашем .ssh / config?
Удондан
@udondan Есть ли способ указать один ключ один раз для нескольких хостов в .ssh/config?
user369450
Да, вы можете сделать это. Вы можете создать несколько групп с явными именами хостов или шаблонами. Позвольте мне опубликовать пример в ответ.
Удондан

Ответы:

16

Похоже, мой первый ответ был не совсем верным. Хотя, конечно, это можно решить, .ssh/configкак описано ниже, это также возможно с помощью параметров инвентаризации поведения Ansibles .

Вы должны (в соответствии с документами) иметь возможность определить ключевой файл и пользователя в вашем инвентаре, либо для хоста, либо для группы.

Определение для группы:

[some_hosts]
host1.foo
host2.foo

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

Определение на хост:

[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

Но вы можете определить несколько групп хостов уже в вашей, .ssh/configи каждая группа может иметь свои отдельные настройки, касающиеся ключа и пользователя.

Вот быстрый пример

#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

Также вы можете определить значение по умолчанию и переопределить его позже с более подробными настройками.

Host *
  user defaut_username

Host somehost
  user special_username
udondan
источник