12.3 Установка Ansible

Ansible — система управления конфигурациями, написанная на Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается. Поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH или WinRM соединению.

Установка Ansible

Для установки Ansible открываем терминал в режим суперпользователя командой

su

Прописываем команду для установки Ansible

yum install ansible

Подключение клиентских хостов

1) В файле /etc/ansible/hosts прописать все хосты, на которые будет распространяться конфигурация. Хосты можно разделить по группам, а так же, если у вас есть домен, то автоматически экспортировать список из домена. Можно прописывать как ip адреса так и имена хостов, если они резолвятся DNS ом в сети. Для теста пропишем 2 хоста.

[test]
10.10.1.111
10.10.1.74

2) Подключение к хостам осуществляется по протоколу ssh с помощью rsa ключей. Сгенерировать серверный ключ можно командой ниже. При её выполнении везде нажмите Enter.

ssh-keygen -C "$(whoami)@$(hostname)-$(date -I)"

3) Далее нужно распространить ключ на все подключенные хосты. Распространить ключи на хосты можно командой

ssh-copy-id root@server
* где root это пользователь от имени которого будут выполняться плейбуки. Server заменить на реальный хост. Пример root@10.10.1.74

Проверка подключения клиентских хостов

Пингуем удаленные хосты с помощью Ansible:

ansible test -m ping
test-1 | success >> {
    "changed": false, U
    "ping": "pong"
}

test-2 | success >> {
    "changed": false, 
    "ping": "pong"
}

Где test это группа хостов, указанная в файле hosts. В результате под каждым хостом должно быть написано «ping»: «pong».

Создание плейбука и его выполнение

Плейбуки являются сценариями, выполняемыми на удаленных хостах. Создаем каталог, для хранения наших playbooks, которые пишутся на языке YAML:

mkdir /etc/ansible/playbooks

Для примера, создадим плейбук, устанавливающий программы. В каталоге /etc/ansible/playbooks создаем файл install_programm.yml:

touch /etc/ansible/playbooks/install_programm.yml

Содержимое файла следующее:

---
- hosts: all
  tasks:
    - name: Install programm
      yum:
        name: "{{ packages }}"
      vars:
        packages:
        - unrar
        - p7zip

В данном примере для установки используется модуль yum. Применяется массив packages для установки. В него вписываются необходимые для установки программы.

Если хотите, можно проверить, на каких хостах будет происходить работа, командой:

ansible-playbook /etc/ansible/playbooks/install_programm.yml --list-host

Запустить только что созданный набор инструкций можно следующей командой:

ansible-playbook /etc/ansible/playbooks/install_programm.yml

Выполнение одиночной команды

С помощью Ansible возможно сразу на всех клиентах выполнить команду bash без создания плейбуков. Просмотрим информацию об использовании оперативной памяти на удаленных хостах:

ansible test -a "free -h"
test-1 | success | rc=0 >>
             total       used       free     shared    buffers     cached
Mem:          7.6G       6.4G       1.2G       471M        64M       1.2G
-/+ buffers/cache:       5.2G       2.4G
Swap:         4.0G       616M       3.4G

test-2 | success | rc=0 >>
             total       used       free     shared    buffers     cached
Mem:          3.9G       3.3G       573M       333M       4.8M       442M
-/+ buffers/cache:       2.9G       1.0G
Swap:         4.0G       1.7G       2.3G

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.

Print Friendly, PDF & Email