Skip to main content

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
(/etc/ansible/hosts)

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