Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ilya Rusanen- Ansible, если ты не админ

Moscow 2600
September 07, 2018

Ilya Rusanen- Ansible, если ты не админ

Moscow 2600

September 07, 2018
Tweet

More Decks by Moscow 2600

Other Decks in Programming

Transcript

  1. Ansible, если ты не админ f1nnix, @IlyaRusanen, rusanen.ru, 2600, 2k18

    Автоматизируем бутстрэп локальной машины декларативными конфетами
  2. А есть snapshots/images/Docker/LFS… Можно даже приспособить… Сложно поддерживать, мало информативны.

    Страдает переносимость (если есть). Они созданы для решения несколько других задач.
  3. Ansible: как он поможет нам? • Декларативно опишем конфиг (a-la

    NixOS) • Подключим множество различных плагинов на любой случай • Применим на одном или нескольких хостах • Будем добавлять новые задачи и пере- использовать старые • Запустим на новой машине и приведем к требуемому State Система оркестрации, написана на Python, конфиги в YAML, есть в популярных дистрибутивах, не требует клиента на целевых машинах, активно развивается, много плагинов. Достаточно новая, но популярна наряду с Puppet, Chef.
  4. Как выглядит плейбуки? • Плейбуки на YAML • Задача —

    элемент в списке tasks • Задачи могут быть вложенные и содержать блоки • У каждой задачи есть набор аругментов, состояние • Из roles можем составить play https://www.ansible.com/ resources/videos/quick-start- video Quick start по Ansible:
  5. Что нужно для работы Ansible? Немного: Linux и Python. Наличие

    Ansible не требуется. Но поскольку мы собираемся запускаться (читай использовать и как master, и slave) одну и ту же машину, он понадобится. Поставим через pip Install ansible.
  6. Перечисляем хосты и запускаем playbook 1. Укажем адреса тех хостов,

    куда нам нужно законнектиться. 2. Поскольку мы коннектимся к себе, нет нужды поднимать sshd и коннектиться через него. Просто скажем, что тип соединения = local. ansible-playbook —ask-become-pass playbook.yml
  7. 2. Линкуем конфиги (итеративно) Воспользуемся file — https:// docs.ansible.com/ansible/devel/ modules/file_module.html.

    Пройдемся итеративно по предоставленному листу и для каждого выполним действие, подставив в шаблон элемент.
  8. 3. Интерактивные сабтаски для VIM Блок воспринимается как связанная задача.

    Модулем expect (https:// docs.ansible.com/ansible/latest/ modules/expect_module.html) • запускаем задачу в командной строке • ждем выполнения дольше обычного (плагины ставятся долго!) • на `…press ENTER` ответим “”
  9. 4. Клонируем приватные репозитории Лучше использовать приватные ключи. Но если

    нужно easy-to-go решение, мы можем предложить ввести какую-то переменную вручную. Это не best-security practice, но переменные много где пригодятся, лучше о них знать. ansible-playbook … -e '{ "var1": "value1" }’ // --extra-vars "username=hello" … ./playbook.yaml Ansible Vaults: https://docs.ansible.com/ ansible/latest/user_guide/ playbooks_vault.html
  10. Теги — для partial-запуска ansible-playbook \ --tags=vmware \ azaza.yml Можем

    теггировать таски. А затем запускать только те, которые теггированы. Можем передать один тег, а можем несколько.
  11. Шпаргалка для плейбука 1. Документация — https://docs.ansible.com/ansible/latest/index.html 2. Плагины (модули)

    — https://docs.ansible.com/ansible/latest/modules/ modules_by_category.html 3. Узнать больше про YAML, если не сталкиваетесь — https://docs.ansible.com/ansible/ latest/reference_appendices/YAMLSyntax.html