DO447管理任务执行--运行选定的任务

简介: DO447管理任务执行--运行选定的任务

DO447管理任务执行–运行选定的任务

RHCSA专栏:戏说 RHCSA 认证

RHCE专栏:戏说 RHCE 认证

此文章(第三章 管理任务执行–运行选定的任务 )收录在RHCA专栏:RHCA 回忆录

📜3.1 标签ANSIBLE资源

当使用大型或复杂的剧本时,可能只想运行剧本或任务的一个子集。将标记应用于您可能想要跳过或运行的特定资源。标签是play或任务等合理资源上的文本标签。要标记资源,请在资源上使用tags关键字,然后是要应用的标记列表。

当使用ansible-playbook运行一个playbook时,使用 --tags选项来过滤这个playbook,并只执行特定的带标签的play或任务。标签可用于以下资源:

标记每一个任务。这是使用标签最常用的方法之一。

image-20220410204649173

给整个剧本戏贴上标签。在play中使用tags指令。

image-20220410204733578

当在剧本中包含一个任务文件时,该任务可以被标记,从而允许管理员为include_tasks加载的任务设置全局tag:

image-20220410204753973

在roles部分标记一个角色。角色中的所有任务都与这个标记相关联。在本例中,角色数据库有两个标记的列表,分别是production和staging。

image-20220410204807561

标记一个任务块。块中的所有任务都与这个标记相关联。在本例中,我们将所有与httpd相关的任务分组在webserver标记下。

**重要:**当roles或include_tasks语句被taged时,tag并不是排除包含文件中包含的一些标记任务的方法。相反,在这个上下文中的tag是一种将全局tag应用到所有任务的方法。


📜3.2 管理标签资源

使用ansible-playbook命令运行带有特定tag的任务,使用 --tags选项,或者使用 --skip-tags选项跳过带有特定标记的任务。

下面的剧本包含两个任务。第一个任务使用webserver标记进行tag。第二个任务没有任何关联的tag。

image-20220410204904035

要只运行第一个任务,可以使用 --tags参数:

image-20220410204935173

因为指定了 --tags选项,所以playbook只运行带有webserver标签。

为 --tags指定多个标签,以逗号分隔的列表:

[user@demo ~]$ ansible-playbook main.yml --tags install,setup

使用 --skip-tags选项跳过带有特定标记的任务,只运行没有该标记的任务:

image-20220410204954551

要列出剧本中存在的所有标记,请将 --list-tags选项传递给ansible-playbook命令。例如:

image-20220410205015535


📜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门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第三章 管理任务执行–运行选定的任务 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
5月前
|
SQL 数据采集 DataWorks
DataWorks产品使用合集之依赖脚本实际运行成功了,但其状态却显示为未运行,从而导致下游脚本没有运行,是什么原因
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
人工智能 运维 安全
函数计算产品使用问题之设置了每40分钟运行一次任务,没有按照预期执行,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
运维 监控 关系型数据库
DO447管理任务执行--速度执行优化
DO447管理任务执行--速度执行优化
206 0
DO447管理任务执行--速度执行优化
漏刻有时基础环境状态4个指标选项的更改说明
漏刻有时基础环境状态4个指标选项的更改说明
55 0
|
IDE 测试技术 开发工具
一个方法帮你在正式脚本里添加“子脚本”的运行
一个方法帮你在正式脚本里添加“子脚本”的运行
245 0
|
运维 API 网络安全
DO447管理任务执行--控制任务执行
DO447管理任务执行--控制任务执行
146 0
DO447管理任务执行--控制任务执行
|
测试技术 Python
Python 技术篇-判断指定路径下的文件是否处于打开状态或占用状态实例演示
Python 技术篇-判断指定路径下的文件是否处于打开状态或占用状态实例演示
625 0

热门文章

最新文章