Как обновить Ansible до последней версии

AnsibleBeginner
Практиковаться сейчас

Введение

Ansible — это мощный инструмент автоматизации с открытым исходным кодом, получивший широкое распространение в IT-индустрии. По мере развития Ansible важно поддерживать вашу установку в актуальном состоянии, чтобы воспользоваться новейшими функциями и улучшениями. Этот учебник проведет вас через процесс обновления Ansible до последней версии в Ubuntu, операционной системе, используемой в этой лабораторной среде.

Понимание Ansible и проверка текущей версии

Прежде чем обновить Ansible, полезно понять, что такое Ansible, и проверить, какая версия у вас установлена в данный момент.

Что такое Ansible?

Ansible — это платформа автоматизации с открытым исходным кодом, которая упрощает управление конфигурацией, развертывание приложений и автоматизацию задач. Она использует синтаксис YAML для создания плейбуков (playbooks), которые представляют собой документы, описывающие желаемое состояние ваших систем.

Некоторые ключевые преимущества Ansible включают в себя:

  • Безагентная архитектура (Agentless architecture): Нет необходимости устанавливать агенты на управляемые узлы
  • Простой синтаксис: Использует читаемые человеком YAML-файлы
  • Идемпотентное выполнение (Idempotent execution): Запуск одного и того же плейбука несколько раз дает один и тот же результат
  • Расширяемость: Поддерживает пользовательские модули и плагины

Проверка текущей версии Ansible

Давайте начнем с проверки, установлен ли Ansible, и, если да, какая у вас версия. Откройте терминал и выполните:

ansible --version

Вы должны увидеть вывод, похожий на этот:

ansible [core 2.12.0]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
  jinja version = 3.0.3
  libyaml = True

Первая строка отображает вашу текущую версию Ansible. Если вы не видите такой вывод, Ansible, возможно, еще не установлен, что нормально, потому что мы установим его на следующем шаге.

Понимание версионирования Ansible

Ansible следует семантическому версионированию с тремя числами: major.minor.patch

  • Основная версия (Major version): Значительные изменения, которые могут потребовать модификации ваших плейбуков
  • Второстепенная версия (Minor version): Новые функции без критических изменений
  • Версия исправления (Patch version): Исправления ошибок и незначительные улучшения

Теперь, когда мы понимаем, что такое Ansible, и проверили нашу текущую версию, мы готовы перейти к установке или обновлению Ansible на следующем шаге.

Установка или обновление Ansible в Ubuntu

На этом шаге мы установим или обновим Ansible в системе Ubuntu 22.04. Мы будем использовать официальный PPA (Personal Package Archive) Ansible, чтобы получить последнюю стабильную версию.

Добавление репозитория Ansible PPA

Сначала нам нужно убедиться, что у нас есть необходимые зависимости для добавления PPA:

sudo apt update
sudo apt install -y software-properties-common

Эта команда обновляет индекс пакетов и устанавливает пакет software-properties-common, который предоставляет команду add-apt-repository.

Теперь давайте добавим официальный репозиторий Ansible PPA:

sudo add-apt-repository --yes --update ppa:ansible/ansible

Вы увидите вывод, показывающий, что репозиторий был добавлен в вашу систему. Флаг --yes автоматически подтверждает добавление, а --update немедленно обновляет список пакетов.

Установка последней версии Ansible

С добавленным репозиторием мы теперь можем установить последнюю версию Ansible:

sudo apt install -y ansible

Флаг -y автоматически подтверждает установку без запроса подтверждения.

Эта команда либо установит Ansible, если он еще не установлен, либо обновит его до последней версии, доступной в PPA.

Проверка установки или обновления

После завершения установки давайте проверим, что Ansible установлен правильно, и проверим его версию:

ansible --version

Вывод должен показать последнюю версию Ansible, доступную в PPA. Если у вас ранее была установлена старая версия, теперь вы должны увидеть более новый номер версии.

