Цель: Есть директория «/opt/application«, в которую скачивается архив с приложением и распаковывается в директорию, где в качестве имени используется короткая производная от HASH коммита (8 символов). И создается символическая ссылка на данную директорию. Необходимо хранить только 3 последних версии приложения, как директорий, так и архивов, а так же не удалять директории которые называются: logs media …
Продолжить читать "Ansible — Хранить N последних директорий и артефактов"
К примеру есть инстанс, на котором установлен Python 2-ой и 3-ей версий, но по умолчанию используется 2-ая, и чтобы не менять версию по умолчанию и запустить Playbook используя Python3, можно воспользоваться следующей командой: Так же можно указать интерпретатор в инвентори файле: Убедитесь, что для нужной версии Python установлен Ansible модуль
Для того, чтобы создать из шаблона файл и сразу его сохранить как «Pretty JSON» можно воспользоваться модулем «copy» с ключем «content«. К примеру сохраним шаблон «config.j2» как файл «/app/config.json» Playbook:
При попытке получить значение с AWS SSM Ansible Playbook используя в качестве интерпретатора Python3 выдает следующую ошибку: fatal: [localhost-py3]: FAILED! => {«changed»: false, «msg»: «AnsibleError: An unhandled exception occurred while templating ‘{{ lookup(‘aws_ssm’, ‘server_listeners’, decrypt=false, region=’eu-west-1′) }}’. Error was a <class ‘ansible.errors.AnsibleError’>, original message: An unhandled exception occurred while running the lookup plugin ‘aws_ssm’. Error …
Продолжить читать "FIX ERROR — Ansible AWS SSM: AnsibleError: An unhandled exception occurred while templating"
Пример, как получить IP адрес другого хоста с «hosts» файла, выполняя задачу на другом хосте. server1 — на нем будет выполнятся наш Playbook server2 — его IP адрес нам нужен в Playbook‘е hosts: Для того, чтобы получить IP адрес, мы будем использовать «hostvars«, где укажем имя нужного нам сервера, в нашем случае …
Продолжить читать "Ansible — Получить IP адрес другого хоста с hosts файла"
Есть «hosts» файл, в котором есть группа «db«. Это инстансы с базами данных, которые выполняют разную роль. Цель добавить тип роли в «hosts» файл, чтобы потом это значение мы могли использовать в цикле, который будет выполнятся совершенно на другом хосте, к примеру «management» Исходный «hosts» файл: Добавим ключ «role» с нужным значением …
Продолжить читать "Ansible — Использовать значения в цикле с hosts файла на другом хосте"
Есть «hosts» файл, в котором в группе «db» есть N количество хостов, нужно в плейбуке автоматически задавать переменную, равную количеству хостов в определенной группе hosts example.yaml
Пример Ansible Playbook‘а для копирования файла конфигурации с одного хоста на другой, в данном случае с «openvpn_server» на «openvpn_client» Для этого на всех хостах должен быть установлен пакет «rsync«
Данный Playbook отключает Swap и удаляет его из файла «/etc/fstab» swap_disable.yaml Применяем Playbook:
За основу был взят следующий Playbook. Данный Playbook запускается на группе хостов «docker«, устанавливает необходимые пакеты для Docker‘а, добавляет Docker репозиторий, устанавливает Docker, запускает его и добавляет в автозапуск. Так же добавляет пользователя «artem» в группу «docker» docker.yaml Применяем Playbook: