Назад | Перейти на главную страницу

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

Я пытаюсь понять, как настроить учетные данные SSH отдельно для производственной и промежуточной среды с помощью Ansible. Я понимаю, что вы можете настроить IP-адреса и имена хостов серверов отдельно, используя разные файлы инвентаризации, передав -i или --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, одну для производства и одну для подготовки?

Похоже, мой первый ответ был не совсем правильным. Хотя, конечно, это можно решить в своем .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