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的主要内容,如果未能解决你的问题,请参考以下文章

Ansible详解

Ansible管理命令

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?