Чтобы отслеживать наш прогресс для скрипта проверки, давайте создадим файл-маркер:

touch /tmp/ansible_version_checked
touch /tmp/ansible_installed

Теперь мы успешно установили или обновили Ansible в нашей системе Ubuntu. На следующем шаге мы рассмотрим, как использовать некоторые основные команды Ansible, чтобы убедиться, что наша установка работает правильно.

Проверка установки Ansible с помощью простого плейбука

Теперь, когда Ansible установлен, давайте убедимся, что он работает правильно, создав и запустив простой плейбук Ansible. Плейбуки — это YAML-файлы, которые описывают желаемое состояние ваших систем и задачи, которые Ansible должен выполнить для достижения этого состояния.

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

Сначала давайте создадим каталог для нашего проекта Ansible:

mkdir -p ~/project/ansible-test
cd ~/project/ansible-test

Теперь давайте создадим простой плейбук, используя встроенный редактор кода. В WebIDE щелкните значок «Explorer» на левой боковой панели, перейдите в каталог ansible-test, который мы только что создали, и создайте новый файл с именем test-playbook.yml.

Добавьте следующее содержимое в этот файл:

---
- name: Test Ansible Installation
  hosts: localhost
  connection: local
  gather_facts: no

  tasks:
    - name: Print a message
      debug:
        msg: "Ansible is installed and working correctly!"

    - name: Get Ansible version
      command: ansible --version
      register: ansible_version_output

    - name: Display Ansible version
      debug:
        msg: "{{ ansible_version_output.stdout_lines[0] }}"

    - name: Create a test file
      file:
        path: /tmp/ansible-test-file.txt
        state: touch
        mode: "0644"

Этот плейбук выполняет следующее:

  1. Нацелен на локальную машину (localhost)
  2. Выводит сообщение об успехе
  3. Получает и отображает версию Ansible
  4. Создает тестовый файл в /tmp/ansible-test-file.txt

Запуск плейбука

Теперь давайте запустим плейбук, чтобы убедиться, что Ansible работает правильно:

cd ~/project/ansible-test
ansible-playbook test-playbook.yml

Вы должны увидеть вывод, похожий на этот:

PLAY [Test Ansible Installation] ***********************************************

TASK [Print a message] *********************************************************
ok: [localhost] => {
    "msg": "Ansible is installed and working correctly!"
}

TASK [Get Ansible version] *****************************************************
changed: [localhost]

TASK [Display Ansible version] *************************************************
ok: [localhost] => {
    "msg": "ansible [core 2.12.0]"
}

TASK [Create a test file] ******************************************************
changed: [localhost]

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

Вывод показывает, что все задачи успешно завершены. changed=2 в сводке указывает на то, что две задачи внесли изменения в систему (получение версии и создание файла).

Проверка тестового файла

Давайте проверим, был ли создан тестовый файл:

ls -l /tmp/ansible-test-file.txt

Вы должны увидеть файл, перечисленный с указанными нами разрешениями:

-rw-r--r-- 1 labex labex 0 Aug 30 12:34 /tmp/ansible-test-file.txt

Давайте отметим этот шаг как завершенный для нашего скрипта проверки:

touch /tmp/ansible_playbook_tested

Поздравляем! Вы успешно установили последнюю версию Ansible и убедились, что она работает правильно, запустив простой плейбук. Это подтверждает, что ваша установка Ansible полностью функциональна и готова к использованию.

Понимание конфигурации и модулей Ansible

Теперь, когда Ansible установлен и работает, давайте рассмотрим его конфигурацию и концепцию модулей.

Конфигурация Ansible

Ansible использует файлы конфигурации для управления своим поведением. Основным файлом конфигурации является ansible.cfg, который может существовать в нескольких местах. Давайте рассмотрим файл конфигурации по умолчанию:

ls -la /etc/ansible/

Вы должны увидеть структуру каталогов Ansible по умолчанию:

