金鱼哥RHCA回忆录:DO447管理项目和开展作业--创建作业模板并启动作业

举报
金鱼哥 发表于 2022/06/27 17:31:52 2022/06/27
【摘要】 第九章 管理项目和开展作业--创建作业模板并启动作业

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

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


📜官网:

https://docs.ansible.com/ansible-tower/3.8.1/html_zh/userguide/job_templates.html


📜9.2.1 作业模板、项目和清单

在Red Hat Ansible Tower中,作业模板是用来启动运行剧本的作业的模板。作业模板将来自项目的剧本与主机清单、用于身份验证的凭据以及启动Ansible作业运行剧本时使用的其他参数关联起来。用户是否可以启动作业或创建带有特定project和inventory的作业模板,这取决于您为它们分配的角色。当授予Use角色时,用户可以使用作业模板将项目与清单关联起来。

作业模板定义了执行Ansible作业的参数。Ansible作业对一组托管主机执行一个剧本。因此,作业模板必须定义什么项目提供剧本,什么清单包含托管主机列表。

此外,作业模板还必须定义机器凭据,该凭据将用于对托管主机进行身份验证。与项目和清单一样,用户必须具有分配给机器凭据的Use角色,才能将其关联到作业模板。

一旦定义,作业模板允许作业的重复执行,因此是任务的例行执行的理想选择。由于Project、Inventory和Machine Credential参数是作业模板定义的一部分,所以作业每次都将以相同的方式运行。


📜9.2.2 创建作业模板

与其他Ansible Tower资源不同,作业模板并不直接属于某个组织,而是由属于某个组织的项目使用。作业模板与组织的关系由它所使用的项目决定。因此,在创建作业模板时,不需要在组织中拥有Admin角色。相反,您只需要拥有分配给作业模板的项目的Use角色。

由于作业模板必须用Inventory、Project和Machine Credential来定义,因此只有当用户拥有Use角色时,他们才能创建作业模板,这三个Ansible Tower资源中的每个都有一个或多个。下面的步骤详细说明了如何创建一个作业模板,用于在一组被管理的主机上运行一个剧本,重点关注强制性参数(可选参数稍后讨论):

  1. 作为已被分配了Inventory、Project和Machine Credential资源的Use角色的用户登录Ansible Tower web界面

  2. 单击左侧快速导航栏中的“模板”,进入模板管理界面。

  3. 单击+按钮,然后选择Job Template。

  4. 在name字段中为作业模板输入一个名称。

  5. 选择Run作为JOB TYPE。

  6. 指定将针对作业执行的托管主机

​ 1.点击物品栏的放大镜图标。

​ 2.选择所需的清单,然后单击Select。

  1. 指定包含任务将执行的剧本的项目。

​ 1.单击PROJECT字段的放大镜图标

​ 2.选择所需的项目,然后单击Select。

  1. 指定作业将执行的剧本。

​ 1.单击PLAYBOOK字段的下拉菜单。列出了在前一个字段中选择的“项目”中包含的所有剧本。

​ 2.选择所需的剧本。

  1. 指定对托管主机进行身份验证所需的凭据。

​ 1.单击CREDENTIAL字段的放大镜图标

​ 2.选择所需的凭证,然后单击Select

  1. 从下拉菜单中为verbose字段选择所需的设置。这将确定在作业运行的输出中生成的详细信息级别。
  2. 单击SAVE以完成新Job Template的创建。
    在这里插入图片描述

📜9.2.3 修改作业执行

当模板启动时,你可以使用其他设置来调整Ansible Tower如何运行剧本:

📑DESCRIPTION

该字段用于存储作业模板的可选描述。


📑FORKS

使用这个字段来指定fork设置,该设置控制在剧本执行期间允许的并行进程的数量。这相当于ansible-playbook命令的-f或 --forks选项。如果值为0,则使用Ansible配置文件中的默认设置。


📑LIMIT

使用此字段可以限制作业模板清单中提供的托管主机列表。过滤是通过为该字段提供一个主机模式作为值来完成的。这相当于ansible-playbook命令的-l或-limit选项。


📑JOB TAGS

该字段接受剧本中存在的以逗号分隔的标签列表。标记用于识别剧本的不同部分。通过在该字段中指定标记列表,您可以选择性地只执行剧本的某些部分。这相当于ansible-playbook命令的-t或tags选项。


📑SKIP TAGS

该字段接受剧本中存在的以逗号分隔的标记列表。通过在该字段中指定一个标记列表,您可以有选择地在执行过程中跳过剧本的某些部分。这相当于ansible-playbook命令的–skip-tags选项。


