Ansible для начинающих linux

Содержание
  1. Автоматизируйте все с помощью Ansible: часть первая
  2. Обзор
  3. Что такое Ansible?
  4. Начало работы с Ansible
  5. Установка
  6. Файл конфигурации Ansible
  7. Настройте Кластер Vagrant
  8. Инвентарь
  9. Модули
  10. Специальные команды
  11. Playbooks
  12. Пример Playbook
  13. Запуск Playbooks
  14. Стратегии запуска
  15. Блоки
  16. Хранилище
  17. Заключение
  18. Что такое Ansible и как его использовать
  19. Что такое Ansible и как его использовать
  20. Ключевые особенности программы Ansible
  21. Установка и запуск
  22. Структура Ansible
  23. Модули
  24. Плагины
  25. Инвентаризация хостов
  26. Playbooks
  27. group_vars
  28. Обработчики
  29. Демо «Реальное приложение»
  30. Последовательность действий для создания и запуска Laravel APP:
  31. Создание экземпляра Ubuntu Lightsail
  32. Установка зависимостей Ansible на нашем VPS
  33. Добавление SSH-ключей в Git
  34. Сборка хостов и ansible.cfg
  35. Определение роли в Ansible
  36. Определение обработчика
  37. Установка модулей PHP
  38. Установка Nginx
  39. Добавление default-конфигурации Nginx
  40. vars.yml
  41. Как использовать Ansible-Vault
  42. Создание базы данных MySql, имени пользователя и пароля
  43. Клонирование кодовой базы
  44. Генерирование .env
  45. Создание playbook
  46. Запуск playbook
  47. Полная структура проекта
  48. Дополнительные материалы для начинающих изучать Ansible

Автоматизируйте все с помощью Ansible: часть первая

Обзор

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

Что такое Ansible?

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

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

Одной из уникальных особенностей Ansible является то, что он не устанавливает никакого программного обеспечения на управляемые машины. Управляет машинами удаленно через SSH. Чтобы управлять удаленным компьютером, вам просто нужно убедиться, что ваш открытый ключ SSH находится в файле авторизованных ключах этого компьютера.

Начало работы с Ansible

Ansible работает на управляющей машине и может управлять серверами под управлением любой операционной системы, но управляющая машина не может быть машиной Windows на данный момент. Я буду использовать Mac OS X в этом руководстве в качестве контрольной машины.

Установка

Ansible требует Python 2.6 или 2.7. Чтобы установить его, введите:

pip install ansible

В Mac OS X рекомендуется увеличить количество дескрипторов файлов:

sudo launchctl limit maxfiles 1024 unlimited

Если вы видите ошибку типа «Слишком много открытых файлов», вам, вероятно, нужно это сделать.

Чтобы проверить правильность установки Ansible, введите ansible —version . Вы увидите следующее:

Конечно, номер версии может быть другим.

Файл конфигурации Ansible

Ansible имеет файл конфигурации, который позволяет вам управлять многими опциями. Порядок поиска:

  • ANSIBLE_CONFIG (переменная окружения)
  • ansible.cfg (в текущем каталоге)
  • .ansible.cfg (в домашнем каталоге)
  • /etc/ansible/ansible.cfg

Вы также можете переопределить определенные параметры, используя отдельные переменные среды, которые имеют приоритет над файлом конфигурации.

Проверьте документацию Ansible, чтобы узнать обо всех вариантах.

Настройте Кластер Vagrant

Чтобы по-настоящему понять всю мощь Ansible, вам нужно несколько серверов для управления. В этом руководстве я буду использовать кластер Vagrant из 3 виртуальных машин, но для Ansible это всего лишь несколько хостов, которыми он должен управлять. Чтобы узнать больше о Vagrant, ознакомьтесь с разделом Введение в Vagrant.

Сначала установите VirtualBox и Vagrant. Затем поместите следующее в файл с именем Vagrantfile в рабочем каталоге.

Затем наберите vagrant up . Vagrant создаст для вас три виртуальные машины, доступные как larry, curly и moe. Чтобы проверить, введите vagrant status . Вы должны увидеть:

Читайте также:  Принтер совместимый с linux

Чтобы убедиться, что вы можете использовать SSH на хостах кластера, введите: vagrant ss >>

Теперь вы можете использовать SSH на любом из ваших виртуальных серверов, используя их имя хоста. Например: ssh curly . Это позволит Ansible подключаться к хостам вашего кластера через SSH без каких-либо проблем с именами пользователей, паролями или ключами.

Инвентарь

Теперь, когда у нас есть кластер, нам нужно рассказать об этом Ansible. Это делается с помощью инвентарного файла. Файл инвентаризации — это список имен хостов, организованных в группы с использованием формата файла INI. Поместите следующее в файл с именем ‘hosts’ в вашей рабочей директории.

Я поместил «larry» в группу «funny», а остальные хосты в группу «funnier». Эта организация позволит нам выполнять действия в отношении этих групп. Вы также можете выполнять действия на отдельных хостах и на всех хостах.