total 20
drwxr-xr-x  2 root root 4096 Aug 30 12:00 .
drwxr-xr-x 85 root root 4096 Aug 30 12:00 ..
-rw-r--r--  1 root root 8669 Aug 30 12:00 ansible.cfg
-rw-r--r--  1 root root 1021 Aug 30 12:00 hosts

Давайте посмотрим на файл hosts, который является файлом инвентаризации по умолчанию:

cat /etc/ansible/hosts

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

Создание пользовательской конфигурации

Давайте создадим собственный файл конфигурации Ansible в нашем каталоге проекта. В WebIDE создайте новый файл с именем ansible.cfg в каталоге ~/project/ansible-test со следующим содержимым:

[defaults]
inventory = ./inventory
host_key_checking = False
stdout_callback = yaml

Теперь давайте создадим простой файл инвентаризации. В WebIDE создайте новый файл с именем inventory в каталоге ~/project/ansible-test со следующим содержимым:

[local]
localhost ansible_connection=local

Изучение модулей Ansible

Модули Ansible — это многократно используемые единицы кода, которые выполняют определенные задачи. Давайте рассмотрим некоторые из доступных модулей:

ansible-doc -l | wc -l

Эта команда выводит список всех доступных модулей и подсчитывает их. Вы должны увидеть большое количество, обычно более 1000 модулей.

Давайте посмотрим документацию для определенного модуля, например, модуля file, который мы использовали в нашем плейбуке:

ansible-doc file

Вы можете нажать q, чтобы выйти из средства просмотра документации.

Создание более сложного плейбука

Теперь давайте создадим более продвинутый плейбук, который демонстрирует еще несколько модулей Ansible. В WebIDE создайте новый файл с именем modules-demo.yml в каталоге ~/project/ansible-test со следующим содержимым:

---
- name: Ansible Modules Demo
  hosts: localhost
  connection: local
  gather_facts: yes

  tasks:
    - name: Display system information
      debug:
        msg: "System: {{ ansible_distribution }} {{ ansible_distribution_version }}"

    - name: Create a directory
      file:
        path: /tmp/ansible-demo
        state: directory
        mode: "0755"

    - name: Copy a file
      copy:
        content: "Created by Ansible modules demo playbook\n"
        dest: /tmp/ansible-demo/info.txt
        mode: "0644"

    - name: Gather information about a file
      stat:
        path: /tmp/ansible-demo/info.txt
      register: file_info

    - name: Show file information
      debug:
        msg: "File created at {{ file_info.stat.mtime }}"

Давайте запустим этот плейбук:

cd ~/project/ansible-test
ansible-playbook modules-demo.yml

Плейбук выполняет следующее:

  1. Отображает информацию о вашей системе
  2. Создает каталог в /tmp/ansible-demo
  3. Создает файл с пользовательским содержимым
  4. Собирает информацию о файле
  5. Отображает время изменения файла

Давайте отметим этот шаг как завершенный для нашего скрипта проверки:

touch /tmp/ansible_modules_explored

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

Резюме

В этой лабораторной работе вы успешно научились устанавливать и обновлять Ansible до последней версии в системе Ubuntu. Вы выполнили несколько ключевых задач:

  1. Поняли основы Ansible и его систему версионирования
  2. Установили или обновили Ansible, используя официальный репозиторий PPA
  3. Проверили свою установку, создав и запустив простой плейбук
  4. Изучили файлы конфигурации Ansible и управление инвентаризацией
  5. Узнали о модулях Ansible и их документации
  6. Создали и выполнили более сложные плейбуки для выполнения различных задач

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

Продолжая свой путь с Ansible, вы можете изучить более продвинутые темы, такие как роли, коллекции и Ansible AWX/Tower для корпоративного управления. Эти инструменты помогут вам создавать более сложные рабочие процессы автоматизации и управлять инфраструктурой в масштабе.