我有一个相当大的剧本,其中包含安装和配置新应用程序的任务,其中一堆仅与初始安装和配置相关的任务,以及一堆仅与后续运行相关的任务。
我想做的是有条件地包含初始安装和配置的任务,并仅在initial-install传递标签时运行这些任务。
例如:
# main.yml
- include: initial_install.yml
when: tag 'initial-install' specified
- include: initial_configuration.yml
when: tag 'initial-install' specified
- include: configure.yml
Run Code Online (Sandbox Code Playgroud)
这是一个简化的示例,但如果我能弄清楚这一点,我应该能够将我的任务列表组织成一种不会运行不必要的任务的格式,除非使用标签运行剧本进行初始安装initial-install。
Ansible 中确实已经为您构建了完整的标记机制。
您可以只运行带有一个或多个标签的任务:
ansible-playbook play.yml --tags "some,tags,here"
Run Code Online (Sandbox Code Playgroud)
其中指定的标签是要运行的所有标签的逗号分隔列表。
或者指定您要跳过的标签
ansible-playbook play.yml --skip-tags "some,tags,here"
Run Code Online (Sandbox Code Playgroud)
您只需将标签指定为您需要的任何任务的列表:
ansible-playbook play.yml --tags "some,tags,here"
Run Code Online (Sandbox Code Playgroud)
对于你的情况,请注意
添加标签:向戏剧或静态导入的任务和角色添加这些标签到所有包含的任务中。
来源:https ://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#tag-inheritance
还有一组特殊标签:
always,总是运行,除非通过专门跳过--skip-tags alwaysnever,永远不会运行,除非特别请求该任务的另一个标签以及一组特殊的关键字
tagged,如果您想将所有标记的任务定位为--tags或--skip-tagsuntagged,如果您想将所有未标记的任务定位为--tags或--skip-tagsall,如果您想将所有任务定位在--tags或--skip-tags这些可以在您的情况下使用:
ansible-playbook play.yml --skip-tags "some,tags,here"
Run Code Online (Sandbox Code Playgroud)
ansible-playbook play.yml
Run Code Online (Sandbox Code Playgroud)
不会运行第一个任务,但会运行最后一个任务。ansible-playbook play.yml --tags "initial-install,all"
Run Code Online (Sandbox Code Playgroud)
将运行所有三个任务。鉴于剧本:
- include: initial_install.yml
tags: initial-install
- include: initial_configuration.yml
tags: initial-install
- include: configure.yml
tags:
- setup
- reconfiguration
- else
Run Code Online (Sandbox Code Playgroud)
这给出了这些输出:
$ ansible-playbook play.yml
PLAY [all] ******************************************************
TASK [debug] ****************************************************
ok: [localhost] =>
msg: configure.yml
PLAY RECAP ******************************************************
localhost : ok=1 changed=0 unreachable=0
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10123 次 |
| 最近记录: |