Рубрики
Без рубрики

Почему вам может понадобиться неполов и даже не знать

Настройка машин с помощью сценариев оболочки ужасно грязно. Теги с Python, DevOps, Automation, Linux.

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

Лапфаза Ansible – «Простая это автоматизация. «Это довольно точное описание того, что он делает. В своем самом популярном режиме работы (есть несколько), вы описываете желаемое состояние ваших машин, а неслымами манипулирует их для достижения этого состояния. На данный момент вы можете думать «Да, но у нас уже есть сценарии Shell для этого». Однако Anibile предлагает несколько преимуществ над старыми старыми старинными сценариями.

Прежде всего, PlayBook, который описывает желаемое состояние, является декларативным и написанным в YAML. Использование PlayBook означает, что вам не нужно обрабатывать контроль ошибки и условие, проверяя себя. Это также означает, что никакие действия не будут предприняты, если государство уже выполнено (например, apt-get не будет запускать, если a angefet inginx пакет уже установлен).

Но это только часть истории.

Другое, что делает неизменное настолько мощное, – это использование модулей. Вместо того, чтобы полагаться на многие сторонние приложения ( SED , Greep , JQ , userAdd , расстались и т. Д.) И разбирая их вывод, вы можете сосредоточиться исключительно на самом состоянии. Это означает, что независимо от основных программ пользователей пространств ( UserAdd , AddUser , Busybox, BSD или VNU), вы можете просто указать универсальную задачу следующим образом:

– name: Create the operator user
  user:
    name: operator
    createhome: yes
    groups: wheel
    shell: /bin/sh

Точно так же, что вы инкапсулируете части вашего скрипта в отдельные библиотеки, это неизбежное охватывает концепцию ролей. Роли описывают определенные состояния машины вместе с возможными переменными, файлами конфигурации или шаблоны. Они удачно названы, и машина может использовать такие роли, как Докер , nginx и Python , Например. Каждый из них может быть тестирован в изоляции и повторно используется среди всех ваших проектов. Они также могут инкапсулировать более абстрактные концепции, такие как Аслыжное упрочнение Роль от OpenStack, которая делает цель чуть-чуть сложнее, чтобы сломаться.

А другая классная вещь? Чтобы запустить Anbible, вам нужен только Python 2.6+ на ваших целевых машинах и открытом SSH-соединении. Нет необходимости устанавливать что-либо еще! Это означает, что вы, вероятно, готовы начать использовать Anbible сразу! Подготовьте свою машину управления, запустив Brew Установить Anbible или Pip Установить -user Anbible и следуйте за мной.

Забудьте о Readme, расположенном в корневом каталоге проекта. Обычно он содержит все утомительные детали о том, как развернуть до постановки или производства. С помощью Anbible документация находится в коде. Это тестируемое, это многоразовый, и никто не может работать, пока человек имеет доступ к целевым компьютерам. Он также формирует идеальную основу для постоянного трубопровода развертывания (CD). Убедитесь, что ваше приложение всегда развертывается, также может помочь предотвратить катастрофу. Вместо того, чтобы выяснить, что делать, когда ваши серверы выходят вниз, вы просто редактируете файл инвентаризации и внесите свежего развертывания на новый набор машин.

Когда развертывание является частью кодовой базы, она должна развиваться с помощью кодовой базы. Убедитесь, что вся ваша команда – включена в DevOps и понимает, как использовать Anbible. Лучший способ сделать это – предоставить бродную среду, чтобы каждый разработчик мог проверить процесс развертывания локально.

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

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

Хотя одна из функций Anbible рекламирует Idempottence. Еще довольно легко написать плейброд, который не будет работать правильно. Например, как вы обновляете сервис в IDEMPOTENT Way? Вы не можете, это самоуправление, что означает, что вы должны пожертвовать одному, чтобы спасти другого (обновление, то есть).

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

Оба предполагают, что ваше приложение находится за пределами балансировщика нагрузки (или обратный прокси). Такой балансировщик нагрузки может быть размещен либо внешне, либо внутренне, независимо от остальной части инфраструктуры. Услуги, которые составляют ваше приложение, зарегистрированы в балансе нагрузки. Конфигурация бэкэнда динамически обновляется, поскольку службы приходят и уходят. Если вы хотите провести балансировщик нагрузки, CORFD или Консул-шаблон может помочь с динамическими реконфигурацией.

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

Обязательная галактика Обеспечивает много модулей, которые мы можем использовать. Это похоже на Docker Hub или NPM, где вы можете искать соответствующие части и использовать их в вашем проекте. Все они написаны, придерживаясь одного стандарта, что означает, что они должны быть легко многоразовыми. К сожалению, это не всегда так.

Более одного раза в моей карьере, я произошел на модуле, который объявил совместимость с Debian, но когда-либо был проверен только на Ubuntu. Это может не быть проблемой, если вы можете выбрать базовую ОС. Это может означать некоторые дополнительные работы в портировании его, если вы хотите использовать существующую инфраструктуру.

Версия Pinning – это еще одна проблема. Мы все знаем, что программное обеспечение развивается, и что обратная совместимость редко наблюдается. Когда модули используют несколько зависимостей, решается, что каждая такая зависимость описана с точным тегом версии. Таким образом, мы можем избежать проблемы установки пакета в последней версии, которая больше не совместима с другой частью системы.

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

Обычный обычно работает на системных службах. Хотя можно проверить некоторые его функции в контейнерах (например, с докером), этот подход вообще не удастся. Docker не может протестировать все операции и системные вызовы ядра, потому что они не существуют в его объеме. Чтобы правильно протестировать Anisible Playbook, вам нужны VMS. Вы заметили множественное число? Хорошо, потому что это недостаточно для проверки только на одном виртуальной машине.

Наиболее базовая настройка теста должна использовать чистую виртуальную машину, запустить PlayBook, проверьте результаты, а затем снова запустите PlayBook, чтобы проверить проблемы IDEMPotency. Но это только дает вам ограниченную информацию. Вы до сих пор не знаете, будет ли Playbook фактически развернуть в производстве. Целевая машина не обязательно будет чистой виртуальной машиной (если вы уже не используете одноразовую инфраструктуру).

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

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

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

Первоначально опубликовано в https://www.iamondemand.com 10 августа 2017 года.

Оригинал: “https://dev.to/doomhammerng/why-you-might-need-ansible-and-not-even-know-it-2a88”