Ошибки использования Ansible

#devops #otus #ansible #infrastructureascode #iac

Ansible одна из самых простых систем управления конфигурацией, она использует декларативное описание конфигурации в YAML формате. Эта простота имеет и обратную сторону медали - используя Ansible без понимания принципов IaC, можно легко скатиться в создание своих bash скриптов, только на Ansible. Чем это плохо? Использование Ansible как bash не обеспечивает идемпотентность. Отсутствие идемпотентности выражается в том, что повторный запуск конфигурационного скрипта может зачастую приводить к неожиданным результатам. В то время, как идея систем управления конфигурацией как Ansible, состоит в том, чтобы привести систему в соответствие с декларативным описанием и не применять конфигурацию дважды для тех компонент, которые уже находятся в требуемом состоянии.

Например:

- name: устанавливаем Apache (используя модуль yum, определенной версии)

yum:

name: httpd-2.4.6-67.0.1.el7

- name: устанавливаем Apache (пытаемся использовать Ansible как bash)

shell: "yum -y install httpd"

Другой частой ошибкой можно назвать отсутствие четкой структуры каталогов с описанием инфраструктуры. Это может быть как сваливание всех YAML файлов в один каталог, так и несогласованное командное взаимодействие, когда один инженер предпочитает одну схему размещения кода, а другой - другую, и в итоге все выглядит хаотичным и весьма сложным для понимания и внесения изменений. Для избежания этого необходимо следовать “Best Practices”, описанным в документации, а также выработать и использовать в команде единый подход к структуре каталогов.

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

Научиться использовать Ansible и практику Infrastructure as Code вам помогут эксперты из Экспресс 42 в курсе DevOps практики и инструменты, курс стартует уже в понедельник! Присоединяйтесь!

http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deeppost&utm_term=10.08