Ansible Galaxy
命令行工具
ansible-galaxy
命令与Ansible捆绑在一起,您可以使用它从Galaxy或直接从基于git的SCM安装角色。 您还可以使用它在Galaxy网站上创建新角色,删除角色或执行任务。
默认情况下,命令行工具使用服务器地址https://galaxy.ansible.com与Galaxy网站API通信。 由于Galaxy项目是一个开源项目,您可能会运行自己的内部Galaxy服务器,并希望覆盖默认的服务器地址。 您可以使用-server选项或通过在ansible.cfg文件中设置Galaxy服务器值来执行此操作。 有关在ansible.cfg中设置值的信息,请访问Galaxy设置 。
Installing Roles
使用ansible-galaxy
命令从Galaxy网站下载角色
$ ansible-galaxy install username.role_name
roles_path
请注意,默认情况下,Ansible将角色下载到由环境变量ANSIBLE_ROLES_PATH指定的路径。 这可以设置为一系列目录(即/etc/ansible/roles:~/.ansible/roles ),在这种情况下,将使用第一个可写路径。 首次安装Ansible时,它默认为/ etc / ansible / roles ,这需要root权限。
您可以通过在会话中设置环境变量,在ansible.cfg文件中定义roles_path或使用-roles -path选项来覆盖此方法。 以下提供了使用-roles-path将角色安装到当前工作目录中的示例:
$ ansible-galaxy install --roles-path . geerlingguy.apache
version
您可以通过附加一个逗号和一个GitHub发行标签的值来从Galaxy安装一个特定版本的角色。 例如:
$ ansible-galaxy install geerlingguy.apache,v1.0.0 也可以直接指向git存储库,并指定分支名称或提交哈希作为版本。 例如,以下将安装一个特定的提交:
$ ansible-galaxy install git+https://github.com/geerlingguy/ansible-role-apache.git,0b7cd353c0250e87a26e0499e59e7fd265cc2f25
从文件安装多个角色
从Ansible 1.8开始,可以通过将roles放在require.yml文件中来安装多个角色。 该文件的格式是YAML,文件扩展名必须是.yml或.yaml 。
使用以下命令安装require.yml中包含的角色:
$ ansible-galaxy install -r requirements.yml
再次,扩展是重要的。 如果.yml扩展名被关闭,则ansible-galaxy
CLI假定该文件处于较旧的,现在已弃用的“基本”格式。
该文件中的每个角色将具有以下一个或多个属性:
- src
- 角色的来源。 如果从Galaxy下载,请使用username.role_name格式; 否则,提供指向基于git的SCM中的存储库的URL。 参见下面的例子。 这是必需属性。
- scm
- 指定SCM。 在撰写本文时,只支持git或hg 。 参见下面的例子。 默认为git 。
- version:
- 该版本的角色要下载。 提供发布标签值,提交散列或分支名称。 默认为主 。
- name:
- 将角色下载到特定名称。 从Galaxy下载时默认为Galaxy名称,否则默认为存储库的名称。
使用以下示例作为在require.yml中指定角色的指南:
# from galaxy
- src: yatesr.timezone # from GitHub
- src: https://github.com/bennojoy/nginx # 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
- 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 # from GitLab or other git-based scm
- src: git@gitlab.company.com:mygroup/ansible-base.git
scm: git
version: "0.1" # quoted, so YAML doesn't parse this as a floating-point value
依赖
角色也可以依赖于其他角色,当您安装具有依赖关系的角色时,这些依赖项将自动安装。
您可以通过提供角色列表来指定meta / main.yml文件中的角色依赖关系。 如果角色的来源是Galaxy,则可以使用username.role_name格式简单地指定角色。 还支持require.yml中使用的更复杂的格式,允许您提供src,scm,version和name。
在Galaxy中找到的依赖关系可以指定如下:
dependencies:
- geerlingguy.apache
- geerlingguy.ansible 复合形式也可以如下使用:
dependencies:
- src: geerlingguy.ansible
- src: git+https://github.com/geerlingguy/ansible-role-composer.git
version: 775396299f2da1f519f0d8885022ca2d6ee80ee8
name: composer 当ansible-galaxy
遇到依赖关系时,它会自动将每个依赖关系安装到roles_path 。 要了解在play执行过程中如何处理依赖关系,请参阅“ Playbook角色和包含语句” 。
Create roles
使用init
命令初始化新角色的基本结构,节省创建各种目录和main.yml文件的时间
$ ansible-galaxy init role_name
以上将在当前工作目录中创建以下目录结构:
README.md
.travis.yml
defaults/
main.yml
files/
handlers/
main.yml
meta/
main.yml
templates/
tests/
inventory
test.yml
vars/
main.yml
Force
如果当前工作目录中存在与该角色名称相匹配的目录,则init命令将导致错误。 要忽略该错误,请使用-force选项。 Force将创建上述子目录和文件,替换匹配的任何内容。
Container Enabled
如果要创建启用Container的角色,请使用-container-enabled选项。 这将创建与上述相同的目录结构,但使用适用于启用Container的默认文件填充它。 例如,README.md具有稍微不同的结构, .travis.yml文件使用Ansible Container来测试角色,而meta目录包含一个container.yml文件。
Using a Custom Role Skeleton
可以提供自定义角色骨架目录,如下所示:
$ ansible-galaxy init --role-skeleton = / path / to / skeleton role_name 当提供骨架时,init将:
- 将所有文件和目录从骨架复制到新角色
- 在模板文件夹之外找到的任何.j2文件将被渲染为模板。 目前唯一有用的变量是role_name
- .git文件夹和任何.git_keep文件将不被复制
或者,可以通过ansible.cfg配置role_skeleton和忽略文件
[galaxy]
role_skeleton = /path/to/skeleton
role_skeleton_ignore = ^.git$,^.*/.git_keep$
Search for Roles
通过标签,平台,作者和多个关键字搜索Galaxy数据库。 例如:
$ ansible-galaxy search elasticsearch --author geerlingguy 搜索命令将返回与您的搜索匹配的前1000个结果的列表:
Found 2 roles matching your search: Name Description
---- -----------
geerlingguy.elasticsearch Elasticsearch for Linux.
geerlingguy.elasticsearch-curator Elasticsearch curator for Linux.
Get more information about a role
使用info
命令可查看有关特定角色的更多详细信息:
$ ansible-galaxy info username.role_name 这将返回Galaxy中发现的所有角色:
Role: username.role_name
description: Installs and configures a thing, a distributed, highly available NoSQL thing.
active: True
commit: c01947b7bc89ebc0b8a2e298b87ab416aed9dd57
commit_message: Adding travis
commit_url: https://github.com/username/repo_name/commit/c01947b7bc89ebc0b8a2e298b87ab
company: My Company, Inc.
created: 2015-12-08T14:17:52.773Z
download_count: 1
forks_count: 0
github_branch:
github_repo: repo_name
github_user: username
id: 6381
is_valid: True
issue_tracker_url:
license: Apache
min_ansible_version: 1.4
modified: 2015-12-08T18:43:49.085Z
namespace: username
open_issues_count: 0
path: /Users/username/projects/roles
scm: None
src: username.repo_name
stargazers_count: 0
travis_status_url: https://travis-ci.org/username/repo_name.svg?branch=master
version:
watchers_count: 1
List installed roles
使用list
显示在roles_path中安装的每个角色的名称和版本。
$ ansible-galaxy list - chouseknecht.role-install_mongod, master
- chouseknecht.test-role-1, v1.0.2
- chrismeyersfsu.role-iptables, master
- chrismeyersfsu.role-required_vars, master
删除已安装的角色
使用remove
从roles_path删除角色:
$ ansible-galaxy remove username.role_name
Authenticate with Galaxy
使用import
, delete
和setup
命令来管理Galaxy网站上的角色需要身份验证,并且可以使用login
命令来执行此操作。 在您可以使用login
命令之前,您必须在Galaxy网站上创建一个帐户。
login
命令需要使用您的GitHub凭据。 您可以使用您的用户名和密码,也可以创建个人访问令牌 。 如果您选择创建令牌,则授予对令牌的最小访问权限,因为它仅用于验证标识。
以下显示使用GitHub用户名和密码与Galaxy网站进行身份验证:
$ ansible-galaxy login We need your GitHub login to identify you.
This information will not be sent to Galaxy, only to api.github.com.
The password will not be displayed. Use --github-token if you do not want to enter your password. Github Username: dsmith
Password for dsmith:
Successfully logged into Galaxy as dsmith 当您选择使用您的用户名和密码时,您的密码不会发送到Galaxy。 它用于使用GitHub进行身份验证,并创建个人访问令牌。 然后,它将令牌发送到Galaxy,该Galaxy又会验证您的身份并返回Galaxy访问令牌。 验证完成后,GitHub令牌将被销毁。
如果您不希望使用GitHub密码,或者如果您使用GitHub启用双重身份验证,请使用-github-token选项传递您创建的个人访问令牌。
Import a role
import
命令要求您首先使用login
命令进行身份验证。 一旦经过身份验证,您可以导入您拥有或已被授予访问权限的任何GitHub存储库。
使用以下内容导入角色:
$ ansible-galaxy import github_user github_repo
默认情况下,命令将等待Galaxy完成导入过程,并在导入进度时显示结果:
Successfully submitted import request 41
Starting import 41: role_name=myrole repo=githubuser/ansible-role-repo ref=
Retrieving GitHub repo githubuser/ansible-role-repo
Accessing branch: master
Parsing and validating meta/main.yml
Parsing galaxy_tags
Parsing platforms
Adding dependencies
Parsing and validating README.md
Adding repo tags as role versions
Import completed
Status SUCCESS : warnings=0 errors=0
Branch
使用-branch选项导入特定的分支。 如果没有指定,将使用repo的默认分支。
Role name
默认情况下,赋予角色的名称将从GitHub存储库名称派生。 但是,您可以使用-role-name选项来覆盖此名称并设置名称。
No wait
如果存在-no-wait选项,则命令不会等待结果。 通过访问我的导入,可以在Galaxy网站上查看任何角色的最新导入结果。
Delete a role
delete
命令要求您首先使用login
命令进行身份验证。 通过身份验证,您可以从Galaxy网站中删除角色。 您只能删除您可以访问GitHub中的存储库的角色。
使用以下内容删除角色:
$ ansible-galaxy delete github_user github_repo 这只会消除Galaxy的角色。 它不会删除或更改实际的GitHub信息库。
Travis集成
您可以在Galaxy和Travis中的角色之间创建集成或连接。 建立连接后,Travis中的版本将自动触发Galaxy中的导入,并使用关于角色的最新信息更新搜索索引。
您可以使用setup
命令创建集成,但在创建集成之前,必须首先使用login
命令进行身份验证; 您还需要在Travis的帐户和您的Travis令牌。 准备好后,使用以下命令创建集成:
$ ansible-galaxy setup travis github_user github_repo xxx-travis-token-xxx
设置命令需要您的Travis令牌,但令牌不会存储在Galaxy中。 它与GitHub用户名和repo一起使用,以创建Travis文档中所述的哈希。 散列存储在Galaxy中,用于验证从Travis收到的通知。
设置命令使Galaxy能够响应通知。 要配置Travis在您的存储库上运行构建并发送通知,请遵循Travis入门指南 。
要指示Travis在构建完成时通知Galaxy,请将以下内容添加到.travis.yml文件中:
通知 :
webhooks : https : //galaxy.ansible.com/api/v1/notifications/
列出Travis集成
使用-list选项显示您的Travis集成:
$ ansible-galaxy setup --list ID来源报告
---------- ---------- ----------
2 travis github_user / github_repo
1 travis github_user / github_repo
删除Travis集成
使用-remove选项禁用和删除Travis集成:
$ ansible-galaxy setup --remove ID
提供要禁用的集成的ID。 您可以使用-list选项找到该ID。
Ansible Galaxy的更多相关文章
- ansible Ansible Galaxy ansible-playbook 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源
笔记 ansible 安装 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置 ...
- Ansible_使用Ansible galaxy部署角色
一.介绍Anisble galaxy 1.介绍Ansibleu galaxy 1️⃣:Ansible Galaxy (官网:https://galaxy.ansible.com)是一个Ansible内 ...
- 四、Ansible的Galaxy包管理器
一.什么是Ansible Galaxy? Ansible Galaxy是Ansible的第三方插件管理和安装工具,其实就是包管理软件.作用类似于Ubuntu的apt,Centos的yum,Python ...
- Ansible系列(五):playbook应用和roles自动化批量安装示例
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- Ansible进阶--playbook的使用
一.什么是playbooksplaybooks是ansible的脚本.如同shell脚本一样,它是控制远程主机的一系列命令的集合,通过YAML语言编写.执行一些简单的任务,我们可以使用ad-hoc命令 ...
- 通过 Ansible 安装 Docker
本文的演示环境为 ubuntu 16.04. 先在 Ansible Galaxy 搜索 docker,由 geerlingguy 贡献的 docker role 是目前最受欢迎的: 通过 ansibl ...
- [转帖]Ansible 入门秘诀
Ansible 入门秘诀 作者: Jose Delarosa 译者: LCTT jdh8383 | 2019-03-08 09:24 收藏: 2 用 Ansible 自动化你的数据中心的关键点. ...
- 使用Ansible实现数据中心自动化运维管理
长久以来,IT 运维在企业内部一直是个耗人耗力的事情.随着虚拟化的大量应用.私有云.容器的不断普及,数据中心内部的压力愈发增加.传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统.虚拟 ...
- 通过 Ansible 创建 Jenkins Server
创建 CI 流程的第一件事应该是安装 CI 工具,本文以最常见的 Jenkins 为例,介绍如何使用 Ansible 自动安装 Jenkins Server.说明:本文的演示环境为 ubuntu 16 ...
随机推荐
- 码出高效,阿里巴巴JAVA开发手册1.4.0
码出高效,阿里巴巴JAVA开发手册1.4.0阅读笔记 一.编程规约(三) 代码格式// 关键词if与括号之间必须有一个空格,括号内的f与左括号,0与右括号不需要空格 if (flag == 0) { ...
- 如何在eclipse中安装angularjs插件
1,首先,在eclipse中使用angularjs的时候,由于没有相应的提示,导致在开发的时候给我们带来了很多的不便,需要在这上面耗费一些时间.那么这时候我们都在想可不可以让eclipse也和一些前端 ...
- js jquery 设置cookie
转自http://yaoqianglilan.blog.163.com/blog/static/70978316201091810435251/ 本人亲测setcookie() getcookie() ...
- Qt QTableWidget用法总结
转载:李宏兵 QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了. QTa ...
- zabbix 安装错误汇总
由于公司业务需要,当前zabbixserver的压力较大,需要安装一个proxy缓解压力,开始慢慢琢磨proxy的安装.这些文档网上很多,就不在多说了.只把自己遇见的错误拿出来共享下 Zabbixpr ...
- 13.MD5对用户密码进行加密
MD5概述 用户名密码保存在客户端是一种十分危险的行为.所以需要进行加密后保存. 其中MD5就是一种比较常用的加密算法. 与其说MD5算法是一种加密算法,不如说是一种数据指纹(数据摘要)算法. 其特点 ...
- DOM事件机制(事件捕获和事件冒泡和事件委托)
内容: 1.事件复习 2.事件冒泡与事件捕获 3.事件委托 1.事件复习 (1)事件 事件是用来处理响应的一个机制,这个响应可以来自于用户(点击, 鼠标移动, 滚动), 也可以来自于浏览器 下面的链接 ...
- js、C#获取当前url的参数值
之前很想做一些封装关于获取URL参数值方法,今天简单整理了一下js和后台代码获取url参数值的方法,有什么不好地方,还请大家包涵,代码如下: 1.JS处理URL参数值 <script langu ...
- 《GPU高性能编程CUDA实战》附录二 散列表
▶ 使用CPU和GPU分别实现散列表 ● CPU方法 #include <stdio.h> #include <time.h> #include "cuda_runt ...
- 数据分析利器之hive优化十大原则
hive之于数据民工,就如同锄头之于农民伯伯.hive用的好,才能从地里(数据库)里挖出更多的数据来. 用过hive的朋友,我想或多或少都有类似的经历:一天下来,没跑几次hive,就到下班时间了. h ...