ansible скрипты для начинающих
Ansible для начинающих
В интернете полно статей про то, что такое Ansible и как с ним работать. Много информации для новичков. Но все они, на мой взгляд, очень тяжелы в освоении на начальном этапе знакомства с Ansible. По этому предлагаю вашему вниманию свою интерпретацию на эту тему.
Asible
Итак, Ansible – это система управления программным обеспечением на удаленных серверах. Есть ряд аналогичных систем (Chief, Puppet) с другими принципами работы, требующих установки клиента и пр. В чём плюс Ansible – для работы на клиенте достаточно ssh соединения с ним.
Задача Ansible – выполнить ряд операций на удаленной машине. При этом машин может быть сразу несколько.
Playbook
Все операции вы записываете в некий Ansible-скрипт. Действия выполняются последовательно. Логика работы похожа на обычный bash-скрипт, только на своих командах. Это позволяет отвязаться от дистрибутива, описав задачи на промежуточном языке. Такой Ansible-скрипт называется playbook (сценарий). Формат его очень простой и построен на yaml-разметке.
Тут мы описали группу задач. Дали ей общее имя, name: “First step”. Указали на каких хостах выполнять, hosts: localhost (только на локальном хосте).
Далее следует перечень задач, которые надо выполнить: tasks: taskA, taskB. Такая группа задач называется play. Это что-то типа блока задач, которые вы выделяете по какой-то своей логике. В одном playbook-е может быть несколько блоков (play-ев):
Заметьте, второй блок (Second step) мы поставили для всех хостов (hosts: all). То есть в первом мы могли, к примеру, что-либо подготовить локально (создать виртуальные машины, подготовить файлы, залить их), а потом применить для всех машин во втором блоке.
Теперь давайте рассмотрим что из себя представляют сами команды (tasks).
Как правило это всего-лишь модули Ansible. То есть вызывая какой-либо task, мы на самом деле вызываем модуль Ansible с его параметрами. По этому богатство “языка” Ansible зависит от количества его модулей.
Записать task можно в двух видах: кратком, и полном. Вот пример команды установки переменной (set _fact) в кратком виде:
Тогда наш play с этим task выглядит так:
В данном скрипте мы установили переменную mytext, равную “Hello world” для хоста localhost.
Следующей командой можно вывести на экран переменную, используя модуль (команду) debug:
Существует возможность более полно описать команду (task), дать ему имя (name). Совсем как в блоках задач (play). Тогда получившийся текст выглядит как подзадача нашего основного блока задач. На мой взгляд так более наглядно:
В этому случае сразу видно, что есть блок задач “First step“, в нем существует 2 подзадачи. Первая – с установкой переменной. Вторая – вызывает модуль debug с параметром var: и указанием имени переменной mytext.
Запуск
Теперь можете сохранить получившийся текст в файл “first.yml” и запустить его так:
Тут вы видите наш блок задач (PLAY), называемый “First step”, а так же команды (TASK) по установке переменной (Set variable) и ее выводу (Show variable). Все задачи завершились успешно (ok=3, failed=0). Ничего не изменилось в состоянии хоста (changed=0), т.к. мы ничего пока не меняли (не устанавливали ПО, не изменяли файлы).
Дополнительная задача “ Gathering Facts” – получение информации о хосте (такой как имя хоста и пр.), вызвалась автоматически. Она необходима для использования данных о хосте в своих сценариях. Можно запретить эту задачу, указав gather_facts : false
Inventory
Второй блок задач использовал у нас директиву hosts: all. Что это значит? Где все эти хосты, на которых должна примениться наша группа команд?
Это файл hosts. Так называемый файл инвентаризации, в котором у нас хранится перечень машин, с которыми будет работать Ansible.
Располагаться он может в вашей директории и иметь примерно такой вид:
Тут, как видно, указываются группы, в них имена хостов, можно с указанием переменных для хоста. Вообще inventory-файл очень гибкий. Можно комбинировать группы, включать одну в другую, задавать переменные для групп, глобальные значения:
Подробнее смотрите в официальной документации. Нам же достаточно того, что вместо hosts: all можно указать конкретную группу:
А затем вызвать наш playbook, указав параметром файл инвентаризации:
Roles
Можно разбивать ваши задачи по разным playbook-файлам. К примеру вынести первичную настройку в common.yml, установку Apache в apache.yml, MySQL – в mysql.yml, PHP – в php.yml, потом все это включить в файл lamp.yml
Подробнее смотрите тут и тут.
Но я предлагаю сразу перейти к ролевой модели. Роль – это как раз ваш LAMP в данном случае. Набор определенных типовых задач для конкретной машины. Ее роль.
Для того, чтобы определить роль, мы должны создать определенную файловую иерархию и разложить все по директориям. Вот пример такой иерархии для роли с именем “common”:
Смысл в том, чтобы разнести все раздельно по директориям.
Таких определенных директорий много.
И в каждой директории главный файл – main.yml. Но не обязательно создавать все эти директории сразу. Достаточно создать roles/имя_роли/tasks/main.yml и прописать в нем все задачи, характерные для данной роли. Далее в осномном playbook-файле вы уже можете ссылаться на эти роли:
Примерно так может выглядеть ваш playbook для установки LAMP. Теперь его можно “накатывать” сразу на кучу серверов в вашем hosts-файле!
Ссылки
В заключении приведу полезные, на мой взгляд, для начинающего ссылки:
Удачи в освоении автоматизации вместе с Ansible!
Что такое Ansible и как его использовать
Что такое Ansible и как его использовать
Что такое Ansible? Это ПО с открытым исходным кодом, которое автоматизирует поставку программного обеспечения, управление конфигурацией и развёртывание приложений. Ansible помогает DevOps-специалистам автоматизировать сложные задачи.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Ключевые особенности программы Ansible
Установка и запуск
Инструкцию по установке на другие ОС можно найти здесь.
Структура Ansible
Модули
Это небольшие программы, выполняющие определённую работу на сервере. Например, вместо запуска этой команды:
Мы можем использовать модуль apt и установить htop:
Использование модуля даст вам возможность узнать, установлен он или нет.
Плагины
Ansible поставляется с несколькими удобными плагинами, и вы можете легко написать свой собственный.
Инвентаризация хостов
Чтобы предоставить перечень хостов, нам нужно обозначить список, находящийся в файле инвентаризации. Он напоминает содержание файла hosts.
В простейшем виде он может содержать одну строку:
Playbooks
Ansible playbooks — это способ отправки команд на удалённые компьютеры с помощью скриптов. Вместо того, чтобы индивидуально использовать команды для удалённой настройки компьютеров из командной строки, вы можете настраивать целые сложные среды, передавая скрипт одной или нескольким системам.
group_vars
Файл содержит набор переменных, например имя пользователя и пароль базы данных.
Это способ сгруппировать несколько задач в один контейнер, чтобы эффективно автоматизировать работу с помощью понятной структуры каталогов.
Обработчики
Представляют собой списки задач, которые на самом деле не отличаются от обычных задач, на которые ссылается глобально уникальное имя и которые оповещаются уведомителями. Если ничто не уведомляет обработчик, он не будет запускаться. Независимо от того, сколько задач уведомляет обработчик, он запускается только один раз, после того как все задачи завершены.
Если у вас playbook с большим объёмом, может быть полезно иметь возможность запускать только определённую часть его конфигурации.
Демо «Реальное приложение»
Цель этой демонстрации — установить приложение Laravel в VPS. Для этого используем Lightsail.
Последовательность действий для создания и запуска Laravel APP:
Рассмотрим каждый пункт подробнее.
Создание экземпляра Ubuntu Lightsail
Перейдите на панель управления Lightsail и нажмите «Создать экземпляр».
Выберите свою любимую ОС.
Выберите «Добавить скрипт запуска», который запускается после создания вашего экземпляра. Не забудьте получить SSH-ключ.
Установка зависимостей Ansible на нашем VPS
Добавьте эти sh-команды для установки зависимостей:
Теперь у нас есть готовый экземпляр, перейдём к построению Ansible Project.
Добавление SSH-ключей в Git
Вы должны добавить свой сервер id_rsa.pub к своим ключам GitHub SSH, войдя в свой сервер.
Сборка хостов и ansible.cfg
Определение роли в Ansible
Используем модуль Ping, чтобы убедиться, что хост работает, после чего нужно обновить все пакеты и установить два модуля: git и htop.
Определение обработчика
Установка модулей PHP
Чтобы вызвать обработчик, мы должны использовать notify: Restart PHP-FPM, имена обработчиков должны быть уникальными.
В этом руководстве мы определили php как тег, поэтому, например, если вы хотите запустить только эту задачу из своего playbook, вам необходимо выполнить её с —tags = ”php”, которая будет исполнять только её.
Установка Nginx
Добавление default-конфигурации Nginx
vars.yml
Примечание: Рекомендуется использовать ansible-vault для шифрования и дешифрования переменных.
Как использовать Ansible-Vault
Создайте секретный файл хранилища, содержащий ключ шифрования, который шифрует ваши переменные.
Чтобы зашифровать переменные, используйте:
Чтобы расшифровать переменные, используйте:
Создание базы данных MySql, имени пользователя и пароля
mysql_user и mysql_pass определены внутри vars.yml.
Клонирование кодовой базы
repo_git_url и app_work_dir определены внутри vars.yml.
Генерирование .env
Ansible использует шаблонизатор Jinja2 для динамических выражений и доступа к переменным. Создадим файл env.conf.
Создание playbook
Как видно, мы определили aws как хост для этого playbook, и sudo yes даёт нам возможность выполнять команду как пользователю sudo. У нас есть vars_files, где мы храним наши vars. Мы установили roles, каждая role выполняет определённую задачу. И, наконец, у нас есть handlers, которые содержат все обработчики проекта.
Автоматизируйте все с помощью Ansible: часть первая
Обзор
Это первая часть руководства из двух частей по Ansible. В этой части вы узнаете, что такое Ansible, как его установить и настроить, и как установить локальный кластер Vagrant для его тестирования. Затем вы найдете инвентарь, модули, специальные команды, книги, стратегии запуска, блоки и хранилище.
Что такое Ansible?
Одной из уникальных особенностей Ansible является то, что он не устанавливает никакого программного обеспечения на управляемые машины. Управляет машинами удаленно через SSH. Чтобы управлять удаленным компьютером, вам просто нужно убедиться, что ваш открытый ключ SSH находится в файле авторизованных ключах этого компьютера.
Начало работы с Ansible
Ansible работает на управляющей машине и может управлять серверами под управлением любой операционной системы, но управляющая машина не может быть машиной Windows на данный момент. Я буду использовать Mac OS X в этом руководстве в качестве контрольной машины.
Установка
Ansible требует Python 2.6 или 2.7. Чтобы установить его, введите:
pip install ansible
В Mac OS X рекомендуется увеличить количество дескрипторов файлов:
sudo launchctl limit maxfiles 1024 unlimited
Если вы видите ошибку типа «Слишком много открытых файлов», вам, вероятно, нужно это сделать.
Конечно, номер версии может быть другим.
Файл конфигурации Ansible
Ansible имеет файл конфигурации, который позволяет вам управлять многими опциями. Порядок поиска:
Вы также можете переопределить определенные параметры, используя отдельные переменные среды, которые имеют приоритет над файлом конфигурации.
Проверьте документацию Ansible, чтобы узнать обо всех вариантах.
Настройте Кластер Vagrant
Чтобы по-настоящему понять всю мощь Ansible, вам нужно несколько серверов для управления. В этом руководстве я буду использовать кластер Vagrant из 3 виртуальных машин, но для Ansible это всего лишь несколько хостов, которыми он должен управлять. Чтобы узнать больше о Vagrant, ознакомьтесь с разделом Введение в Vagrant.
Сначала установите VirtualBox и Vagrant. Затем поместите следующее в файл с именем Vagrantfile в рабочем каталоге.
Чтобы убедиться, что вы можете использовать SSH на хостах кластера, введите: vagrant ss >>
Инвентарь
Я поместил «larry» в группу «funny», а остальные хосты в группу «funnier». Эта организация позволит нам выполнять действия в отношении этих групп. Вы также можете выполнять действия на отдельных хостах и на всех хостах.
Модули
Ansible имеет очень модульную и расширяемую архитектуру. Все его возможности организованы в модули. Есть основные модули и дополнительные модули. Каждый модуль представляет команду, и большинство принимает аргументы. Вы можете использовать модули непосредственно в специальных командах или в книгах воспроизведения. Вы можете прочитать обо всех модулях в документации.
Специальные команды
Например, чтобы увидеть, все ли хосты в вашем инвентаре работают, вы можете использовать модуль ping (без аргументов):
Ansible имеет много модулей для всех распространенных задач системного администрирования, таких как управление файлами, управление пользователями и пакетами, а также множество необычных задач. Но если вы не можете найти то, что вам нужно, или просто чувствуете себя более комфортно с простыми командами оболочки, вы можете использовать модуль оболочки напрямую, включая каналы. Следующая команда извлекает внутренние и внешние IP-адреса всех хостов:
Playbooks
Пример Playbook
Давайте посмотрим на то, как выглядит типичный playbook, прежде чем мы перейдем к деталям.
В playbook есть раздел hosts, в котором вы указываете хосты из файла инвентаризации. В этом случае название группы «funnier». Затем есть раздел задач с двумя задачами, которые устанавливают Nginx и Python 3. Наконец, есть раздел обработчиков, где Nginx запускается после его установки.
Запуск Playbooks
Ansible является идемпотентом, что означает, что если что-то уже находится в желаемом состоянии, то Ansible оставит это в покое. В выводе ansible-playbook вы можете увидеть, какие задачи были успешными или неудачными, а какие были изменены.
Давайте снова запустим ту же playbook. Ничто не должно быть изменено:
Стратегии запуска
До Ansible 2.0 playbook выполнялись линейно, задача за задачей. Все целевые хосты выполнили первое задание. Только когда все узлы были выполнены с первым заданием, они могли начать второе задание.
В Ansible 2.0 добавлена концепция стратегий запуска. В настоящее время существует две стратегии: «линейная» стратегия, которую я описал выше, которая является стратегией по умолчанию, и «свободная» стратегия, при которой хосты могут выполнять задачи в сборнике playbook по-прежнему в порядке, но не в стопах с другими хостами.
Это может быть полезно, если сотни хостов должны загрузить несколько файлов с некоторых FTP-серверов. Первый хост может завершить загрузку первого файла и перейти к следующему, в то время как другие хосты все еще заняты загрузкой первого файла. К тому моменту, когда другие хосты загрузят следующий файл, первый хост уже будет готов, и будет меньше конфликтов.
Свободная стратегия кажется превосходной в большинстве ситуаций. Вы просто добавляете strategy: free пару ключ-значение в playbook.
Блоки
С блоками вы можете сгруппировать все эти задачи отладки и поставить условие « when» на уровне блока.
Хранилище
Ansible связывается с удаленными компьютерами по SSH, но в плейбуках могут содержаться такие секреты, как имя пользователя, пароли и ключи API. Поскольку вы обычно храните playbooks в системах контроля версий, таких как git, эта информация будет видна всем, кто имеет доступ для чтения.
Теперь вы можете безопасно хранить зашифрованные файлы в системе контроля версий и не беспокоиться о том, что кто-то найдет ваши секреты. Вам нужно тщательно управлять своим паролем хранилища. Если вы потеряете его, вы не сможете расшифровать файлы в хранилище.
Заключение
Как работать с Ansible: простая и удобная шпаргалка
Ansible – это современный инструмент управления конфигурацией, который облегчает задачу настройки и обслуживания удаленных серверов.
Этот мануал написан в виде шпаргалки. По сути это краткий справочник по командам и методам, обычно используемым при работе с Ansible. Краткий обзор Ansible и инструкции по установке и настройке вы найдете в руководстве Установка и настройка Ansible в Ubuntu 18.04.
Как пользоваться этим мануалом:
Краткий словарь терминов Ansible
В этом руководстве широко используются такие термины Ansible:
Если вы хотите попрактиковаться с командами, используемыми в этом руководстве, на рабочем плейбуке Ansible, Используйте плейбук из мануала Автоматизация начальной настройки сервера с помощью Ansible в Ubuntu 18.04. Вам понадобится как минимум один удаленный сервер в качестве ноды.
Проверка подключения к нодам
Чтобы убедиться, что Ansible может подключаться к нодам и запускать команды и плейбуки, вы можете использовать следующую команду:
Модуль ping проверит, есть ли у вас валидные учетные данные для подключения к нодам, определенным в файле инвентаря, и может ли Ansible запускать сценарии Python на удаленном сервере. Ответ pong означает, что Ansible готов запускать команды и плейбуки на этой ноде.
Подключение с помощью другого пользователя
То же самое относится и к ansible-playbook:
Настройка пользовательского ключа SSH
Если вы используете свой ключ SSH для подключения к удаленным серверам, вы можете предоставить его с помощью параметра –private-key:
Эта опция также работает для ansible-playbook:
Настойка парольной аутентификации
Если вам нужно использовать парольную аутентификацию для подключения к нодам, добавьте опцию –ask-pass к команде Ansible.
Это заставит Ansible запросить у вас пароль пользователя на удаленном сервере, к которому вы пытаетесь подключиться:
Эта опция также действительна для ansible-playbook:
Использование пароля sudo
Если удаленный пользователь должен предоставить пароль для запуска команд sudo, вы можете включить опцию –ask-become-pass в команду Ansible. Опция позволит вам ввести пароль sudo удаленного пользователя:
Эта опция также действительна для ansible-playbook:
Пользовательский файл инвентаря
Такая опция действительна и для ansible-playbook:
Динамический файл инвентаря
Ansible поддерживает сценарии инвентаризации для создания динамических файлов. Это полезно, если ваш инвентарь часто меняется, когда серверы создаются и уничтожаются.
Вы можете найти ряд скриптов с открытым исходным кодом в официальном репозитории Ansible GitHub. После загрузки требуемого сценария на Ansible control machine и настройки необходимых параметров (например, учетных данных API) вы можете запустить исполняемый файл в качестве пользовательского инвентаря с любой командой Ansible, которая поддерживает эту опцию.
Следующая команда использует скрипт инвентаря my_inventory.py с командой ping для проверки подключения ко всем текущим активным серверам:
За более подробной информацией о том, как использовать динамические файлы инвентаризации, пожалуйста, обратитесь к официальной документации Ansible.
Запуск специальных команд
Прежде чем вносить изменения на свои ноды, вы можете выполнить пробный прогон, чтобы увидеть, как ваша команда повлияет на серверы. Это можно сделать, включив параметр –check:
Запуск плейбуков
Чтобы запустить плейбук и выполнить все определенные в нем задачи, используйте команду ansible-playbook:
Запрос информации о play
Опция –list-tasks используется для перечисления всех задач, которые будут выполнены в play, при этом не внося никаких изменений на удаленные серверы:
Точно так же можно запросить все хосты, которые будут затронуты выполнением play, без запуска каких-либо задач на удаленных серверах:
Вы можете использовать теги, чтобы ограничить выполнение play. Чтобы вывести список всех тегов, доступных в play, используйте параметр –list-tags:
Управление выполнением плейбука
Вы можете использовать опцию –start-at-task, чтобы определить новую точку входа вашего плейбука. Затем Ansible пропустит все, что предшествует указанной задаче, выполнив оставшуюся часть play с заданного момента. Эта опция в качестве аргумента требует правильное имя задачи:
Чтобы выполнять только задачи, связанные с конкретными тегами, вы можете использовать опцию –tags. Например, если вы хотите выполнить только задачи, помеченные как nginx или mysql, вы можете использовать:
Если вы хотите пропустить все задачи, которые находятся под определенными тегами, используйте –skip-tags. Следующая команда будет выполнять myplaybook.yml, пропуская все задачи, помеченные как mysql:
Ansible Vault для хранения конфиденциальных данных
Если ваши плейбуки Ansible содержат конфиденциальные данные, такие как пароли, ключи API и учетные данные, важно обеспечить их безопасность с помощью шифрования. Ansible предоставляет ansible-vault для шифрования файлов и переменных.
Несмотря на то, что любой файл данных Ansible, а также двоичные файлы, возможно зашифровать изначально, чаще для шифрования переменных файлов, содержащих конфиденциальные данные, используется ansible-vault. После шифрования файла с помощью этого инструмента вы сможете выполнять, редактировать или просматривать его, только предоставив соответствующий пароль, указанный при первом шифровании файла.
Создание нового зашифрованного файла
Вы можете создать новый зашифрованный файл Ansible с помощью:
ansible-vault create credentials.yml
Эта команда выполнит следующие действия:
Шифрование существующего файла Ansible
Чтобы зашифровать существующий файл Ansible, вы можете использовать следующую команду:
ansible-vault encrypt credentials.yml
Эта команда запросит у вас пароль, который вам нужно будет вводить при каждом доступе к файлу credentials.yml.
Просмотр содержимого зашифрованного файла
Если вы хотите просмотреть содержимое файла, который ранее был зашифрован с помощью ansible-vault, и вам не нужно изменять его содержимое, вы можете использовать команду:
ansible-vault view credentials.yml
Она предложит вам указать пароль, который вы выбрали при первом шифровании файла с помощью ansible-vault.
Редактирование зашифрованного файла
Чтобы изменить содержимое файла, который ранее был зашифрован с помощью Ansible Vault, выполните:
ansible-vault edit credentials.yml
Эта команда предложит вам указать пароль, который вы выбрали при первом шифровании файла credentials.yml. После проверки пароля откроется редактор командной строки по умолчанию с незашифрованным содержимым файла, что позволит вам внести нужные изменения. По завершении вы можете сохранить и закрыть файл, как обычно, и обновленное содержимое будет сохранено и зашифровано.
Расшифровка файлов
Если вы хотите навсегда расшифровать файл, ранее зашифрованный с помощью ansible-vault, вы можете сделать это с помощью следующего синтаксиса:
ansible-vault decrypt credentials.yml
Эта команда предложит вам ввести тот пароль, который использовался при первом шифровании файла. После проверки пароля содержимое файла будет сохранено на диск в виде незашифрованных данных.
Использование нескольких паролей
Ansible поддерживает для хранилища несколько паролей, сгруппированных по разным идентификаторам. Это полезно, если вы хотите иметь выделенные пароли хранилища для различных сред – для разработки, тестирования и производства.
Чтобы создать новый зашифрованный файл с пользовательским идентификатором хранилища, включите параметр –vault-id вместе с меткой и расположением, где ansible-vault может найти пароль для этого хранилища. Метка может быть любой, а расположение может быть либо prompt (что означает, что команда должна предложить вам ввести пароль), либо путь к файлу паролей.
Это создаст новый идентификатор по имени dev, который использует prompt для получения пароля. Комбинируя этот метод с файлами переменных группы, вы сможете создать отдельные хранилища для каждой среды приложения:
Мы использовали dev и prod в качестве идентификаторов хранилищ, чтобы продемонстрировать, как вы можете создавать отдельные хранилища для каждой среды. Самостоятельно вы можете создать столько хранилищ, сколько захотите, и использовать любой ID.
Теперь, чтобы просмотреть, отредактировать или расшифровать эти файлы, вам необходимо предоставить тот же ID хранилища и источник пароля вместе с командой ansible-vault:
Использование файла паролей
Если вам нужно автоматизировать процесс инициализации серверов в Ansible с помощью стороннего инструмента, вам потребуется способ ввода пароля хранилища без его запроса. Вы можете сделать это, используя файл паролей через ansible-vault.
Файл паролей может быть простым текстовым файлом или исполняемым скриптом. Если файл является исполняемым, выходные данные, созданные ним, будут использоваться в качестве пароля хранилища. В противном случае в качестве пароля хранилища будет использоваться необработанное содержимое файла.
Чтобы применить файл паролей в ansible-vault, необходимо указать путь к файлу паролей при выполнении любой из команд vault:
Ansible не различает контент, который был зашифрован с помощью prompt, и простой файл пароля при условии, что входной пароль один и тот же. С практической точки зрения это означает, что файл можно зашифровать, используя prompt, а затем создать файл пароля для хранения того же пароля, который использовался в методе prompt. Также верно и обратное: вы можете зашифровать содержимое, используя файл паролей, а затем использовать метод prompt, предоставляя тот же пароль при запросе Ansible.
Для большей гибкости и безопасности, чтобы не хранить свой пароль в текстовом файле, вы можете использовать скрипт Python для получения пароля из других источников. Официальный репозиторий Ansible содержит несколько примеров сценариев, которые вы можете использовать для справки при создании своего скрипта под потребности вашего проекта.
Запуск плейбука с зашифрованными данными
Каждый раз, когда вы запускаете плейбук, в котором используются данные, ранее зашифрованные с помощью ansible-vault, вам нужно будет указывать пароль хранилища в команде playbook.
Если вы использовали параметры по умолчанию и prompt при шифровании данных плейбука, вы можете использовать опцию –ask-vault-pass, чтобы Ansible запрашивал пароль:
Если вы использовали файл пароля вместо prompt, вы должны использовать опцию –vault-password-file:
Если вы используете данные, зашифрованные с помощью ID, вам нужно указать тот же ID хранилища и источник пароля, который вы использовали при первом шифровании данных:
Если вы используете файл пароля с ID, вы должны указать метку, а затем полный путь к файлу пароля в качестве источника:
Если ваш play использует несколько хранилищ, вы должны добавить параметр –vault-id для каждого из них в произвольном порядке:
Устранение неполадок
Заключение
В этом мануале рассматриваются наиболее распространенные команды Ansible, которые вы можете использовать при подготовке серверов. Также вы узнали, как удаленно выполнять команды на ваших нодах, как запускать плейбуки и использовать различные пользовательские настройки.
Существует еще много вариантов команд и флагов, которые могут пригодиться вам в работе с Ansible. Чтобы получить обзор всех доступных опций, вы можете использовать команду help:
Если вы хотите получить более полное представление об Ansible и всех его доступных командах и функциях, обратитесь к официальной документации Ansible.