命令行工具

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。 在撰写本文时,只支持githg 。 参见下面的例子。 默认为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

删除已安装的角色

使用removeroles_path删除角色:

$ ansible-galaxy remove username.role_name

Authenticate with Galaxy

使用importdeletesetup命令来管理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。

 


 
 
 
												

最新文章

  1. Zend Studio主题的设置
  2. 网站内容禁止复制和粘贴、另存为的js代码(转)
  3. duilib进阶教程 -- 总结 (17)
  4. Delphi CxGrid 汇总(2)
  5. Exceptionin thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjav
  6. switch… case 语句的用法
  7. Android设计模式系列--模板方法模式
  8. iOS中RGB颜色转换
  9. Bzoj 4196: [Noi2015]软件包管理器 树链剖分
  10. In Java, what is the default location for newly created files?
  11. BZOJ 3265 志愿者招募增强版 单
  12. (转载)Python 列表(list)操作
  13. Android消息机制之Handler
  14. [Unity3D]Unity3D游戏开发Lua随着游戏的债券(于)
  15. 201521123052《Java程序设计》第7周学习总结
  16. 关于 Rijndael 加密
  17. leetcode 204题求素数个数
  18. The account that is running SQL Server Setup does not have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the rig
  19. Java 常用数据结构对象的实现原理 集合类 List Set Map 哪些线程安全 (美团面试题目)
  20. 工作流Activiti入门教程

热门文章

  1. 【appium】根据id定位元素
  2. CAP原理和BASE思想--GLQ
  3. RF安装
  4. JVM的DirectMemory设置
  5. 浅谈在Java开发中的枚举的作用和用法
  6. Python数据分析_Pandas01_数据框的创建和选取
  7. Rust笔记
  8. Linux查看进程,端口,访问url
  9. html-字体
  10. 0_Simple__simpleTemplates + 0_Simple__simpleTemplates_nvrtc