Как аутентифицируется ansible машина [Мастер]? - PullRequest
0 голосов
/ 07 января 2020

Я учусь ansible, я экспериментировал с ansible для 4-5 серверов. Я копировал Publi c -Key на машины вручную.

  • Я хочу знать, что было бы, если бы нам пришлось сделать это для 1000 серверов?

Как мы должны делать то же самое, предоставляя другую команду с ключом S SH -publi c и попросить их добавить его на свои машины? Есть ли альтернативы? Как люди в отрасли справляются с этим?

TIA

Ответы [ 2 ]

1 голос
/ 07 января 2020

Нет, если вы управляете действительно большим количеством серверов, настройка ключа S SH на каждом сервере не является хорошим способом. Если мы говорим о сервере в облаке, который очень динамичен c по своей природе, ie, они запускаются / завершаются по мере необходимости.

Вы всегда можете настроить, какой «удаленный пользователь» использовать для соединений S SH на Ansible главной конфигурации. Кроме того, вы можете настроить пользователя в любом месте playbook или роли или передать в качестве параметра командной строки.

Для подключения к удаленному серверу, используя клавишу S SH, можно использовать те же методы.

Например: из командной строки:

ansible-playbook <playbook yml> -u <user name on remote host> --key-file <SSH key file name with path on master host>

ansible-playbook abc.yml -u "user1" --key-file "/u01/ansible_keys/user1_key.pem"

Вы также можете настроить эти ключи в файле инвентаризации, как показано ниже:

myHost ansible_ssh_private_key_file=~/.ssh/mykey1.pem
myOtherHost ansible_ssh_private_key_file=~/.ssh/mykey2.pem

Ссылка: Указание ключа s sh в ansible файле playbook

0 голосов
/ 08 января 2020

1.Если пароль всех машин одинаков.

ansible -i <inventory_file> -m copy -a "src=<public_key_filepath> dest=<target_filepath> -k"

Введите пароль для копирования кнопки Publi c на все машины и, используя ansible, как и ранее

2. Если большая часть всех машин пароль один и тот же. Вы можете сделать это в инвентаре.

[groupA]
machine01
machine02

[groupB]
machine03
machine04 ansible_ssh_pass=<different password from others>

[all:vars]
ansible_ssh_user=<ssh_useranme>
ansible_ssh_pass=<machine password>

Затем (Не нужно вводить пароль)

ansible -i <inventory_file> -m copy -a "src=<public_key_filepath> dest=<target_filepath>"

Затем удалите пароль в файле инвентаря, используя ansible, как и раньше

Для себя я предпочитаю метод 2, потому что у меня есть все машины root пароль и никто не может войти в систему с учетными записями root. Поэтому я пишу незашифрованный пароль в директории root. Но я думаю, что ваш метод Publi c может быть более безопасным.

...