Ansible

Материал из ALT Linux Wiki
Перейти к: навигация, поиск

Об Ansible[править]

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

Подготовка сервера[править]

1. Устанавливаем ansible:

apt-get install ansible

2. Прописываем управляемые компьютеры в группу (local). В файл /etc/ansible/hosts требуется добавить (а в новых версиях Ansible желательно указать пользователя, под которым будет запущены команды на управляемых узлах (root)):

[all:vars]
ansible_user=root

[local]
10.10.3.77

3. Так как управление будет осуществляться через ssh по ключам, создаём ключ SSH:

ssh-keygen -t ed25519 -f ~/.ssh/manager

Пароль ключа можно оставить пустым.

4. Добавить ключ на сервере:

eval `ssh-agent`
ssh-add ~/.ssh/manager

5. Создадим каталог для пакетов рецептов (playbooks):

mkdir -p /etc/ansible/playbooks

Подготовка клиента[править]

1. Устанавливаем необходимые модули:

apt-get install python-module-yaml python-module-jinja2 python-modules-json

2. Включаем и запускаем службу sshd:

chkconfig sshd on
service sshd start

3. Размещаем публичную часть созданного на сервере ключа пользователю root (в модуле Администратор или вручную добавить содержимое файла manager.pub в /etc/openssh/authorized_keys/root.

4. Проверим доступ по ключу с сервера:

ssh root@10.10.3.77

Проверка доступности[править]

Используем модуль «ping»:

# ansible -m ping local
10.10.3.77 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}

Полезные рецепты[править]

Рецепты применяются командой:

ansible-playbook <имя файла>

Прописывание репозитория[править]

Файл: /etc/ansible/playbooks/repo.yml

- hosts: local
  remote_user: root
  tasks: 
  - name: Remove all repositories
    shell: apt-repo rm all
  - name: Add official mirror
    shell: apt-repo add http://10.10.3.77/repo/p8
  - name: Add official mirror with arepo
    shell: apt-repo add 'rpm http://10.10.3.77/repo/p8 x86_64-i586 classic'
  - name: Add extra repository 
    shell: apt-repo add 'rpm http://10.10.3.77/repo/extra x86_64 extra'
Примечание: Используется модуль shell и программа apt-repo.


Установка пакета[править]

Файл: /etc/ansible/playbooks/install-ifcplugin.yml

- hosts: local
  remote_user: root
  tasks:
  - name: Update cache and install ifcplugin
    apt_rpm:
      name: ifcplugin
      state: present
      update_cache: yes
Примечание: Используется модуль apt_rpm.