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
    Автоматизируем бутстрэп локальной машины декларативными конфетами

    View Slide

  2. Оркестрация
    на локальной
    машине?
    •Воспроизводимость
    •Предсказуемость
    •Версионируемость
    •Поддерживаемость
    иначе будет как-то так =>

    View Slide

  3. А есть snapshots/images/Docker/LFS…
    Можно даже приспособить…
    Сложно поддерживать, мало информативны. Страдает переносимость (если есть).
    Они созданы для решения несколько других задач.

    View Slide

  4. Ansible: как он поможет нам?
    • Декларативно опишем конфиг (a-la NixOS)

    • Подключим множество различных
    плагинов на любой случай

    • Применим на одном или нескольких
    хостах

    • Будем добавлять новые задачи и пере-
    использовать старые

    • Запустим на новой машине и приведем к
    требуемому State
    Система оркестрации, написана на Python, конфиги в YAML, есть в популярных
    дистрибутивах, не требует клиента на целевых машинах, активно развивается, много
    плагинов. Достаточно новая, но популярна наряду с Puppet, Chef.

    View Slide

  5. Как выглядит
    плейбуки?
    • Плейбуки на YAML

    • Задача — элемент в списке tasks

    • Задачи могут быть вложенные и
    содержать блоки

    • У каждой задачи есть набор
    аругментов, состояние

    • Из roles можем составить play
    https://www.ansible.com/
    resources/videos/quick-start-
    video
    Quick start по Ansible:

    View Slide

  6. Начинаем работу с Ansible

    View Slide

  7. Что нужно для работы Ansible?
    Немного: Linux и Python. Наличие Ansible не требуется. Но поскольку мы собираемся
    запускаться (читай использовать и как master, и slave) одну и ту же машину, он
    понадобится. Поставим через pip Install ansible.

    View Slide

  8. Перечисляем хосты и запускаем playbook
    1. Укажем адреса тех хостов, куда нам нужно
    законнектиться.

    2. Поскольку мы коннектимся к себе, нет нужды
    поднимать sshd и коннектиться через него.
    Просто скажем, что тип соединения = local.
    ansible-playbook

    —ask-become-pass

    playbook.yml

    View Slide

  9. Собираем свой playbook

    View Slide

  10. 1. Очевидное: установка пакетов
    Обновляем, ставим через pacman/AUR …любые пакеты …Homebrew на macOS

    View Slide

  11. 2. Линкуем конфиги (итеративно)
    Воспользуемся file — https://
    docs.ansible.com/ansible/devel/
    modules/file_module.html.

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

    View Slide

  12. 3. Интерактивные сабтаски для VIM
    Блок воспринимается как
    связанная задача.

    Модулем expect (https://
    docs.ansible.com/ansible/latest/
    modules/expect_module.html)

    • запускаем задачу в
    командной строке

    • ждем выполнения дольше
    обычного (плагины ставятся
    долго!)

    • на `…press ENTER` ответим “”

    View Slide

  13. 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

    View Slide

  14. Теги — для partial-запуска
    ansible-playbook \
    --tags=vmware \
    azaza.yml
    Можем теггировать
    таски.
    А затем запускать только
    те, которые теггированы.
    Можем передать один тег,
    а можем несколько.

    View Slide

  15. Что в итоге?

    View Slide

  16. Шпаргалка для плейбука
    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

    View Slide

  17. Спасибо за внимание!
    f1nnix, @IlyaRusanen, rusanen.ru, 2600, 2k18

    View Slide