Модули

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

Специальные команды

Пришло время взяться за дело. Простейший способ использования Ansible — запуск специальных команд. Специальные команды используют модули. Формат специальной команды:

Например, чтобы увидеть, все ли хосты в вашем инвентаре работают, вы можете использовать модуль ping (без аргументов):

Ansible имеет много модулей для всех распространенных задач системного администрирования, таких как управление файлами, управление пользователями и пакетами, а также множество необычных задач. Но если вы не можете найти то, что вам нужно, или просто чувствуете себя более комфортно с простыми командами оболочки, вы можете использовать модуль оболочки напрямую, включая каналы. Следующая команда извлекает внутренние и внешние IP-адреса всех хостов:

Playbooks

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

Пример Playbook

Давайте посмотрим на то, как выглядит типичный playbook, прежде чем мы перейдем к деталям.

В playbook есть раздел hosts, в котором вы указываете хосты из файла инвентаризации. В этом случае название группы «funnier». Затем есть раздел задач с двумя задачами, которые устанавливают Nginx и Python 3. Наконец, есть раздел обработчиков, где Nginx запускается после его установки.

Запуск Playbooks

Вы запускаете playbook с помощью команды ansible-playbook . Вам все еще нужно предоставить файл инвентаря и книгу воспроизведения, которую вы хотите запустить. Сохраните playbook в файл с именем «playbook.yml» в вашем рабочем каталоге. Давайте попробуем:

О нет. Что случилось? Ansible выдает приличное сообщение об ошибке здесь: «Не удалось заблокировать apt для исключительной операции». Многие playbooks требуют привилегий sudo. Этот playbook не является исключением. Чтобы запустить playbook с правами sudo, просто добавьте флаг —sudo :

Ansible является идемпотентом, что означает, что если что-то уже находится в желаемом состоянии, то Ansible оставит это в покое. В выводе ansible-playbook вы можете увидеть, какие задачи были успешными или неудачными, а какие были изменены.

Давайте снова запустим ту же playbook. Ничто не должно быть изменено:

Стратегии запуска

До Ansible 2.0 playbook выполнялись линейно, задача за задачей. Все целевые хосты выполнили первое задание. Только когда все узлы были выполнены с первым заданием, они могли начать второе задание.

Читайте также:  Как удалить root пользователя linux

В Ansible 2.0 добавлена концепция стратегий запуска. В настоящее время существует две стратегии: «линейная» стратегия, которую я описал выше, которая является стратегией по умолчанию, и «свободная» стратегия, при которой хосты могут выполнять задачи в сборнике playbook по-прежнему в порядке, но не в стопах с другими хостами.

Это может быть полезно, если сотни хостов должны загрузить несколько файлов с некоторых FTP-серверов. Первый хост может завершить загрузку первого файла и перейти к следующему, в то время как другие хосты все еще заняты загрузкой первого файла. К тому моменту, когда другие хосты загрузят следующий файл, первый хост уже будет готов, и будет меньше конфликтов.

Свободная стратегия кажется превосходной в большинстве ситуаций. Вы просто добавляете strategy: free пару ключ-значение в playbook.

Блоки

Еще одна новая особенность Ansible 2.0 — блоки. Блоки позволяют группировать задачи вместе. Это очень полезно, если у вас есть задачи, которые нужно выполнять только при определенных условиях. Раньше вам приходилось делать это для каждой задачи отдельно.

С блоками вы можете сгруппировать все эти задачи отладки и поставить условие « when» на уровне блока.

Хранилище

Ansible связывается с удаленными компьютерами по SSH, но в плейбуках могут содержаться такие секреты, как имя пользователя, пароли и ключи API. Поскольку вы обычно храните playbooks в системах контроля версий, таких как git, эта информация будет видна всем, кто имеет доступ для чтения.

Ansible помогает с программой ansible-vault, которая позволяет создавать, редактировать и повторно шифровать зашифрованные файлы. Эти файлы могут быть расшифрованы на лету при запуске playbook, указав пароль. Если вы добавите флаг —vault-ask-pass в ansible-playbook, он запросит пароль хранилища.

Кроме того, вы можете добавить —vault-password-file , и Ansible прочитает пароль из вашего файла. Если вы используете файл паролей, не храните его в системе контроля версий!

Теперь вы можете безопасно хранить зашифрованные файлы в системе контроля версий и не беспокоиться о том, что кто-то найдет ваши секреты. Вам нужно тщательно управлять своим паролем хранилища. Если вы потеряете его, вы не сможете расшифровать файлы в хранилище.

Заключение

Ansible — отличный инструмент. Это легкий. Он может использоваться в интерактивном режиме со специальными командами и очень хорошо масштабируется для больших систем. У него также есть большой импульс и большое сообщество. Если вы управляете или даже просто работаете с удаленными серверами, вам определенно нужен Ansible.

Источник

