Ansible-Galaxy
Posted Aimmi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible-Galaxy相关的知识,希望对你有一定的参考价值。
Ansible-galaxy
一、介绍Ansible galaxy
Ansible Galaxy [https://galaxy.ansible.com]是一个Ansible内容公共资源库,这些内容由许许多多Ansible管理员和用户编写。它包含数千个Ansible角色,具有可搜索的数据库,可帮助Ansible用户确定或许有助于他们完成管理任务的角色。Ansible Galaxy含有面向新的Ansible用户和角色开发人员的文档和视频链接。
此外,用于从Ansible Galaxy获取和管理角色的ansible-galaxy命令也可用于为您的项目获取和管理自有的git存储库中的角色。
1、获取Ansible Galaxy帮助
通过Ansible Galaxy网站主页上的Documenttaion标签,可以进入描述如何使用Ansible Galaxy的页面。其中包含了介绍如何从Ansible Galaxy下载和使用角色的内容。该页面也提供关于如何开发角色并上传到Ansible Galaxy的说明。
2、浏览Ansible Galaxy中的角色
通过Ansible Galaxy网站主页上左侧的Search标签,用户可以访问关于Ansible Galaxy上发布的角色的信息。用户可以使用标记通过角色的名称或通过其他角色属性来搜索Ansible角色。结果按照Best Match分数降序排列,此分数依据角色质量、角色受欢迎程度和搜索条件计算而得。
二、Ansible Galaxy命令行工具
1、从命令行搜索角色
ansible-galaxy search子命令在Ansible Galaxy中搜索角色。如果以参数形式指定了字符串,则可用于按照关键字在Ansible Galaxy中搜索角色。用户可以使用–author、–platforms和–galaxy-tags选项来缩小搜索结果的范围。搜索到的都是可以用的。
命令ansible-galaxy search --author geerlingguy将显示由用户geerlingguy提交的所有角色。
[root@localhost ansible ~]# ansible-galaxy search --author geerlingguy
Found 99 roles matching your search:
Name Description
---- -----------
geerlingguy.adminer Installs Adminer for Database management.
geerlingguy.ansible Ansible for RedHat/CentOS/Debian/Ubuntu.
geerlingguy.apache Apache 2.x for Linux.
geerlingguy.apache-php-fpm Apache 2.4+ PHP-FPM support for Linux.
geerlingguy.aws-inspector AWS Inspector installation for Linux.
geerlingguy.awx Installs and configures AWX (Ansible Tower>
geerlingguy.awx-container Ansible AWX container for Docker.
geerlingguy.backup Backup for Simple Servers.
ansible-galaxy info子命令显示与角色相关的更多详细信息。Ansible Galaxy从多个位置获取这一信息,包括角色的meta/main.yml文件及其GigHub存储库。
2、从Ansible Galaxy安装角色
ansible-galaxy install子命令从Ansible Galaxy下载角色,并将它安装到控制节点本地。
默认情况下,角色安装到用户的roles_path下的第一个可写目录中。根据为Ansible设置的默认roles_path,角色通常将安装到用户的~/.ansible/roles目录。默认的roles_path可能会被用户当前Ansible配置文件或环境变量ANSIBLE_ROLES_PATH覆盖,这将影响ansible-galaxy的行为。
安装模块:
直接使用ansible-galaxy安装一些模块
ansible-galaxy install username.rolename
也可以批量安装,ansible提供了两钟方式配置依赖模块,可以批量安装模块
# roles.txt
user1.roles1,v1.0
user2.roles2,v1.2
user3.roles3,v1.3
配置规则格式为 username.rolesname[,version]的形式
ansible-galaxy install -r roles.txt
使用YML格式的配置文件
创建 install_roles.yml配置文件
# install_roles.yml
# from galaxy
- src: yatesr.timezone
# from github
- src: https://github.com/bennojoy/nginx
# from github installing to a relative path
- src: https://github.com/bennojoy/nginx
path: vagrant/roles/
# from github, overriding the name and specifying a specific tag
- src: https://github.com/bennojoy/nginx
version: master
name: nginx_role
# from a webserver, where the role is packaged in a tar.gz
- src: https://some.webserver.example.com/files/master.tar.gz
name: http-role
# from bitbucket, if bitbucket happens to be operational right now :)
- src: git+http://bitbucket.org/willthames/git-ansible-galaxy
version: v1.4
# from bitbucket, alternative syntax and caveats
- src: http://bitbucket.org/willthames/hg-ansible-galaxy
scm: hg
安装配置好的role模块
ansible-galaxy install -r install_roles.yml
可以在项目里创建ansible.cfg配置文件,配置role模块下载位置
ansible.cfg
[defaults]
hostfile = inventory
roles_path = roles
3、创建模块
1.举例比如创建一个acme模块
ansible-galaxy init acme --force
文件结构:
.
├── README.md
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
localhost 4、管理下载的角色
1.ansible-galaxy命令也可管理本地的角色,如位于playbook项目的roles目录中的角色。ansible-galaxy list子命令列出本地找到的角色
[root@localhost ansible]# ansible-galaxy list
2.可以使用ansible-galaxy remove子命令本地删除角色
[root@localhost roles]# ansible-galaxy remove geerlingguy.redis
[root@localhost roles]# ansible-galaxy list
3.在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 machines
hosts: redis_prod_servers
remote_user: devops
become: True
roles:
- redis_prod
- name: use geerlingguy.redis for Dev machines
hosts: redis_dev_servers
remote_user: devops
become: True
roles:
- geerlingguy.redis
5、目录文件说明:
名称 | 类型 | 说明 |
---|---|---|
defaults | 目录 | 存放默认配置信息的目录 |
defaults/main.yml | 文件 | 存放默认配置变量的文件 |
files | 目录 | 存放文件的目录,在此目录下copy等模块可以直接使用 |
handlers | 目录 | |
handlers/main.yml | 文件 | |
meta | 目录 | 存放元信息相关的配置文件的目录 |
meta/main.yml | 文件 | 存放此模块的一些元信息,比如所支持的Ansible最小版本以及操作系统类型等 |
README.md | 文件 | 用于模块说明和介绍的文件 |
tasks | 目录 | 保存角色功能实现任务所在的目录 |
tasks/main.yml | 文件 | 角色的入口文件,执行角色时会从此文件开始执行 |
templates | 目录 | 存放jinjia2模版文件的目录 |
tests | 目录 | 存放模块测试相关的内容的目录 |
tests/inventory | 文件 | 测试所使用的inventory文件 |
tests/test.yml | 文件 | 测试所使用的playbook |
vars | 目录 | 保存变量配置信息的目录 |
vars/main.yml | 文件 | 用于保存变量配置信息 |
以上是关于Ansible-Galaxy的主要内容,如果未能解决你的问题,请参考以下文章