📑LABELS

标签是可以附加到“作业模板”上的名称,以帮助您对“作业模板”进行分组或筛选。


📑Enable Privilege Escalation

启用此复选框后,将使用升级特权执行剧本。这相当于ansible-playbook命令的–become选项。


📑Allow Provisioning Callbacks

启用后,该复选框将导致在Ansible Tower上创建一个供应回调URL,主机可以使用该URL请求使用Job Template进行配置更新。


📑Enable Concurrent Jobs

启用时,此复选框允许多次同时执行此作业模板。


📑Use Fact Cache

当启用时,该复选框将导致使用缓存的事实,并将新发现的事实存储在Ansible Tower的事实缓存中。事实缓存将在本课程的后面进行更详细的讨论。


📑EXTRA VARIABLES

与ansible-playbook命令的-e或–extra-vars选项相同,该字段可用于将额外的命令行变量传递给作业执行的playbook。这些额外的变量被定义为使用YAML或JSON的键/值对。


📜9.2.4 作业参数提示

当使用ansible-playbook命令从命令行执行剧本时,管理员可以通过使用命令行选项来修改剧本的执行。Ansible Tower允许作业模板中的某些参数在作业执行时提示用户输入,从而实现了这种灵活性。这个启动提示选项适用于:

• JOB TYPE

• INVENTORY

• CREDENTIAL

• LIMIT

• VERBOSITY

• JOB TAGS

• SKIP TAGS

• EXTRA VARIABLES

在作业执行时更改作业参数的灵活性鼓励了剧本的重用。例如,与其创建多个作业模板来在不同的托管主机上运行相同的剧本,不如为Inventory字段启用Prompt on launch选项的单个作业模板就足够了。当作业启动时,执行作业的用户可以选择指定一个Inventory来执行剧本。当出现提示时,用户只能从inventory中选择分配给他们Use角色的对象。
在这里插入图片描述


📜9.2.5 作业模板的角色

有三种角色用于控制用户对作业模板的访问。

📑Admin

Admin角色为用户提供了删除作业模板或编辑其属性(包括其关联权限)的能力。此角色还授予与作业模板Execute和Read角色关联的权限。


📑Execute

“执行”角色授予用户使用“作业模板”执行作业的权限。它还授予Users使用作业模板调度作业的权限。此角色还授予与“作业模板读取”角色关联的权限


重要:作业模板利用了其他Ansible Tower资源,如项目、清单和凭据。对于使用作业模板执行作业的用户,他们只需要在作业模板上分配execute角色,而不需要将Use角色分配给任何这些关联的Ansible Tower资源。


📑Read

“Read”角色赋予用户以只读权限查看作业模板的属性。它还授予查看与作业模板相关的其他信息的访问权,例如使用作业模板执行的作业列表,以及它的相关权限和通知。


📜9.2.6 管理作业模板访问

第一次创建作业模板时,只有创建该作业模板的用户或在创建项目所在的组织中具有Admin或Auditor角色的用户才能访问该作业模板。如果需要,必须特别配置其他访问

将前面讨论的作业模板角色分配给用户或团队,规定了谁拥有作业模板的权限。在创建作业模板时不能分配这些权限。它们是在通过编辑作业模板创建作业模板之后进行管理的。

角色是通过Job Template编辑器屏幕的PERMISSIONS部分分配的。作业模板创建完成后,请按照以下步骤对其进行权限授予。

  1. 以作业模板关联的组织中具有“Admin”角色的用户或创建该作业模板的用户登录。

  2. 单击左侧快速导航栏中的“TEMPLATES”,显示模板列表。

  3. 击要编辑的作业模板的铅笔图标,进入作业模板编辑器屏幕。

  4. 在Job Template编辑器屏幕上,单击PERMISSIONS按钮进入权限编辑器。

  5. 单击+按钮添加权限。

  6. 在用户和团队选择屏幕中,单击USERS或TEAMS,然后选择要授予权限的用户或团队。

  7. 单击KEY显示Job Template角色及其定义列表。

  8. 单击SELECT ROLES下拉菜单,为每个用户或团队选择所需的Job Template角色。

  9. 单击SAVE以完成对权限的更改
    在这里插入图片描述


📜9.2.7 启动工作

一旦创建了作业模板,就可以使用它来使用以下过程启动作业。

1.使用“任务模板”中具有“执行角色”的用户登录

2.单击左侧快速导航栏中的Templates查看模板列表。

