Ansible 中确实已经为您构建了一个完整的标记机制。
您可以只运行带有一个或多个标签的任务:
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-inheritance
还有一组特殊标签:
always, 始终运行,除非通过以下方式特别跳过--skip-tags always
never, 永远不会运行,除非特别请求该任务的另一个标签
以及一组特殊的关键字
tagged, 如果您想将所有标记的任务定位于--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