ansible Galaxy的应用

1 ansible Galaxy介绍

Ansible Galaxy [https://galaxy.ansible.com]是一个Ansible内容公共资源库,这些内容由许许多多Ansible管理员和用户编写。它包含数千个Ansible角色,具有可搜索的数据库,可帮助Ansible用户确定或许有助于他们完成管理任务的角色。Ansible Galaxy含有面向新的Ansible用户和角色开发人员的文档和视频链接。
此外,用于从Ansible Galaxy获取和管理角色的ansible-galaxy命令也可用于为您的项目获取和管理自有的git存储库中的角色

1.1 获取ansible Galaxy帮助

通过Ansible Galaxy网站主页上的Documenttaion标签,可以进入描述如何使用Ansible Galaxy的页面。其中包含了介绍如何从Ansible Galaxy下载和使用角色的内容。该页面也提供关于如何开发角色并上传到Ansible Galaxy的说明。

1.2 浏览ansible Galaxy中的角色

通过Ansible Galaxy网站主页上左侧的Search标签,用户可以访问关于Ansible Galaxy上发布的角色的信息。用户可以使用标记通过角色的名称或通过其他角色属性来搜索Ansible角色。结果按照Best Match分数降序排列,此分数依据角色质量、角色受欢迎程度和搜索条件计算而得

2 ansible Galaxy命令行工具

2.1 从命令行搜索角色

ansible-galaxy search子命令在Ansible Galaxy中搜索角色。如果以参数形式指定了字符串,则可用于按照关键字在Ansible Galaxy中搜索角色。用户可以使用–author、–platforms和–galaxy-tags选项来缩小搜索结果的范围。也可以将这些选项用作主要的搜索键。
例如,命令ansible-galaxy search --author geerlingguy将显示由用户geerlingguy提交的所有角色

[root@master ~]# ansible-galaxy search 'redis'  --author geerlingguyFound 3 roles matching your search:Name                  Description----                  -----------geerlingguy.php-pecl  PHP PECL extension installation.geerlingguy.php-redis PhpRedis support for Linuxgeerlingguy.redis     Redis for Linux

ansible-galaxy info子命令显示与角色相关的更多详细信息。Ansible Galaxy从多个位置获取这一信息,包括角色的meta/main.yml文件及其GigHub存储库。以下命令显示了Ansible Galaxy提供的geerlingguy.redis角色的相关信息。

[root@master ~]# ansible-galaxy info geerlingguy.redisRole: geerlingguy.redisdescription: Redis for Linuxactive: Truecommit: 3bb101101e29aa3da55baa8ae5d9bf56e00e0aafcommit_message: Merge pull request #51 from agrrh/masterFix #39: Redis won't start with ipv6 disabledcommit_url: https://api.github.com/repos/geerlingguy/ansible-rol>company: Midwestern Mac, LLCcreated: 2014-03-06T16:48:12.451903Zdownload_count: 574651forks_count: 137github_branch: mastergithub_repo: ansible-role-redisgithub_user: geerlingguyid: 468imported: 2020-11-17T14:20:46.640658-05:00is_valid: Trueissue_tracker_url: https://github.com/geerlingguy/ansible-role-r>license: license (BSD, MIT)
......

2.2 从ansible Galaxy安装角色

ansible-galaxy install子命令从Ansible Galaxy下载角色,并将它安装到控制节点本地

默认情况下,角色安装到用户的roles_path下的第一个可写目录中。根据为Ansible设置的默认roles_path,角色通常将安装到用户的~/.ansible/roles目录

默认的roles_path可能会被用户当前Ansible配置文件或环境变量ANSIBLE_ROLES_PATH覆盖,这将影响ansible-galaxy的行为

用户可以通过使用-p DIRECTORY选项,指定具体的目录来安装角色

[root@ansible ~]# ls project/
playbook.yml
[root@ansible ~]# ansible-galaxy install robertdebock.httpd -p project/    #-p  指定安装目录
- downloading role 'httpd', owned by robertdebock
- downloading role from https://github.com/robertdebock/ansible-role-httpd/archive/7.0.0.tar.gz
- extracting robertdebock.httpd to /root/project/robertdebock.httpd
- robertdebock.httpd (7.0.0) was installed successfully
[root@ansible ~]# ls project/
playbook.yml  robertdebock.httpd

2.3 使用要求安装文件安装角色

可以使用ansible-galaxy,根据某一文本文件中的定义来安装一个角色列表。例如,如果用户的一个playbook需要安装特定的角色,可以在项目目录中创建一个roles/requirements.yml文件来指定所需的角色。此文件充当playbook项目的依赖项清单,使得playbook的开发和调试能与任何支持角色分开进行。

应当在requirements.yml文件中指定角色版本,特别是生产环境中的playbook。
如果不指定版本,将会获取角色的最新版本。如果作者对角色做出了更改,并与用户的playbook不兼容,这可能会造成自动化失败或其他问题。

若要使用角色文件来安装角色,可使用-r REQUIREMENTS-FILE选项:

[root@ansible project]# cat roles/requirements.yml
---
- src: robertdebock.httpd
[root@ansible project]#  ansible-galaxy install -r roles/requirements.yml -p /etc/ansible/playbook/
- downloading role 'httpd', owned by robertdebock
- downloading role from https://github.com/robertdebock/ansible-role-httpd/archive/7.0.0.tar.gz
- extracting robertdebock.httpd to /etc/ansible/playbook/robertdebock.httpd
- robertdebock.httpd (7.0.0) was installed successfully[root@ansible project]# ls
playbook.yml  robertdebock.httpd  roles

用户可以使用ansible-galaxy来安装不在Ansible Galaxy中的角色。可以在私有的Git存储库或Web服务器上托管自有的专用或内部角色。下例演示了如何利用各种远程来源配置要求文件。

[root@localhost project]# cat roles/requirements.yml
# from Ansible Galaxy, using the latest version
- src: geerlingguy.redis# from Ansible Galaxy, overriding the name and using a specific version
- src: geerlingguy.redisversion: "7.0.0"name: redis_prod# from any Git-based repository, using HTTPS
- src: https://gitlab.com/guardianproject-ops/ansible-nginx-acme.gitscm: gitversion: 56e00a54name: nginx-acme# from any Git-based repository, using SSH
- src: git@gitlab.com:guardianproject-ops/ansible-nginx-acme.gitscm: gitversion: mastername: nginx-acme-ssh# from a role tar ball, given a URL
# supports 'http', 'https', or 'file' protocols
- src: file:///opt/local/roles/myrole.tarname: myrole

src关键字指定Ansible Galaxy角色名称。如果角色没有托管在Ansible Galaxy中,则src关键字将指明角色的URL。

如果角色托管在来源控制存储库中,则需要使用scm属性。ansible-galaxy命令能够从基于git或mercurial的软件存储库下载和安装角色。基于Git的存储库要求scm值为git,而托管在Mercurial存储库中的角色则要求值为hg。如果角色托管在Ansible Galaxy中,或者以tar存档形式托管在Web服务器上,则省略scm关键字。name关键字用于覆盖角色的本地名称。version关键字用于指定角色的版本。version关键字可以是与严自角色的软件存储库的分支、标记或提交哈希对应的任何值。

若要安装与playbook项目关联的角色,可执行ansible-galaxy install命令:

[root@ansible project]# ansible-galaxy install -r roles/requirements.yml -p roles

2.4 管理下载角色

ansible-galaxy命令也可管理本地的角色,如位于playbook项目的roles目录中的角色。ansible-galaxy list子命令列出本地找到的角色

[root@ansible project]# ansible-galaxy list -p .
# /root/project
- robertdebock.httpd, 7.0.0
# /usr/share/ansible/roles
- linux-system-roles.kdump, (unknown version)
- linux-system-roles.network, (unknown version)
- linux-system-roles.postfix, (unknown version)
- linux-system-roles.selinux, (unknown version)
- linux-system-roles.storage, (unknown version)
- linux-system-roles.timesync, (unknown version)
- rhel-system-roles.kdump, (unknown version)
- rhel-system-roles.network, (unknown version)
- rhel-system-roles.postfix, (unknown version)
- rhel-system-roles.selinux, (unknown version)
- rhel-system-roles.storage, (unknown version)
- rhel-system-roles.timesync, (unknown version)
# /etc/ansible/roles

可以使用ansible-galaxy remove子命令本地删除角色。
实例:删除robertdebock.httpd

[root@ansible project]# ansible-galaxy remove robertdebock.httpd -p .
- successfully removed robertdebock.httpd
[root@ansible project]# ansible-galaxy list
# /usr/share/ansible/roles
- linux-system-roles.kdump, (unknown version)
- linux-system-roles.network, (unknown version)
- linux-system-roles.postfix, (unknown version)
- linux-system-roles.selinux, (unknown version)
- linux-system-roles.storage, (unknown version)
- linux-system-roles.timesync, (unknown version)
- rhel-system-roles.kdump, (unknown version)
- rhel-system-roles.network, (unknown version)
- rhel-system-roles.postfix, (unknown version)
- rhel-system-roles.selinux, (unknown version)
- rhel-system-roles.storage, (unknown version)
- rhel-system-roles.timesync, (unknown version)
# /etc/ansible/roles

在playbook中使用下载并安装的角色的方式与任何其他角色都一样。在roles部分中利用其下载的角色名称来加以引用。如果角色不在项目的roles目录中,则将检查roles_path来查看角色是否安装在了其中一个目录中,将使用第一个匹配项。以下use-role.ymlplaybook引用了redis_prod和geerlingguy.redis角色:

[root@localhost project]# cat use-role.yml
---
- name: use redis_prod for prod machineshosts: redis_prod_serversremote_user: devopsbecome: Trueroles:- redis_prod- name: use geerlingguy.redis for Dev machineshosts: redis_dev_serversremote_user: devopsbecome: Trueroles:- geerlingguy.redis

此playbook使不同版本的geerlingguy.redis角色应用到生产和开发服务器。借助这种方式可以对角色更改进行系统化测试和集成,然后再部署到生产服务器上。如果角色的近期更改造成了问题,则借助版本控制来开发角色,就能回滚到过去某一个稳定的角色版本。

ansible Galaxy的应用相关推荐

  1. 使用ansible galaxy部署角色

    一,介绍ansible galaxy Ansible Galaxy [https://galaxy.ansible.com]是一个Ansible内容公共资源库,这些内容由许许多多Ansible管理员和 ...

  2. 使用Ansible Galaxy 安装角色

    使用 Ansible Galaxy 和要求文件 /home/student/ansible/roles/requirements.yml, 从以下 URL 下载角色并安装到 /home/student ...

  3. RHCE-B5. 使用Ansible Galaxy 安装角色

    红帽RHCE考试下午-RHCE(RH294) RH294任务概览 考试时间4个小时,6台虚拟机,15道题 原来通过脚本或者集群做的题现在都需要使用playbook实现 考试时大概有6台虚拟服务器,都已 ...

  4. ANSIBLE GALAXY

    命令行工具 ansible-galaxy命令与Ansible捆绑在一起,您可以使用它从Galaxy或直接从基于git的SCM安装角色. 您还可以使用它在Galaxy网站上创建新角色,删除角色或执行任务 ...

  5. Ansible 系列之 Galaxy 工具

    Ansible Galaxy 简介 Ansible 的 Galaxy 工具,类似程序员使用的 GitHub.运维人员可以将自己编写的 Role 通过 Galaxy 这个平台进行分享.同样,我们也可以通 ...

  6. Ansible第二篇:ansible-playbook

    一.Playbook语法 Ansible-playbook采用YAML语法编写. 示例: [root@LOCALHOST ~]# cat yaml/httpd.yaml --- - hosts: co ...

  7. Ansible自动化运维基础-------ploybook

    前提提要:此文是https://blog.csdn.net/kali_yao/article/details/119983133进阶板 目录 一.ploybook的介绍及用法介绍 1. Plouboo ...

  8. 一小时学会Ansible自动化运维

    [欢迎关注微信公众号:厦门微思网络] 微思网络(官网):https://www.xmws.cn/ 今天分享一个讲解 Ansible 的 PPT,内容非常全面,可帮助你更好的学习Ansible. 红帽R ...

  9. Ansible中的角色使用

    ansible roles #ansible 角色简介# * Ansible roles 是为了层次化,结构化的组织Playbook * roles就是通过分别将变量.文件.任务.模块及处理器放置于单 ...

最新文章

  1. 万字长文的Redis五种数据结构详解(理论+实战),建议收藏。
  2. 第一次作业词频分析之王熹篇
  3. Json字符串解析原理、超大json对象的解析
  4. Dapper的基本使用 [转]
  5. 百度地图android wear,Android SDK | 百度地图API SDK
  6. Codeforces 861D - Polycarp's phone book 字典树/hash
  7. 教你怎么用WIN7系统自带工具调整硬盘分区
  8. myid文件到底是否需要自己手动配置
  9. saltstack 安装nginx
  10. byte java byte_详解java中的byte类型
  11. 目录爆破工具 -- dirsearch
  12. docker镜像打包save,载入load,启动run
  13. JavaScript密码复杂度
  14. Java 中的PO VO DTO BO
  15. 报告:2015年数据中心SDN市场将增长70%
  16. Linux C 下的socket网络编程
  17. 英特尔第十代处理器为什么不支持win7_为什么7代CPU不支持WIN7,原因是什么
  18. 解决Idea 出现 Could not autowire.. 错误
  19. 达梦数据库dm8使用心得
  20. 扒一扒最近很火的被马云强东联手封杀性感女黑帽

热门文章

  1. UVa Q10137: The Trip (旅行)
  2. Git本地 局域网 仓库 搭建
  3. MaxCompute客户端常用命令
  4. 这么用JS实现已经授权微信视频如何可以一键打视频电话
  5. 第一章,倒霉的少女。
  6. 在CSDN里怎样转发别人博客
  7. 百试百灵的安装Python包的办法!!!
  8. 直播购物商城系统源码
  9. 深入浅出图神经网络书本 GCN源码实战
  10. 蓝牙耳机哪款适合女孩子?时尚高颜值,20201五款热销蓝牙耳机推荐