Введение
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"
Этот плейбук выполняет следующее:
- Нацелен на локальную машину (
localhost) - Выводит сообщение об успехе
- Получает и отображает версию Ansible
- Создает тестовый файл в
/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
Плейбук выполняет следующее:
- Отображает информацию о вашей системе
- Создает каталог в
/tmp/ansible-demo - Создает файл с пользовательским содержимым
- Собирает информацию о файле
- Отображает время изменения файла
Давайте отметим этот шаг как завершенный для нашего скрипта проверки:
touch /tmp/ansible_modules_explored
Теперь вы узнали о конфигурации Ansible, файлах инвентаризации и изучили различные модули. Это важные компоненты для эффективной работы с Ansible.
Резюме
В этой лабораторной работе вы успешно научились устанавливать и обновлять Ansible до последней версии в системе Ubuntu. Вы выполнили несколько ключевых задач:
- Поняли основы Ansible и его систему версионирования
- Установили или обновили Ansible, используя официальный репозиторий PPA
- Проверили свою установку, создав и запустив простой плейбук
- Изучили файлы конфигурации Ansible и управление инвентаризацией
- Узнали о модулях Ansible и их документации
- Создали и выполнили более сложные плейбуки для выполнения различных задач
Эти навыки обеспечивают прочную основу для работы с Ansible в проектах автоматизации. Поддерживая вашу установку Ansible в актуальном состоянии, вы можете воспользоваться новейшими функциями, исправлениями ошибок и обновлениями безопасности.
Продолжая свой путь с Ansible, вы можете изучить более продвинутые темы, такие как роли, коллекции и Ansible AWX/Tower для корпоративного управления. Эти инструменты помогут вам создавать более сложные рабочие процессы автоматизации и управлять инфраструктурой в масштабе.


