🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥🎈支持我:可点赞👍、可收藏⭐️、可留言📝
📜12.2.1 动态清单
当Ansible运行剧本时,它使用一个清单来帮助确定哪些主机应该运行剧本。Ansible和Ansible Tower都可以方便地设置主机的静态清单,管理员可以在清单中显式地指定这些主机。
但是,这些静态列表需要手动管理以保持最新。这可能会带来不便或挑战,特别是当组织希望在虚拟化或云计算环境中动态创建的主机上运行剧本时。
在这种情况下,使用动态清单是有用的。动态清单是在运行时动态确定哪些主机和主机组应该在清单中的脚本基于一些外部来源的信息。这些可以包括用于云提供商Cobbler的API,LDAP目录,或其他第三方CMDB软件。在大型且快速变化的IT环境中,使用动态清单是一种推荐的实践,在这种环境中系统经常被部署、测试和删除。
默认情况下,Ansible Tower内置了对许多外部清单源(或云清单源)的动态清单支持,包括:
• Amazon Web Services EC2
• Google Compute Engine
• Microsoft Azure Resource Manager
• VMware vCenter
• Red Hat Satellite 6
• Red Hat CloudForms
• Red Hat Virtualization
• OpenStack
此外,还可以使用Ansible Tower中的自定义动态清单脚本从其他来源访问清单信息。Ansible Tower还允许从使用Git等存储库作为源的项目中检索这些脚本。
本节的其余部分将介绍Ansible Tower中的三个动态清单配置示例。第一个示例介绍了对OpenStack的内置支持。第二个示例简要介绍了内置的对从Red Hat Satellite 6服务器获取信息的支持。第三个示例研究如何使用自定义动态清单脚本。
📜12.2.2 OPENSTACK动态清单
像OpenStack这样的云技术给服务器的生命周期带来了很多变化。主机随时间变化而变化,它们可以由外部应用程序创建和启动。维护一个准确的静态清单文件在任何时间都是一个挑战。因此,基于直接从OpenStack提供的信息动态更新清单是非常有用的。
使用任何内置云源配置动态清单的基本过程都是相似的:
- 使用与源匹配的凭据类型创建凭据,以便对要使用的云数据源进行身份验证
- 创建一个新的清单以提供动态清单信息。
- 在新的清单中,创建一个带有内置动态清单源的Source(而不是Manual)。它还应该使用新的Credential对该源进行身份验证。你可能还想设置其他选项,比如让它在启动时自动更新
- 第一次更新清单中的资源。
这个过程适用于OpenStack的动态清单。下面是创建OpenStack动态目录使用的凭据的示例:
正如您在这张截图中所看到的,您需要提供一些项目。你已经在Ansible Tower中使用了其中的一些对象:名称、描述和组织。唯一的新项是凭据类型。您必须为正在使用的产品选择适当的凭据类型。本例中产品为OpenStack。
OpenStack证书需要一些附加信息:
📑Username
能够访问所需资源的用户
📑Password
对于该用户,或API键
📑Host
要进行身份验证的主机的身份验证URL,例如https://demo.lab.example.com/v2.0/
📑Project
您想要使用的项目(租户)的名称
📑Domain Name
只需要Keystone v3,定义管理边界
这些新创建的凭证将被Ansible Tower清单同步机制使用。创建凭据之后,可以切换到左侧导航栏中的inventory链接。正如你在下面的例子中看到的,你需要创建一个新的清单:
新目录需要一个唯一的NAME,您必须将其分配给现有的ORGANIZATION。保存新的清单配置后,转到清单中的SOURCES进行创建一个新的清单来源。Ansible Tower将该源与现有的OpenStack脚本以及之前创建的凭据一起使用。下面的截图显示了这样一个源的例子:
这个新源代码使用内置的对OpenStack的Ansible Tower支持作为source,并使用您的OpenStack环境的新凭据作为CREDENTIAL。有三个更新选项可供选择:
📑Overwrite
当激活此选项时,目录更新过程将从本地目录中删除所有子组和主机,而在外部源中没有。默认情况下,它是不活动的,这意味着在外部源上没有找到的所有子主机和组保持不变。
📑Overwrite Variables
未激活时,将执行一个合并,将本地变量与外部源上找到的变量合并在一起。否则,当激活时,在外部源上没有找到的所有变量将被删除。
📑Update on Launch
当激活时,每当作业使用此清单运行时,在执行作业任务之前,将从外部源对该清单执行刷新
在清单的源列表中,源名称左侧的小云图标显示了该源的动态清单同步状态。当它是灰色的,没有状态是可用的。要启动同步过程,请单击双箭头图标。同步完成后,同步成功则云图标变为绿色,同步失败则变为红色。
在与外部源成功同步之后,查看在Tower中使用来自外部源的信息创建的子组和主机。子组包含hosts列表中可见的主机。您可以通过单击组名来查看每个子组,以显示该组的内容,并提供与该组相关联的主机列表。每当您将该目录与外部源同步时,该目录都会更新。同步可以手动执行、使用Tower机制调度,也可以在每次使用该清单运行作业时自动执行。
📜12.2.3 Red Hat Satellite 6动态清单
内建动态清单的另一个例子使用了关于向Red Hat Satellite 6服务器注册的主机的信息。使用Red Hat Satellite 6和Ansible Tower的新裸金属服务器的部署和配置工作流程如下所示:
- 新服务器使用PXE的一些组合。DHCP和TFTP从网络或引导ISO引导,以准备从卫星服务器进行无人参与安装或通过卫星的Discovery服务进行安装。
- 新服务器根据卫星服务器提供的材料执行Kickstart安装,并将自己注册到卫星服务器
- 注册后,新服务器将出现在生成的动态目录中红帽卫星信息。现在可以使用Ansible Tower启动使用该清单的各种作业,以确保新服务器被正确配置。
使用Red Hat Satellite 6配置Ansible Tower动态清单与OpenStack场景非常相似。
第一步是创建一个新的凭据。在这种情况下,证书的类型将是Red Hat Satellite 6。需要三个额外的信息:
📑Satellite 6 URL
卫星服务器的URL,例如https://satellite.example.com
📑Username
对于卫星服务器上的用户
📑Password
卫星用户的密码
接下来,在清单中创建一个源,以同步来自Satellite服务器的清单数据。信号源应该设置为使用Red Hat Satellite 6。源的凭据应该设置为您刚刚为Satellite创建的凭据。就像OpenStack动态清单配置一样,三个UPDATE OPTIONS(覆盖。可根据需要选择“覆盖变量”和“启动时更新”。
最后一步是将源与Red Hat Satellite目录源同步,方法与OpenStack目录源一节中所讨论的完全相同。当同步完成时,所有从外部源收集到的信息都可以在Ansible Tower的web界面中以组的形式显示,以及与这些组相关联的主机。
📜12.2.4 自定义动态清单脚本
Ansible允许您编写自定义脚本来生成动态清单。虽然Ansible Tower为许多动态清单源提供了内置支持,但自定义动态清单脚本仍然可以与Ansible Tower一起使用。
📑编写或获取自定义清单脚本
Ansible Tower支持用安装在Ansible Tower服务器上的任何动态语言编写的自定义清单脚本。这至少应该包括Python和Bash。这些脚本以awx用户的身份运行,对Tower服务器的访问受到限制。该脚本必须以适当的shebang行开头(例如,#!/usr/bin/python)。
社区提供了许多与各种外部资源一起使用的自定义清单脚本示例,位于https://github.com/ansible/ansible/tree/devel/contrib/inventory/.。
如果您想编写自己的自定义清单脚本,请访问开发动态清单来源[http://docs.ansible.com/ansible/dev_guide/developing_inventory.html]在Ansible开发指南。当使用--list选项调用动态清单脚本时,它必须以JSON格式输出清单。
这是一个自定义动态清单脚本的输出示例:
正如您在前面的示例中所看到的,每个组可能包含主机列表、潜在的子组、可能的组变量或主机列表。
📑在Ansible Tower中使用自定义清单脚本
当您创建或下载了适当的自定义清单脚本后,您需要将其导入Ansible Tower并配置清单。以下是如何完成这项任务的程序:
要上传自定义清单脚本到Tower,在Ansible Tower的web界面左侧导航栏的清单脚本。单击+按钮添加一个新的自定义清单脚本
在name字段中为自定义清单脚本定义一个新名称,在organization字段中选择一个组织,然后将实际的脚本复制并粘贴到custom script文本框中。单击SAVE按钮。
在Ansible Tower中导入并定义动态清单脚本后,像内置动态清单一样配置它:
- 为动态清单在清单中创建一个新源。将SOURCE设置为Custom Script,将Custom INVENTORY Script设置为刚才导入Ansible Tower的自定义脚本的名称。
- 将源与清单源同步,如针对OpenStack和Red Hat Satellite 6动态清单源所讨论的。
📜12.2.5 课本练习
[student@workstation ~]$ lab advinventory-dynamic start
# 可能环境的IPA安装会出现问题,若出现问题,只能做图形界面上的熟悉。(非常讨厌LDAP ^~^)
# 但我们还是可以达到操作与学习效果,还是得到实验的最终结果。
📑1. 以admin帐号和redhat密码登录Ansible Tower web。
📑2. 添加ldap-freeipa.py自定义清单脚本。
http://materials.example.com/classroom/ansible/ipa-setup/ldap-freeipa.py
可直接输入脚本内容,但也可尝试使用命令行完成这题。
[student@workstation ~]$ wget http://materials.example.com/classroom/ansible/ipa-setup/ldap-freeipa.py
[student@workstation ~]$ tower-cli inventory_script create -n ldap-freeipa.py -d "Dynamic Inventory for IdM Server" --script @/home/student/ldap-freeipa.py --organization Default
Resource changed.
== ===============
id name
== ===============
1 ldap-freeipa.py
== ===============
📑3. 创建一个新的清单称为Dynamic Inventory。
📑4. 添加ldap-freeipa.py脚本作为清单的新源。
📑5. 更新动态清单。
💡总结
RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。
以上就是【金鱼哥】对 第十二章 管理高级清单--创建和更新动态清单 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。
💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录
如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。
如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!