Всем привет.
Но хватит теории. Волею случая мне довелось проверить все возможности соединения с помощью Ansible. В моем тесте участвовали:
export AWS_ACCESS_KEY_ID='etcxxx'
export AWS_SECRET_ACCESS_KEY='xxxetc'
export AWS_SESSION_TOKEN='xxxetc'
[defaults]
inventory = ./myhosts
ask_pass = False
host_key_checking=False
gathering = explicit
#remote_user = ubuntu
private_key_file = Mykey.pem
Вторым шагом правим наш файл инвентаризации Ansible-мастера.
Файл myhosts:
[Local]
localhost
[windows]
Homediver
[windows:vars]
ansible_user=adminka
ansible_password='xxххххх'
ansible_port=5986
ansible_connection=winrm
ansible_winrm_scheme=https
ansible_winrm_server_cert_validation=ignore
[windowsAWS]
ec2-54-197-120-211.compute-1.amazonaws.com
[windowsAWS:vars]
ansible_user=Administrator
ansible_password='2uGk57F=U&ylknWL;ET8l93p5'
ansible_port=5986
ansible_connection=winrm
ansible_winrm_scheme=https
ansible_winrm_server_cert_validation=ignore
[linux]
ec2-54-88-28-8.compute-1.amazonaws.com ansible_ssh_user=ubuntu
appliance ansible_ssh_user=adminq
где в секцию [windows] попал хост из домашней сети, а в секцию [windowsAWS] облачный Windows-сервер. Назначение параметров vars для них весьма схоже. В AWS для управления Windows-хостами через Ansible используется технология winrm https, так что не забудьте открыть соответствующие порты.
Что касается секции [linux] то вначале надо перенести файл ключа Mykey.pem c AWS на Ansible-мастер. И поменять ему права:
chmod 400 Mykey.pem
А после проверить ssh-соединение так:
ssh -i "Mykey.pem" ubuntu@ec2-54-88-28-8.compute-1.amazonaws.com
Linux-хосты AWS можно указывать двумя спобосами - так как выше традиционно с параметром ansible_ssh_user или просто как
ubuntu@ec2-54-88-28-8.compute-1.amazonaws.com
Для проверки всего используем простой пинг:
Случается так что для Linux надо принудительно вызвать запрос пароля:
Никакой оптимизации управляющих файлов Ansible не проводилось. Это еще впереди. Продолжение следует.
Вы знаете Ansible как одну из систем управления конфигурациями (оркестратор).
Особенность Ansible в наличии управляющего сервера (master), с которого отправляются команды или наборы инструкций (playbooks) на удаленные хосты посредством протокола SSH, или HTTPS.
Ansible решает следующие задачи:
- правильная и быстрая настройка серверов до нужной конфигурации;
- управление развертыванием облачных серверов (через API, с помощью Docker);
- установка и обновление приложений;
- координация звеньев инфраструктуры для выполнения развертываний;
- централизованный сбор логов.
Ansible не требует установки на удаленные хосты клиента, так как подключается к ним по протоколу SSH за исключением настройки службы WinRM где подключение идет по HTTPS.
Но хватит теории. Волею случая мне довелось проверить все возможности соединения с помощью Ansible. В моем тесте участвовали:
- Homediver, Desktop Windows 10
- ec2-54-197-120-211.compute-1.amazonaws.com, AWS MS Server 2019
- ec2-54-88-28-8.compute-1.amazonaws.com, AWS Ubuntu
- appliance, VirtualBox CentOS 8
- Ansible master, VirtualBox Debian 9
При работе с AWS ключи доступа для Windows-хостов находятся в файле credentials директории C:\Users\Username\.aws. У меня, к примеру их надо обновлять для каждой сессии. Само собой Ansible master находится на Linux-хосте поэтому он требует экспорта переменных (ключей) отдельно:
export AWS_SECRET_ACCESS_KEY='xxxetc'
export AWS_SESSION_TOKEN='xxxetc'
Далее пробуем объединить вся и все. И при этом все должно еще и работать.)
Первым смотрим файл конфигурации Ansible-мастера.
Файл ansible.cfg:[defaults]
inventory = ./myhosts
ask_pass = False
host_key_checking=False
gathering = explicit
#remote_user = ubuntu
private_key_file = Mykey.pem
Обращаю ваше внимание на закомментированную строку #remote_user = ubuntu которая говорит о том, что пользователем, т.е. тем под которым Ansible-мастер захочет подсоединиться к удаленной системе может быть и другой. Поэтому укажем его в другом месте.
Строка private_key_file = Mykey.pem явно указывает на файл ключа, который был получен при создании инстанса в AWS.
Вторым шагом правим наш файл инвентаризации Ansible-мастера.
Файл myhosts:
[Local]
localhost
Homediver
[windows:vars]
ansible_user=adminka
ansible_password='xxххххх'
ansible_port=5986
ansible_connection=winrm
ansible_winrm_scheme=https
ansible_winrm_server_cert_validation=ignore
[windowsAWS]
ec2-54-197-120-211.compute-1.amazonaws.com
[windowsAWS:vars]
ansible_user=Administrator
ansible_password='2uGk57F=U&ylknWL;ET8l93p5'
ansible_port=5986
ansible_connection=winrm
ansible_winrm_scheme=https
ansible_winrm_server_cert_validation=ignore
[linux]
ec2-54-88-28-8.compute-1.amazonaws.com ansible_ssh_user=ubuntu
appliance ansible_ssh_user=adminq
где в секцию [windows] попал хост из домашней сети, а в секцию [windowsAWS] облачный Windows-сервер. Назначение параметров vars для них весьма схоже. В AWS для управления Windows-хостами через Ansible используется технология winrm https, так что не забудьте открыть соответствующие порты.
Что касается секции [linux] то вначале надо перенести файл ключа Mykey.pem c AWS на Ansible-мастер. И поменять ему права:
chmod 400 Mykey.pem
А после проверить ssh-соединение так:
ssh -i "Mykey.pem" ubuntu@ec2-54-88-28-8.compute-1.amazonaws.com
Linux-хосты AWS можно указывать двумя спобосами - так как выше традиционно с параметром ansible_ssh_user или просто как
ubuntu@ec2-54-88-28-8.compute-1.amazonaws.com
Для проверки всего используем простой пинг:
Случается так что для Linux надо принудительно вызвать запрос пароля:
Никакой оптимизации управляющих файлов Ansible не проводилось. Это еще впереди. Продолжение следует.
No comments:
Post a Comment
А что вы думаете по этому поводу?