3.在模板列表中找到想要的作业模板,并单击ACTIONS列下的火箭图标来启动作业。

4如果任何Job Template参数都启用了Prompt on launch选项,那么在作业执行之前会提示您输入。为提示的每个参数输入所需的输入,并单击LAUNCH以启动作业。
在这里插入图片描述


📜9.2.8 评估作业的结果

当一个作业从Ansible Tower web界面中的作业模板启动后,用户会自动重定向到该作业的详细信息页面。用户还可以通过点击左侧快速导航栏中的job来浏览已执行的作业列表,然后单击感兴趣的作业链接,从而导航到相同的页面。

作业详细信息页面分为两个窗格。DETAILS窗格显示作业参数的详细信息,而作业输出窗格显示作业执行的剧本的输出。

虽然作业输出窗格中的输出与使用ansible-playbook命令在命令行上执行剧本所生成的输出类似,但它还提供了几个附加特性。作业输出窗格的顶部是一个摘要,详细说明了执行的剧本和任务的数量、执行作业的主机数量以及作业执行所需的时间。此外,还提供了用于将该窗格最大化为全屏幕大小的控件,以及用于下载作业执行的输出。

在输出部分的左侧,可以使用+和-控件展开或折叠剧本中每个任务的输出。在输出部分的右边是用于滚动输出以及跳转到输出的开始和结束的控件
在这里插入图片描述


📜9.2.9 课本练习

[student@workstation ~]$ lab provision-job start

📑1. 以admin帐号和redhat密码登录Ansible Tower web。


📑2. 创建一个名为DEV webservers setup的新作业模板。

在这里插入图片描述
在这里插入图片描述


📑3. 在DEV webservers setup上设置Developers团队Admin角色。

3.1 单击PERMISSIONS按钮以管理作业模板的权限。

3.2 单击右边的+按钮添加权限。

3.3 单击TEAMS可显示可用球队列表。

3.4 在第一部分中,勾选开发人员团队旁边的复选框。这将导致团队显示在第一部分下面的第二部分中

3.5 在下面的第二节中。从下拉菜单中选择Admin角色。

3.6 单击SAVE进行角色分配。这将把您重定向到权限列表或作业模板,DEV webservers setup,现在显示开发团队的所有成员都被分配了作业模板上的管理员角色。
在这里插入图片描述


📑4. 作为开发者团队的一员,使用作业模板 DEV webservers setup启动一个Job。

4.1 单击右上角的“退出”图标,退出并以daniel的身份使用密码redhat123重新登录。

4.2 在左侧导航栏中,单击“模板”快速导航链接。

4.3 在与作业模板,DEV webservers setup相同的一行上,点击右边的火箭图标来启动作业。这会将您重定向到正在运行的作业的详细状态页

4.4 观察正在运行的作业的实时输出一分钟

4.5 检查DETAILS部分中Job的STATUS是否显示Successful。
在这里插入图片描述


📑5. 验证web服务器已经启动并在服务器上运行。

[student@workstation ~]$ curl servera
This is a test message RedHat 8.0 <br>
Current Host: servera <br>
Server list: <br>
serverb.lab.example.com <br>
servera.lab.example.com <br>

[student@workstation ~]$ curl serverb
This is a test message RedHat 8.0 <br>
Current Host: serverb <br>
Server list: <br>
serverb.lab.example.com <br>
servera.lab.example.com <br>

📑6. 明确拉取代码。

[student@workstation ~]$ cd ~/git-repos
[student@workstation git-repo]$ git clone  http://git@git.lab.example.com:8081/git/my_webservers_DEV.git
[student@workstation git-repo]$ cd my_webservers_DEV
[student@workstation my_webservers_DEV]$ git pull
Already up to date.

📑7. 模拟代码更新。