Что такое Ansible и как его использовать

Что такое Ansible и как его использовать

Что такое Ansible? Это ПО с открытым исходным кодом, которое автоматизирует поставку программного обеспечения, управление конфигурацией и развёртывание приложений. Ansible помогает DevOps-специалистам автоматизировать сложные задачи.

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

Ключевые особенности программы Ansible

  • Безагентное. В клиенте не установлено программное обеспечение или агент, который общается с сервером.
  • Идемпотентное. Независимо от того, сколько раз вы вызываете операцию, результат будет одинаковым.
  • Простое и расширяемое. Программа Ansible написанa на Python и использует YAML для написания команд. Оба языка считаются относительно простыми в изучении.

Установка и запуск

Инструкцию по установке на другие ОС можно найти здесь.

Структура Ansible

Модули

Это небольшие программы, выполняющие определённую работу на сервере. Например, вместо запуска этой команды:

Мы можем использовать модуль apt и установить htop:

Использование модуля даст вам возможность узнать, установлен он или нет.

Плагины

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

Инвентаризация хостов

Чтобы предоставить перечень хостов, нам нужно обозначить список, находящийся в файле инвентаризации. Он напоминает содержание файла hosts.

В простейшем виде он может содержать одну строку:

Читайте также:  Astra linux подключить сетевую папку windows

Playbooks

Ansible playbooks — это способ отправки команд на удалённые компьютеры с помощью скриптов. Вместо того, чтобы индивидуально использовать команды для удалённой настройки компьютеров из командной строки, вы можете настраивать целые сложные среды, передавая скрипт одной или нескольким системам.

group_vars

Файл содержит набор переменных, например имя пользователя и пароль базы данных.

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

Обработчики

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

Если у вас playbook с большим объёмом, может быть полезно иметь возможность запускать только определённую часть его конфигурации.

Демо «Реальное приложение»

Цель этой демонстрации — установить приложение Laravel в VPS. Для этого используем Lightsail.

Последовательность действий для создания и запуска Laravel APP:

Рассмотрим каждый пункт подробнее.

Создание экземпляра Ubuntu Lightsail

Перейдите на панель управления Lightsail и нажмите «Создать экземпляр».

Выберите свою любимую ОС.

Выберите «Добавить скрипт запуска», который запускается после создания вашего экземпляра. Не забудьте получить SSH-ключ.

Установка зависимостей Ansible на нашем VPS

Добавьте эти sh-команды для установки зависимостей:

Теперь у нас есть готовый экземпляр, перейдём к построению Ansible Project.

Добавление SSH-ключей в Git

Вы должны добавить свой сервер id_rsa.pub к своим ключам GitHub SSH, войдя в свой сервер.

Сборка хостов и ansible.cfg

Определение роли в Ansible

Используем модуль Ping, чтобы убедиться, что хост работает, после чего нужно обновить все пакеты и установить два модуля: git и htop.

Определение обработчика

Установка модулей PHP

Чтобы вызвать обработчик, мы должны использовать notify: Restart PHP-FPM, имена обработчиков должны быть уникальными.

В этом руководстве мы определили php как тег, поэтому, например, если вы хотите запустить только эту задачу из своего playbook, вам необходимо выполнить её с —tags = ”php”, которая будет исполнять только её.

Установка Nginx

Добавление default-конфигурации Nginx

vars.yml

Примечание: Рекомендуется использовать ansible-vault для шифрования и дешифрования переменных.

Как использовать Ansible-Vault

Создайте секретный файл хранилища, содержащий ключ шифрования, который шифрует ваши переменные.

Чтобы зашифровать переменные, используйте:

Чтобы расшифровать переменные, используйте:

Создание базы данных MySql, имени пользователя и пароля

mysql_user и mysql_pass определены внутри vars.yml.

Клонирование кодовой базы

repo_git_url и app_work_dir определены внутри vars.yml.

Генерирование .env

Ansible использует шаблонизатор Jinja2 для динамических выражений и доступа к переменным. Создадим файл env.conf.

Определим role , чтобы переместить этот шаблон в директорию нашего приложения.

Создание playbook

Как видно, мы определили aws как хост для этого playbook, и sudo yes даёт нам возможность выполнять команду как пользователю sudo. У нас есть vars_files, где мы храним наши vars. Мы установили roles, каждая role выполняет определённую задачу. И, наконец, у нас есть handlers, которые содержат все обработчики проекта.

Запуск playbook

Полная структура проекта

Дополнительные материалы для начинающих изучать Ansible

  • Репозиторий на GitHub, который содержит полный исходный код.
  • Этот сайт запущен и работает с использованием этой кодовой базы.
  • Советы по использованию Ansible playbooks.
  • Описание архитектуры программы Ansible.
  • Статья «How to Use Ansible to Automate Initial Server Setup on Ubuntu».
  • О других инструментах сисадмина и DevOps читайте в нашей подборке.

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации

Источник

Оцените статью