Рубрики
Uncategorized

Anisible: задачи против ролей против обработчиков

Anisible: задачи против ролей против обработчиков Запуск задач в Anisible можно сделать в разных ва … Помечено с помощью Anbible, DevOps, развертываний, Laravel.

Запуск задач в Anisible можно сделать по-разному, и это может быть очень запутано для тех, кто начинается с автоматической и серверной оркесторией. В этом посте я объясню разницу и почему вы должны использовать один или другой для определенных ситуаций. Если бы у меня был этот пост, когда я начал с Anisible, он спас мне часы исследования, поэтому, надеюсь, это поможет вам.

Задания

Задачи … хорошо задачи. Они специфичны для рабочего процесса, называемыми игровыми книгами в Anbible. Если вы прочитаете мой пост с прошлой недели, Автоматизация развертывания Laravel, используя Anisible , вы бы видели конфигурацию, которую я поделился внизу этого поста. Эта конфигурация использовала задачи. Эти задачи специфичны для этой конкретной PlayBook и не могут быть переданы другим PlayBooks. Это то, что вы должны использовать роли для.

Преимущество использования задач, а не ролей или обработчиков, заключается в том, что у вас есть детали задач в том же файле, что и весь PlayBook. Вы можете быстро увидеть, каков весь ваш PlayBook, когда вы выполняете его. Это отлично подходит для небольших детских книг, таких как Playbook I Shared, но становится жестким, чтобы понять, когда PlayBook получит дольше. Это где роли могут предложить выход.

Роли

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

Эта конфигурация имеет роль «Deploy_Laravel_app». Чтобы понять, что здесь происходит, мне нужно дать вам структуру папки:

├── deploy_laravel_app
│ ├── handlers
│ │ └── main.yml
│ └── tasks
│ └── main.yml
└── playbook.yml

Здесь вы можете увидеть «Playbook.yml», который мы используем выше, а папка называется «Deploy_Laravel_app». Название папки определяет название роли в PlayBook. Роль содержит две папки, обработчики и задачи. Мы сосредоточимся на обработчиках в следующем разделе, но сейчас мы сосредоточимся на папке задач. Эта папка содержит main.yml. Это имя файла значения по умолчанию будет искать при попытке найти задачи для определенной роли.

Main.yml содержит следующую конфигурацию:

Здесь вы можете увидеть 2 новых вещей, которые мы еще не видели в конфигурациях. Атрибут «Когда» атрибут задач из предыдущего сообщения в блоге отсутствует и вместо этого у нас есть атрибут «Notify». Эти два атрибута делают то же самое в том, что они оба работают задачи, но только если состояние задачи «изменено» вместо «ОК». Другими словами, это означает, что задачи в «Notify» выполняются только тогда, когда задача превращается в состояние приложения. В этом случае, если мы вытягиваем новые изменения от Git, только тогда эти задачи будут выполнены. Разница между атрибутом «Когда» и «Notify», однако, это: Атрибут, когда атрибут зарегистрирован на задаче, что означает, что порядок выполнения не изменится. Задачи, выполняемые под атрибутом «Notify», являются обработчиками. Художественные обработчики выполняются после выполнения всех других задач.

Порядок выполнения тогда выглядит так:

  1. Задания
  2. Роли
  3. Обработчики

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

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

Обработчики

Обработчики — это задачи, но они выполняются в самом конце PlayBook. Если бы вы могли сравнить это с циклом исполнения JavaScript, вы можете сказать, что обработчики являются дополнительными задачами, которые добавлены к списку задач, не выполненные между двумя другими задачами. В предыдущем разделе я показал вам структуру папки, которую мы используем. Теперь давайте посмотрим, что находится внутри Main.yml в папке обработчиков.

Это похоже на задания из конфигурации от Автоматизация развертывания Laravel, используя Anisible Отказ Единственное отличие состоит в том, что имена идентичны именам, используемым в разделе «Уведомление» задачи в роли. Они рассматриваются как уникальные идентификаторы в пределах роли, и она использует имя для выяснения, какие обработчики для запуска.

Преимущества обработчиков состоит в том, что вы можете очень легко выполнить определенные задачи и «расписание» команды очистки. Таким образом, это не то, что уйдет на пути выполнения основных задач, но это тоже не то, что вы собираетесь забыть.

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

Вывод

Есть несколько способов выполнения задач с помощью Anbible: задачи, роли и обработчики. Все они имеют разные случаи использования, и у каждого из них есть свои преимущества и недостатки.

  • Задачи: четкий обзор задач, которые должны быть выполнены, но могут быть трудно понять с более длинными игровыми книгами.
  • Роли: многоразовые задачи, которые могут запланировать другие задачи, но сложнее выяснить, какие задачи выполняются.
  • Обработчики: простые задачи, которые должны выполняться в конце, но вы не можете дать им хорошее и описательное имя.

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

Оригинал: «https://dev.to/roelofjanelsinga/ansible-tasks-vs-roles-vs-handlers-1k7k»