[student@workstation my_webservers_DEV]$ cp -R -v ~/DO447/labs/provision-job/* .
'/home/student/DO447/labs/provision-job/ansible-vsftpd.yml' -> './ansible-vsftpd.yml'
'/home/student/DO447/labs/provision-job/ftpclient.yml' -> './ftpclient.yml'
'/home/student/DO447/labs/provision-job/site.yml' -> './site.yml'
'/home/student/DO447/labs/provision-job/templates' -> './templates'
'/home/student/DO447/labs/provision-job/templates/vsftpd.conf.j2' -> './templates/vsftpd.conf.j2'
'/home/student/DO447/labs/provision-job/vars' -> './vars'
'/home/student/DO447/labs/provision-job/vars/defaults-template.yml' -> './vars/defaults-template.yml'
'/home/student/DO447/labs/provision-job/vars/vars.yml' -> './vars/vars.yml'
[student@workstation my_webservers_DEV]$ git add --all
[student@workstation my_webservers_DEV]$ git commit -m "Adding playbooks"
[student@workstation my_webservers_DEV]$ git push

📑8. 触发My webservers DEV项目的SCM更新。

8.1 回到Ansible Tower的网页界面。您应该仍然以daniel用户登录

8.2 在左侧导航栏中,单击project快速导航链接。

8.3 在My webservers DEV项目一行中,单击双箭头图标。

8.4 观察更新并等待几秒钟。在项目列表中,我的webservers DEV项目左侧有一个状态图标。此图标开始时为白色,失败时为红色,并带有感叹号(!),成功时为绿色

8.5 点击注销图标退出Ansible Tower的web界面。
在这里插入图片描述


📑9. 以admin帐号和redhat密码登录Ansible Tower web。


📑10. 创建一个新的作业模板,名为DEV ftpservers setup

在这里插入图片描述

注意:My webservers DEV项目提供了额外的剧本供您选择,因为您已经将额外的Ansible剧本和模板推到作为项目远程源代码的同一个Git存储库中。
在这里插入图片描述


📑11. 在作业模板DEV ftpservers setup中赋予Developers团队Admin角色。

在这里插入图片描述


📑12. 作为开发团队的一员,使用作业模板DEV ftpservers setup启动作业。

12.1 单击右上角的“注销”图标,注销并以daniel的身份登录,密码为redhat123

12.2 在左侧导航栏中,单击Templates快速导航链接

12.3 在Job Template DEV ftpservers setup的同一行,单击右侧的火箭图标启动Job。这会将您重定向到正在运行的作业的详细状态页。

12.4 观察正在运行的作业的实时输出一分钟。

12.5 检查DETAILS部分中Job的STATUS是否显示Successful。
在这里插入图片描述


📑13. 确认FTP服务器已经启动并在服务器上运行。

[student@workstation ~]$ nc servera 21
220 (vsFTPd 3.0.3)
^C
[student@workstation ~]$ nc serverb 21
220 (vsFTPd 3.0.3)
^C

📑14. 点击注销图标退出Ansible Tower的web界面。


📚9.3 章节实验

此实验不做笔记,自行进行练习。

[student@workstation ~]$ lab provision-review start

📑1. 按要求创建项目

ssh://git.lab.example.com/var/opt/gitlab/git-data/repositories/git/my_webservers_TEST.git

在这里插入图片描述


📑2. 按要求授权

在这里插入图片描述


📑3. 按要求创建作业模板

在这里插入图片描述
在这里插入图片描述


📑4. 按要求授权。

在这里插入图片描述


📑5. 更新代码。

[student@workstation ~]$ cd ~/git-repos
[student@workstation git-repos]$ git clone  http://git.lab.example.com:8081/git/my_webservers_TEST.git
[student@workstation git-repos]$ cd my_webservers_TEST
[student@workstation my_webservers_TEST]$ vim templates/index.html.j2
{{ apache_test_message }} {{ ansible_distribution }} {{ ansible_distribution_version }} <br>
Current Memory: {{ ansible_facts.memtotal_mb }} <br>
Current Free Memory: {{ ansible_facts.memfree_mb }} <br>
Current Host: {{ ansible_hostname }} <br>
Server list: <br>
{% for host in groups['all'] %}
{{ host }} <br>
{% endfor %}

[student@workstation my_webservers_TEST]$ git add templates/index.html.j2
[student@workstation my_webservers_TEST]$ git commit -m "Added Ansible facts"
[student@workstation my_webservers_TEST]$ git push

📑6. 更新项目并启动作业。

在这里插入图片描述
在这里插入图片描述


📑7. 验证。

[student@workstation ~]$ curl serverc
This is a test message RedHat 8.0 <br>
Current Memory: 821 <br>
Current Free Memory: 197 <br>
Current Host: serverc <br>
Server list: <br>
serverd.lab.example.com <br>
serverc.lab.example.com <br>

[student@workstation ~]$ curl serverd
This is a test message RedHat 8.0 <br>
Current Memory: 821 <br>
Current Free Memory: 195 <br>
Current Host: serverd <br>
Server list: <br>
serverd.lab.example.com <br>
serverc.lab.example.com <br>

8. 评分。

[student@workstation ~]$ lab provision-review grade


💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第九章 管理项目和开展作业–创建作业模板并启动作业 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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