DO447管理任务执行–运行选定的任务
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章(第三章 管理任务执行–运行选定的任务 )收录在RHCA专栏:RHCA 回忆录
📜3.1 标签ANSIBLE资源
当使用大型或复杂的剧本时,可能只想运行剧本或任务的一个子集。将标记应用于您可能想要跳过或运行的特定资源。标签是play或任务等合理资源上的文本标签。要标记资源,请在资源上使用tags关键字,然后是要应用的标记列表。
当使用ansible-playbook运行一个playbook时,使用 --tags选项来过滤这个playbook,并只执行特定的带标签的play或任务。标签可用于以下资源:
标记每一个任务。这是使用标签最常用的方法之一。
给整个剧本戏贴上标签。在play中使用tags指令。
当在剧本中包含一个任务文件时,该任务可以被标记,从而允许管理员为include_tasks加载的任务设置全局tag:
在roles部分标记一个角色。角色中的所有任务都与这个标记相关联。在本例中,角色数据库有两个标记的列表,分别是production和staging。
标记一个任务块。块中的所有任务都与这个标记相关联。在本例中,我们将所有与httpd相关的任务分组在webserver标记下。
**重要:**当roles或include_tasks语句被taged时,tag并不是排除包含文件中包含的一些标记任务的方法。相反,在这个上下文中的tag是一种将全局tag应用到所有任务的方法。
📜3.2 管理标签资源
使用ansible-playbook命令运行带有特定tag的任务,使用 --tags选项,或者使用 --skip-tags选项跳过带有特定标记的任务。
下面的剧本包含两个任务。第一个任务使用webserver标记进行tag。第二个任务没有任何关联的tag。
要只运行第一个任务,可以使用 --tags参数:
因为指定了 --tags选项,所以playbook只运行带有webserver标签。
为 --tags指定多个标签,以逗号分隔的列表:
[user@demo ~]$ ansible-playbook main.yml --tags install,setup
使用 --skip-tags选项跳过带有特定标记的任务,只运行没有该标记的任务:
要列出剧本中存在的所有标记,请将 --list-tags选项传递给ansible-playbook命令。例如:
📜3.3 特殊标签
Ansible有一个特殊的方法,可以在剧本中分配:always.。标记了always的资源将始终运行,即使它与传递给 --tags的标签列表不匹配。唯一的例外是使用 --skip-tags always选项显式跳过它。
使用never特殊标记标记的任务不会运行,除非您将 --tags选项设置为never或与该任务关联的另一个tag运行playbook。
有三个额外的特殊tag:
-
tagged的标记将使用显式标记运行任何资源。
-
未标记的tag将运行任何没有显式tag的资源,并排除所有标记的资源。
-
all tag将包含play中的所有任务,无论他们是否有tag。这是Ansible的默认行为。
📜详细参考官网
https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html
ansible-playbook offers five tag-related command-line options:
- –tags all - run all tasks, ignore tags (default behavior)
- –tags [tag1, tag2] - run only tasks with the tags tag1 and tag2
- –skip-tags [tag3, tag4] - run all tasks except those with the tags tag3 and tag4
- –tags tagged - run only tasks with at least one tag
- –tags untagged - run only tasks with no tags
📜3.4 课本练习
[student@workstation ~]$ lab task-tagging start
📑拉取实验代码
[student@workstation ~]$ mkdir -p /home/student/git-repos/
[student@workstation ~]$ cd git-repos/
[student@workstation git-repos]$ git clone http://git.lab.example.com:8081/git/task-tagging.git
[student@workstation git-repos]$ cd task-tagging
📑编写测试剧本
[student@workstation task-tagging]$ vim test_webapp.yml
---
- name: Web application smoke test
hosts: web_servers
gather_facts: no
tasks:
- name: Verify content of http://localhost
uri:
url: http://localhost
return_content: yes
register: test_url
failed_when: "'Hello from' not in test_url.content"
tags:
- tests
[student@workstation task-tagging]$ cat site.yml
- name: Deploy HAProxy
import_playbook: deploy_haproxy.yml
- name: Deploy Web Server
import_playbook: deploy_apache.yml
- name: Deploy Web App
import_playbook: deploy_webapp.yml
- name: Test deployed Web App
import_playbook: test_webapp.yml
测试运行
[student@workstation task-tagging]$ ansible-playbook site.yml --tags tests
TASK [Verify content of http://localhost] ****************************************************************************
fatal: [serverc.lab.example.com]: FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"}, "changed": false, "content": "", "elapsed": 0, "failed_when_result": true, "msg": "Status code was -1 and not [200]: Request failed: <urlopen error [Errno 111] Connection refused>", "redirected": false, "status": -1, "url": "http://localhost"}
fatal: [serverb.lab.example.com]: FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"}, "changed": false, "content": "", "elapsed": 0, "failed_when_result": true, "msg": "Status code was -1 and not [200]: Request failed: <urlopen error [Errno 111] Connection refused>", "redirected": false, "status": -1, "url": "http://localhost"}
[student@workstation task-tagging]$ ansible-playbook site.yml --skip-tags tests
[student@workstation task-tagging]$ ansible-playbook site.yml --tags tests
📑清除实验
[student@workstation task-tagging]$ lab task-tagging finish
💡总结
RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。
以上就是【金鱼哥】对 第三章 管理任务执行–运行选定的任务 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。
如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!