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

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

Avatar for Moscow 2600 Moscow 2600
September 07, 2018

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

Avatar for Moscow 2600

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