На самом деле существует механизм полной маркировки для вас уже в Ansible.
Вы можете запускать только задачи с одним или несколькими тегами (s ):
ansible-playbook play.yml --tags "some,tags,here"
Где указанные теги являются разделенным запятыми списком всех тегов, которые вы хотите запустить.
Или укажите тег (ы), которые вы хотите пропустить
ansible-playbook play.yml --skip-tags "some,tags,here"
И вы просто указываете свои теги в виде списка для любой задачи, которая вам нужна:
- include: initial_install.yml
tags: initial-install
- include: initial_configuration.yml
tags: initial-install
- include: configure.yml
tags:
- setup
- reconfiguration
- else
В вашем случае учтите, что
Добавление тегов: к игре или статически импортированным задачам и ролям эти теги добавляются ко всем содержащимся в них задачам.
Источник: https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#tag -наследование
Также есть набор специальных тегов :
always
, есть всегда запускается, если специально не пропущено через --skip-tags always
never
, никогда не запускается, если специально не запрашивается другой тег этой задачи
И набор специальных ключевых слов
- * 105 3 *, если вы хотите настроить таргетинг на все задачи с тегами в
--tags
или --skip-tags
untagged
, если вы хотите настроить таргетинг на все задачи без тегов в --tags
или --skip-tags
all
, если вы хотите настроить таргетинг на все задачи в --tags
или --skip-tags
Их можно использовать в вашем случае:
- include: initial_install.yml
tags:
- initial-install
- never
- include: initial_configuration.yml
tags:
- initial-install
- never
- include: configure.yml
tags:
- setup
- reconfiguration
- else
Учитывая сценарий:
- hosts: all
gather_facts: no
tasks:
- debug:
msg: initial_install.yml
tags:
- initial-install
- never
- debug:
msg: initial_configuration.yml
tags:
- initial-install
- never
- debug:
msg: configure.yml
tags:
- setup
- reconfiguration
- else
Это дает следующие результаты:
-
$ ansible-playbook play.yml
PLAY [all] **********************************************************************************************************************
TASK [debug] ********************************************************************************************************************
ok: [localhost] => {
"msg": "configure.yml"
}
PLAY RECAP **********************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
$ ansible-playbook play.yml --tags "initial-install,all"
PLAY [all] **********************************************************************************************************************
TASK [debug] ********************************************************************************************************************
ok: [localhost] => {
"msg": "initial_install.yml"
}
TASK [debug] ********************************************************************************************************************
ok: [localhost] => {
"msg": "initial_configuration.yml"
}
TASK [debug] ********************************************************************************************************************
ok: [localhost] => {
"msg": "configure.yml"
}
PLAY RECAP **********************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0