金鱼哥RHCA回忆录:DO447管理任务执行--运行选定的任务

举报
金鱼哥 发表于 2022/06/10 18:45:35 2022/06/10
【摘要】 第三章 管理任务执行--运行选定的任务

🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥


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

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

💾红帽认证专栏系列:
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章收录在RHCA专栏:RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。