Управление системными пакетами в Ansible

Ansible – это современный инструмент управления конфигурацией. Для связи и выполнения команд на управляемых серверах (нодах) он использует только SSH и Python – то есть вам не нужно устанавливать агентское программное обеспечение на удаленные ноды. В этой серии мануалов вы познакомитесь с основными функциями Ansible, которые можно использовать для написания сценариев автоматизации серверов. В конце серии вы найдете практический пример плейбука для автоматизации настройки удаленного веб-сервера Nginx и развертывания на нем статического HTML-сайта.

Примечание: Этот мануал является частью серии по работе с Ansible. Другие мануалы из этой серии вы найдете по тегу ansible-practice. Весь код можно найти в этом репозитории.

Автоматизация установки необходимых системных пакетов – очень частая задача в плейбуках Ansible, поскольку обычно стеки приложений включают в себя программное обеспечение из разных источников.

В операционных системах на основе Debian, таких как Ubuntu (а именно этот дистрибутив мы используем на удаленных нодах в этом руководстве) системными пакетами управляет модуль apt. Сейчас мы напишем плейбук, который обновит кеш apt, а затем установить редактор Vim на удаленных нодах.

Создайте новый файл по имени playbook-09.yml в каталоге ansible-practice:

nano ~/ansible-practice/playbook-09.yml

Затем добавьте в новый файл следующие строки:

---

- hosts: all

  become: yes

  tasks:

    - name: Update apt cache and make sure Vim is installed

      apt:

        name: vim

        update_cache: yes

Сохраните и закройте плейбук.

Обратите внимание, что мы включили директиву become в начало файла. она необходима, поскольку для установки пакетов требуются права администратора.

Удаление пакета выполняется аналогичным образом, единственное отличие заключается в том, что вам нужно определить другое состояние пакета – absent. Директива state по умолчанию имеет значение present, которое подтверждает, что пакет установлен в системе (независимо от версии). Если же пакет отсутствует, плейбук установит его. Чтобы установить последнюю версию пакета, вы можете использовать значение latest. В результате apt обновит запрошенный пакет, если в данный момент установлена не последняя версия.

Не забудьте указать параметр -K при запуске этого плейбука, поскольку для этого требуются привилегии sudo:

ansible-playbook -i inventory playbook-09.yml -u 8host -K

BECOME password:

PLAY [all] **********************************************************************************************

TASK [Gathering Facts] **********************************************************************************
ok: [203.0.113.10]

TASK [Update apt cache and make sure Vim is installed] **************************************************
ok: [203.0.113.10]

PLAY RECAP **********************************************************************************************
203.0.113.10                : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

При установке нескольких пакетов вы можете использовать цикл и задать ему массив имен тех пакетов, которые вы хотите установить.

Следующий плейбук поможет убедиться, что на удаленных нодах установлены последние версии пакетов vim, unzip и curl.

Создайте в каталоге ansible-practice на главной ноде Ansible новый файл playbook-10.yml:

nano ~/ansible-practice/playbook-10.yml

Добавьте в новый плейбук следующие строки:

---
- hosts: all
  become: yes
  tasks:
    - name: Update apt cache and make sure Vim, Curl and Unzip are installed
      apt:
        name: "{{ item }}"
        update_cache: yes
      loop:
        - vim
        - curl
        - unzip

Сохраните и закройте файл.

Затем запустите команду ansible-playbook с теми же аргументами подключения, что и в предыдущих примерах, и не забудьте включить флаг -K, поскольку для выполнения задач этого плейбука требуются права администратора:

ansible-playbook -i inventory playbook-09.yml -u 8host -K

Вы увидите следующий вывод, который сообщает, что одна и та же задача выполняется трижды с использованием разных значений, которые мы предоставили, а именно vim, curl и unzip:

BECOME password:

PLAY [all] ***************************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************************
ok: [203.0.113.10]

TASK [Update apt cache and make sure Vim, Curl and Unzip are installed] **************************************************************************
ok: [203.0.113.10] => (item=vim)
ok: [203.0.113.10] => (item=curl)
changed: [203.0.113.10] => (item=unzip)

PLAY RECAP ***************************************************************************************************************************************
203.0.113.10            : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Для получения дополнительной информации о том, как управлять системными пакетами (как удалять эти пакеты и как использовать расширенные параметры apt), рекомендуем обратиться к официальной документации.

Tags: ,

Добавить комментарий