Я пытаюсь понять, как настроить учетные данные 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