Я пишу книгу, в которой я автоматизирую развертывание. В командной строке я передаю некоторые параметры, которые должны быть проверены в обязательном порядке. Я использую роли / теги для запуска моей книги. Ниже моя команда -
ansible-playbook -i my-inventory my-main.yml --tags=copy,deploy -e my_release_version=1.0.0 -e target_env=prod
В my-main.yml я сначала проверяю параметры, а затем выполняю роли. Теперь, если я передаю теги в команде, она не выполняет никакой проверки и непосредственно выполняет теги, что, как я думаю, работает ansible.
Есть ли способ предварительного выполнения шагов, как указано в my- main.yml перед выполнением тегов?
, а my-main.yml выглядит следующим образом -
- hosts: localhost
connection: local
gather_facts: no
vars:
_allowed_envs:
- dev
- preprod
- prod
pre_tasks:
- name: Checking if the Target Environment is ok
fail:
msg: >-
Environment "{{ target_env }}" is not allowed.
Please choose a target environment from "{{ _allowed_envs | join(', ') }}"
when: not target_env in _allowed_envs
run_once: true
roles:
- role: copy
tags:
- copy
- role: deploy
tags:
- deploy
ПРИМЕЧАНИЕ. Моя книга воспроизведения будет иметь роли / теги, такие как копирование, развертывание, а также stoptomcat, StartTomcat. Поэтому, когда пользователь упоминает только такие теги, как stoptomcat и starttomcat, я просто хочу, чтобы один входной параметр был проверен target_env, потому что в этом случае я бы не хотел my_release_version.
Любая помощь приветствуется.