Цель: Есть директория "/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: