Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Информация
Ansible — система управления конфигурациями. Написана на Python, использует декларативный язык разметки для описания конфигураций.
Используется для автоматизации настройки и массового развёртывания программного обеспечения.
Работает с Linux-узлами (SSH-соединение), также поддерживает Windows (WinRM соединение).



Информация
titleДанная статья применима к:
  • ОС ОН Орёл 2.12
    • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
    • Astra Linux Special Edition РУСБ.10015-17
    • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
    • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
    • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
    • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
    • Astra Linux Special Edition РУСБ.10015-16 исп. 1
    • Astra Linux Special Edition РУСБ.10015-16 исп. 2
    • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
    • Astra Linux Common Edition 2.12
    ОС СН Смоленск 1.6


    Установка пакета

    Пакет ansible доступен в репозитории ОС ОН Орёл Astra Linux Common Edition и в дистрибутиве ОС СН Смоленск.
    Astra Linux Special Edition. Установить пакет можно с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой

    Command
    apt install ansible

    Настройка пакета

    При установке пакета создаётся каталог /etc/ansible, содержащий два конфигурационных файла:

    • /etc/ansible/hosts - список хостов, с которыми работает ansible;
    • /etc/ansible/ansible.cfg - файл настроек ansible.

    Файл конфигурации /etc/ansible/hosts

    В файле /etc/ansible/hosts указывается список хостов, с которыми должен работать ansible.
    Файл снабжен достаточно подробными комментариями:

    Раскрыть

    # Это файл ansible 'hosts', установленный по умолчанию.
    #
    # Файл должен иметь имя /etc/ansible/hosts
    #
    # - Комментарии начинаются с симовла '#'
    # - Пустые строки игнорируются
    # - Группы хостов разделяются элементами [заголовок]
    # - Можно использовать имена хостов или IP-адреса
    # - Имя хоста или адрес могут входить в несколько групп

    # Пример 1: Хосты без групп должны быть перечислены до первого заголовка группы.

    #green.example.com
    #blue.example.com
    #192.168.100.1
    #192.168.100.10

    #[webservers]

    # Пример 2: После заголовка [webservers] начался список хостов, входящих в группу 'webservers'

    #alpha.example.org
    #beta.example.org
    #192.168.1.100
    #192.168.1.110

    # Применение шаблонов для определения нескольких хостов
    #www[001:006].example.com

    # здесь всё ещё группа 'webservers'

    #[dbservers]

    # Пример 3: После заголовка [dbservers] началась группа серверов баз данных 'dbservers' group

    #db01.intranet.mydomain.net
    #db02.intranet.mydomain.net
    #10.25.1.56
    #10.25.1.57

    # Еще пример диапазона имён, теперь без лидирующих нулей

    #db-[99:101]-node.example.com

    Дополнительно в файле /etc/ansible/hosts могут быть заданы значения переменных для определённых там хостов (сетевые адреса, псевдонимы и пр.).
    Более подробная информация содержится в документации

    Простейшие примеры настройки и использования

    Настройка подключений SSH

    Так как ansible подключается к хостам по протоколу ssh, на каждом хосте, с которым должен работать ansible, должен быть установлен сервер и запущен ssh.
    Кроме того, для безопасного подключения, должна быть настроена авторизация подключения ssh по открытому ключу. Для автоматизации подключений можно использовать ключи или пароли.

    Установить сервер ssh и настроить авторизацию аутентификацию по открытому ключу можно по этой инструкции.

    Для настройки аутентификации по паролю:

    1. Установить пакет sshpass:

      Command
      sudo apt install sshpass


    2. Отключить проверку ssh-ключа узла путем задания в файле /etc/ansible/ansible.cfg параметра:

      Блок кода
       host_key_checking = False


    3. Указать имя пользователя и пароль ssh. Это можно сделать следующими способами:

      1. При запуске Ansible из командной строки с помощью опции --user задать имя пользователя и с помощью опции --ask-pass указать необходимость запроса пароля:

        Command
        ansible -m ping all --user <имя_пользователя> --ask-pass


      2. При использовании inventory-файла с помощью опций ansible_user и ansible_ssh_pass задать имя пользователя и пароль в этом файле:

        Блок кода
        [all:vars]
        ansible_connection=ssh
        ansible_user=<имя_пользователя>
        ansible_ssh_pass=<пароль>



    Далее предполагаем, что в файле /etc/ansible/hosts указан список хостов, и, в примерах, будем работать со всеми указанными хостами применяя псевдоним all.

    Просто пинг. Ко всем хостам (all) применяется модуль ping (-m ping):

    Command

    ansible -m ping all

    Инвентаризация состояния хостов. Ко всем хостам (all) применяется модуль setup (-m setup):

    Command
    ansible -m setup all

    Инвентаризация выводит слишком много информации, поэтому отфильтруем только информацию об объёме памяти:

    Command

    ansible -m setup -a 'filter=ansible_memtotal_mb' all

    С помощью модуля shell проверим на всех хостах версию Astra Linux:

    Command
    ansible -m shell -a 'cat /etc/astra_version' all