Введение в Ansible Roles

RedDeveloper
23.04.2023 13:59
Введение в Ansible Roles

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

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

Роли Ansible содержат каталоги: defaults, tasks, vars, files, templates, meta и handlers. Каждый каталог должен содержать файл "main.yml", содержащий соответствующее содержимое. Ниже приведены сведения о каждом каталоге:

  1. defaults: содержит переменные по умолчанию, которые будут использоваться в задачах. Они имеют самый низкий приоритет и могут быть легко переопределены.
  2. tasks: содержит основные шаги по конфигурации/развертыванию, которые необходимо выполнить на хостах.
  3. vars: содержит переменные для ролей. Они имеют более высокий приоритет, чем переменные по умолчанию.
  4. files: содержит файлы, необходимые в процессе конфигурации/развертывания. Здесь хранятся файлы, которые необходимо скопировать с контроллера Ansible на удаленные хосты.
  5. templates: содержит шаблоны файлов, которые поддерживают модификацию из ролей. Здесь используется язык шаблонов Jinja2. Если вы хотите, чтобы вывод ролей отображался определенным образом, можно использовать шаблоны.
  6. meta: содержит метаданные роли, такие как автор, платформы поддержки и зависимости.
  7. handlers: содержит обработчики, которые могут быть вызваны командой "notify" в конце плейбука или задачи. Обработчики используются, когда вы хотите отобразить результат выполнения плейбука через Slack или ServiceNow.

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

$ mkdir roles
$ cd roles
$ ansible-galaxy role init copy_file

Ниже приведена роль "main.yml" "inside copy_file".

$ vim copy_file/tasks/main.yml

- block:
    - name: Copy file
      copy:
        src: medium.conf
        dest: /tmp/medium.conf
      register: copy_out
  rescue:
    - debug:
        msg: "Error in copying file"

Этот "medium.conf" будет помещен в каталог "./copy_file/files/" и будет скопирован на удаленные хосты.

Ниже приведен мастер-плейбук, из которого можно вызвать роль "copy_file":

---
- name: Main playbook to copy file
  hosts: all
  gather_facts: false
  tasks:
    - name: import role
      import_role: 
        name: copy_file

Это поможет нам в повторном использовании роли "copy_file" и уменьшит сложность по сравнению с тем, если все будет в одном плейбуке.

P.S. Если вам понравилась статья, пожалуйста, поддержите ее хлопками. Будьте здоровы.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.