Linux自动化运维(Shell与Ansible)(微课版) 课件 11-5-集合简介_第1页
Linux自动化运维(Shell与Ansible)(微课版) 课件 11-5-集合简介_第2页
Linux自动化运维(Shell与Ansible)(微课版) 课件 11-5-集合简介_第3页
Linux自动化运维(Shell与Ansible)(微课版) 课件 11-5-集合简介_第4页
Linux自动化运维(Shell与Ansible)(微课版) 课件 11-5-集合简介_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

角色和集合任务5:集合简介目录/Contents01020304集合的基本概念集合路径集合的目录结构安装集合05在Playbook中使用集合01集合基本概念集合基本概念Ansible自动化内容通常以Playbook或者角色的形式进行组织和共享。随着Ansible的发展和应用场景的增多,这种方式已经变得不够灵活,也不便于扩展。Ansible集合提供了一种新的打包和分发Ansible内容的格式以及组织和共享Ansible内容的方法。一个集合可以包含多个Ansible角色、模块、插件、Playbook等,这些内容可以组合在一起,形成一个单一的打包文件。集合提供了更好的版本控制和依赖管理功能,使用户可以更轻松地构建、共享和重复使用自动化任务和解决方案。Ansible2.9及之后的版本支持Ansible集合。在AnsibleBase2.10和AnsibleCore2.11中,上游Ansible将大多数模块从核心Ansible代码中拆分出来,并将它们放入集合。红帽AnsibleAutomationPlatform(AAP)2.2基于AnsibleCore2.13提供自动化执行环境,继承了集合这一功能。集合可以由任何人创建,可以是公共的或私有的,并通过发行服务器(如AnsibleGalaxy服务器)进行共享和分发。公共集合可以在AnsibleGalaxy上找到并安装,而私有集合可以通过私有AutomationHub实例进行分发。集合还可以在红帽自动化中心(RedHatAutomationHub)上进行认证。经过红帽测试和认证后的集合,可作为企业级自动化解决方案的一部分。02集合路径集合路径在Ansible中,集合路径用于指定Ansible应该在哪些目录中查找集合。默认情况下,Ansible会在以下目录中查找集合。/usr/share/ansible/collections~/.ansible/collections./collections其中,/usr/share/ansible/collections目录是系统级别的集合目录;~/.ansible/collections目录是用户级别的集合目录;./collections目录是当前工作目录中的集合目录。如果要将额外的集合路径添加到搜索路径中,则可以在ansible.cfg文件中指定collections_path选项来添加,它可以包含一个或多个以冒号分隔的目录路径。在查找集合时,Ansible将按照指定的顺序搜索这些目录,并加载找到的第一个匹配的集合。如果未指定此选项,则使用默认的集合路径。[defaults]collections_path=/path/to/extra/collections:/another/path/to/collections上述示例将添加/path/to/extra/collections和/another/path/to/collections两个目录到集合路径中。在搜索集合时,Ansible将按照指定的顺序查找这些目录。集合路径collections_scan_sys_path选项用于设置是否在系统路径中扫描集合。如果将其设置为False,则Ansible不会在系统路径中扫描集合。如果未指定此选项,则默认为True。以下示例禁用了在系统路径中扫描集合。[defaults]collections_scan_sys_path=False需要注意的是,如果禁用了在系统路径中扫描集合,则必须将所有需要使用的集合都添加到collections_path中,否则Ansible将无法找到这些集合。在使用AnsibleGalaxy安装集合时,可以使用-p或--collections-path参数指定集合安装路径。ansible-galaxycollectioninstallcommunity.general-p/path/to/collections03集合目录结构集合目录结构集合是一种可重用的Ansible内容,它包含模块、插件、角色和其他相关内容。在集合的根目录下有一个名为galaxy.yml的文件,这个文件包含AnsibleGalaxy和其他工具打包、构建及发布集合所需的所有元数据。常见的Ansible集合目录结构如下。collection/├──docs/├──galaxy.yml├──meta/│└──runtime.yml├──plugins/│├──modules/││└──module1.py│├──inventory/│└──.../├──README.md├──roles/│├──role1/│├──role2/│└──.../├──playbooks/│├──files/│├──vars/│├──templates/│└──tasks/└──tests/集合目录结构集合的主要目录和文件。序号主要目录和文件描述1galaxy.ymlgalaxy.yml文件必须包含在集合的根目录下,用于定义集合的元数据信息,如名称、版

本、作者、许可证等2docsdocs目录包含集合的文档及示例3pluginsplugins目录包含集合的插件,如模块、过滤器、动态发现脚本等4rolesroles目录包含集合内的所有角色,每个角色都有一个独立的目录,包含该角色的所有文件和目录,如任务、变量、模板等5playbooksplaybooks目录包含集合的Playbook,每个Playbook都是一个独立的YAML文件6teststests目录包含集合的测试文件,测试文件可以用于单元测试、集成测试等7metameta目录包含关于集合的元数据信息,如依赖、支持的平台等8runtime.ymlruntime.yml文件包含运行时配置信息,如要求的Ansible版本、依赖关系等04安装集合安装集合默认情况下,ansible-galaxycollectioninstall使用

