Ansible Master Setup
Первичная настройка Ansible Control Node (Master) — 2026
1.
Настройка глобального файла конфигурации Ansible (ansible.cfg)
Отключаем проверку ключей хостов и задаём базовые параметры:
sudo tee /etc/ansible/ansible.cfg > /dev/null <<EOF
[defaults]
host_key_checking = False
inventory = /etc/ansible/hosts
forks = 10
timeout = 30
EOF
Примечание: Вместо глобального файла можно использовать локальный ./ansible.cfg в каталоге проекта
или переменную окружения ANSIBLE_HOST_KEY_CHECKING=False.
2.
Настройка глобального файла Inventory
Linux-серверы (SSH, ключи)
sudo tee -a /etc/ansible/hosts > /dev/null <<EOF
[unix_servers]
Ubuntu1 ansible_host=192.168.1.10 ansible_user=ubuntu ansible_ssh_private_key_file=/home/ec2-user/.ssh/aws.note.kx_private.note_private.pem
CentOS1 ansible_host=192.168.1.11 ansible_user=centos ansible_ssh_private_key_file=/home/ec2-user/.ssh/aws.note.kx_private.note_private.pem
EOF
Windows-серверы (WinRM, HTTPS)
sudo tee -a /etc/ansible/hosts > /dev/null <<EOF
[win_servers]
WinSrv2012R2 ansible_host=192.168.1.20
WinSrv2016 ansible_host=192.168.1.21
[win_servers:vars]
ansible_user = Administrator
ansible_password = YourStrongPassword
ansible_port = 5986
ansible_connection = winrm
ansible_winrm_server_cert_validation = ignore
ansible_winrm_transport = ntlm # или kerberos для домена
EOF
Безопаснее: Используйте групповые переменные в отдельном файле group_vars/win_servers.yml
с шифрованием (ansible-vault), а не храните пароли открыто в hosts.
Установка пакета pywinrm
pip3 install "pywinrm>=0.3.0"
Настройка Ansible Clients
Требования к Linux клиенту:
- Учётная запись с правами на выполнение команд (желательно с
sudoбез пароля). - Открытый SSH-порт 22.
- SSH-ключ добавлен в
~/.ssh/authorized_keys.
Опционально — настройка sudo без пароля:
echo "ubuntu ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/ansibleТребования к Windows клиенту:
- Учётная запись администратора.
- PowerShell 3.0 или выше.
- WinRM-порт 5986 (HTTPS) открыт в брандмауэре.
Настройка WinRM на Windows-клиенте (запустить от имени администратора в PowerShell):клиенте:
# Автоматический способ (рекомендуется для тестов)
Invoke-Expression (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1')
Или вручную (для продакшена):
winrm quickconfig
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="false"}'
New-NetFirewallRule -DisplayName "WinRM HTTPS" -Direction Inbound -LocalPort 5986 -Protocol TCP -Action AllowНа управляющем узле Ansible (Linux) установите пакет pywinrm (обязательно):
pip3 install "pywinrm>=0.3.0"Это действие не заменяет настройку клиента, а является обязательным требованием для работы Ansible с Windows.
4.
Проверка подключения
Linux:
ansible unix_servers -m ping
Windows:
ansible win_servers -m win_ping
Ссылки на актуальную документацию (2026)
| Раздел | Ссылка |
|---|---|
| Конфигурация Ansible | https://docs.ansible.com/ansible/latest/installation_guide/intro_configuration.html |
| Инвентарь | https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html |
| Настройка Windows хостов | https://docs.ansible.com/ansible/latest/os_guide/windows_setup.html |
| WinRM (подключение) | https://docs.ansible.com/ansible/latest/os_guide/windows_winrm.html |
| Скрипт ConfigureRemotingForAnsible.ps1 | https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 |