作为AnsibleGalaxy服务器。如果使用非默认的AnsibleGalaxy服务器,则需要在ansible.cfg中配置AnsibleGalaxy服务器列表,或者使用--server命令行参数在server_list中选择一个显式的AnsibleGalaxy服务器,并且该参数的值应与服务器的名称匹配。如果使用的服务器不在服务器列表中,则需要将该值设置为访问该服务器的URL,服务器列表中的所有服务器都将被忽略。[galaxy]#取消此注释以使用用户自己的AnsibleGalaxy服务器#server_list=:80,#server_list=#使用默认AnsibleGalaxy服务器server_list=[galaxy]server_list=my_org_hub,release_galaxy,test_galaxy,my_galaxy_ng[galaxy_server.my_org_hub]url=https://automation.my_org/username=my_userpassword=my_pass[galaxy_server.release_galaxy]url=/token=my_tokenansible-galaxy安装集合从AnsibleGalaxy中安装集合时,可以使用以下命令:ansible-galaxycollectioninstallmy_namespace.my_collection将集合升级为AnsibleGalaxy服务器上最新的可用版本时,可以使用--upgrade选项:ansible-galaxycollectioninstallmy_namespace.my_collection--upgradeansible-galaxy命令还可以从本地或远程tar归档文件或Git存储库中安装集合。Git存储库必须有一个有效的galaxy.yml或MANIFEST.json文件,用于提供有关集合的元数据,如其名称空间和版本号。从本地tar归档文件中安装集合:ansible-galaxycollectioninstallmy_namespace-my_collection-1.0.0.tar.gz-p./collections在上述示例中,已经在本地构建了一个名为my_namespace.my_collection的集合,并将其打包成一个名为my_namespace-my_collection-1.0.0.tar.gz

的tar

归档文件。使用上述命令,可将此归档文件安装到Ansible集合路径的./collections目录中。ansible-galaxy安装集合从远程Git存储库中安装集合:ansible-galaxycollectioninstallgit+/ansible-collections/community.general.git,master默认情况下,ansible-galaxy会安装最新可用版本,如果要安装特定版本,则可以添加版本范围标识符,如要安装3.4.3版本的community.docker集合:[rhce@controlproject]$ansible-galaxycollectioninstallcommunity.docker:==3.4.3-p./collectionsStartinggalaxycollectioninstallprocessProcessinstalldependencymapStartingcollectioninstallprocessDownloading/download/community-docker-3.4.3.tar.gzto/home/rhce/.ansible/tmp/ansible-local-1650348s3o31sya/tmpeetss6is/community-docker-3.4.3-m7sxdaswInstalling'community.docker:3.4.3'to'/home/rhce/.ansible/collections/ansible_collections/community/docker'community.docker:3.4.3wasinstalledsuccessfully通过requirements.yml文件安装角色如果自动化项目需要额外的ansible内容集合,则可以在项目目录中创建一个collections/requirements.yml文件,在其中列出项目所需的所有集合。自动化控制器会检测到该文件,并在执行Playbook之前自动安装指定的集合。requirements.yml文件是一个YAML文件,其中包含一个名为collections的字典键,它的值是要安装的集合列表,每个列表项还可以指定要安装的集合的特定版本。安装集合示例如下。---collections:-name:community.mysql-name:awx.awxversion:22.2.0-name:/opt/ansible/download/community-zabbix-2.0.0.tar.gz-name:http://www.opencloud.fun/collections/prometheus-0.5.0.tar.gz-name:git+/ansible-collections/community.general.gitversion:main通过requirements.yml文件安装角色ansible-galaxy命令可以使用collections/requirements.yml文件来安装所有这些集合。使用-r或--requirements-file选项指定requirements.yml文件,并使用-p或--collections选项将Ansible内容集合安装到collections目录中。[rhce@controlproject]$ansible-galaxycollectioninstall-rcollections/requirements.yml-p./collections在ansible.cfg文件中,可以指定一个或多个集合源,以定义ansible-galaxy命令从哪里获取Ansible内容集合,具体示例如下。[galaxy]server_list=/api,galaxy[galaxy_server.release_galaxy]url=/token=my_token[galaxy_server.my_galaxy_ng]url=http://my_galaxy_ng:8000/api/automation-hub/auth_url=http://my_keycloak:8080/auth/protocol/openid-connect/tokenclient_id=galaxy-ngtoken=my_keycloak_access_token在上述示例中,[galaxy]配置段使用server_list选项指定了两个集合源,分别是私有/api和galaxy,ansible-galaxy命令将按照配置的顺序依次尝试这些集合源来获取所需的Ansible内容集合。05在Playbook中使用集合在Playbook中使用集合通过完全限定集合名称引用集合内容将Ansible集合安装到自动化项目中以后,可以使用集合中的模块、角色及插件来执行任务,需要在Playbook中指定集合的名称、模块或角色的名称。示例代码如下。-na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论