命令行工具

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网站下载角色

  1. $ 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角色安装到当前工作目录中的示例:

  1. $ ansible-galaxy install --roles-path . geerlingguy.apache

version

您可以通过附加一个逗号和一个GitHub发行标签的值来从Galaxy安装一个特定版本的角色。 例如:

  1. $ ansible-galaxy install geerlingguy.apache,v1.0.0
  2.  
  3. 也可以直接指向git存储库,并指定分支名称或提交哈希作为版本。 例如,以下将安装一个特定的提交:
  1. $ ansible-galaxy install git+https://github.com/geerlingguy/ansible-role-apache.git,0b7cd353c0250e87a26e0499e59e7fd265cc2f25

从文件安装多个角色

从Ansible 1.8开始,可以通过将roles放在require.yml文件中来安装多个角色。 该文件的格式是YAML,文件扩展名必须是.yml.yaml

使用以下命令安装require.yml中包含的角色:

  1. $ ansible-galaxy install -r requirements.yml
  2.  
  3. 再次,扩展是重要的。 如果.yml扩展名被关闭,则ansible-galaxy CLI假定该文件处于较旧的,现在已弃用的“基本”格式。

该文件中的每个角色将具有以下一个或多个属性:

src
角色的来源。 如果从Galaxy下载,请使用username.role_name格式; 否则,提供指向基于git的SCM中的存储库的URL。 参见下面的例子。 这是必需属性。
scm
指定SCM。 在撰写本文时,只支持githg 。 参见下面的例子。 默认为git
version:
该版本的角色要下载。 提供发布标签值,提交散列或分支名称。 默认为主
name:
将角色下载到特定名称。 从Galaxy下载时默认为Galaxy名称,否则默认为存储库的名称。

使用以下示例作为在require.yml中指定角色的指南:

  1. # from galaxy
  2. - src: yatesr.timezone
  3.  
  4. # from GitHub
  5. - src: https://github.com/bennojoy/nginx
  6.  
  7. # from GitHub, overriding the name and specifying a specific tag
  8. - src: https://github.com/bennojoy/nginx
  9. version: master
  10. name: nginx_role
  11.  
  12. # from a webserver, where the role is packaged in a tar.gz
  13. - src: https://some.webserver.example.com/files/master.tar.gz
  14. name: http-role
  15.  
  16. # from Bitbucket
  17. - src: git+http://bitbucket.org/willthames/git-ansible-galaxy
  18. version: v1.4
  19.  
  20. # from Bitbucket, alternative syntax and caveats
  21. - src: http://bitbucket.org/willthames/hg-ansible-galaxy
  22. scm: hg
  23.  
  24. # from GitLab or other git-based scm
  25. - src: git@gitlab.company.com:mygroup/ansible-base.git
  26. scm: git
  27. version: "0.1" # quoted, so YAML doesn't parse this as a floating-point value
  28.  

依赖

角色也可以依赖于其他角色,当您安装具有依赖关系的角色时,这些依赖项将自动安装。

您可以通过提供角色列表来指定meta / main.yml文件中的角色依赖关系。 如果角色的来源是Galaxy,则可以使用username.role_name格式简单地指定角色。 还支持require.yml中使用的更复杂的格式,允许您提供src,scm,version和name。

在Galaxy中找到的依赖关系可以指定如下:

  1. dependencies:
  2. - geerlingguy.apache
  3. - geerlingguy.ansible
  4.  
  5. 复合形式也可以如下使用:
  1. dependencies:
  2. - src: geerlingguy.ansible
  3. - src: git+https://github.com/geerlingguy/ansible-role-composer.git
  4. version: 775396299f2da1f519f0d8885022ca2d6ee80ee8
  5. name: composer
  6.  
  7. ansible-galaxy遇到依赖关系时,它会自动将每个依赖关系安装到roles_path 要了解在play执行过程中如何处理依赖关系,请参阅“ Playbook角色和包含语句”

Create roles

使用init命令初始化新角色的基本结构,节省创建各种目录和main.yml文件的时间

  1. $ ansible-galaxy init role_name

以上将在当前工作目录中创建以下目录结构:

  1. README.md
  2. .travis.yml
  3. defaults/
  4. main.yml
  5. files/
  6. handlers/
  7. main.yml
  8. meta/
  9. main.yml
  10. templates/
  11. tests/
  12. inventory
  13. test.yml
  14. vars/
  15. 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

可以提供自定义角色骨架目录,如下所示:

  1. $ ansible-galaxy init --role-skeleton = / path / to / skeleton role_name
  2.  
  3. 当提供骨架时,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数据库。 例如:

  1. $ ansible-galaxy search elasticsearch --author geerlingguy
  2.  
  3. 搜索命令将返回与您的搜索匹配的前1000个结果的列表:
  1. Found 2 roles matching your search:
  2.  
  3. Name Description
  4. ---- -----------
  5. geerlingguy.elasticsearch Elasticsearch for Linux.
  6. geerlingguy.elasticsearch-curator Elasticsearch curator for Linux.

Get more information about a role

使用info命令可查看有关特定角色的更多详细信息:

  1. $ ansible-galaxy info username.role_name
  2.  
  3. 这将返回Galaxy中发现的所有角色:
  1. Role: username.role_name
  2. description: Installs and configures a thing, a distributed, highly available NoSQL thing.
  3. active: True
  4. commit: c01947b7bc89ebc0b8a2e298b87ab416aed9dd57
  5. commit_message: Adding travis
  6. commit_url: https://github.com/username/repo_name/commit/c01947b7bc89ebc0b8a2e298b87ab
  7. company: My Company, Inc.
  8. created: 2015-12-08T14:17:52.773Z
  9. download_count: 1
  10. forks_count: 0
  11. github_branch:
  12. github_repo: repo_name
  13. github_user: username
  14. id: 6381
  15. is_valid: True
  16. issue_tracker_url:
  17. license: Apache
  18. min_ansible_version: 1.4
  19. modified: 2015-12-08T18:43:49.085Z
  20. namespace: username
  21. open_issues_count: 0
  22. path: /Users/username/projects/roles
  23. scm: None
  24. src: username.repo_name
  25. stargazers_count: 0
  26. travis_status_url: https://travis-ci.org/username/repo_name.svg?branch=master
  27. version:
  28. watchers_count: 1

List installed roles

使用list显示在roles_path中安装的每个角色的名称和版本。

  1. $ ansible-galaxy list
  2.  
  3. - chouseknecht.role-install_mongod, master
  4. - chouseknecht.test-role-1, v1.0.2
  5. - chrismeyersfsu.role-iptables, master
  6. - chrismeyersfsu.role-required_vars, master

删除已安装的角色

使用removeroles_path删除角色:

  1. $ ansible-galaxy remove username.role_name

Authenticate with Galaxy

使用importdeletesetup命令来管理Galaxy网站上的角色需要身份验证,并且可以使用login命令来执行此操作。 在您可以使用login命令之前,您必须在Galaxy网站上创建一个帐户。

login命令需要使用您的GitHub凭据。 您可以使用您的用户名和密码,也可以创建个人访问令牌 。 如果您选择创建令牌,则授予对令牌的最小访问权限,因为它仅用于验证标识。

以下显示使用GitHub用户名和密码与Galaxy网站进行身份验证:

  1. $ ansible-galaxy login
  2.  
  3. We need your GitHub login to identify you.
  4. This information will not be sent to Galaxy, only to api.github.com.
  5. The password will not be displayed.
  6.  
  7. Use --github-token if you do not want to enter your password.
  8.  
  9. Github Username: dsmith
  10. Password for dsmith:
  11. Successfully logged into Galaxy as dsmith
  12.  
  13. 当您选择使用您的用户名和密码时,您的密码不会发送到Galaxy 它用于使用GitHub进行身份验证,并创建个人访问令牌。 然后,它将令牌发送到Galaxy,该Galaxy又会验证您的身份并返回Galaxy访问令牌。 验证完成后,GitHub令牌将被销毁。

如果您不希望使用GitHub密码,或者如果您使用GitHub启用双重身份验证,请使用-github-token选项传递您创建的个人访问令牌。

Import a role

import命令要求您首先使用login命令进行身份验证。 一旦经过身份验证,您可以导入您拥有或已被授予访问权限的任何GitHub存储库。

使用以下内容导入角色:

  1. $ ansible-galaxy import github_user github_repo

默认情况下,命令将等待Galaxy完成导入过程,并在导入进度时显示结果:

  1. Successfully submitted import request 41
  2. Starting import 41: role_name=myrole repo=githubuser/ansible-role-repo ref=
  3. Retrieving GitHub repo githubuser/ansible-role-repo
  4. Accessing branch: master
  5. Parsing and validating meta/main.yml
  6. Parsing galaxy_tags
  7. Parsing platforms
  8. Adding dependencies
  9. Parsing and validating README.md
  10. Adding repo tags as role versions
  11. Import completed
  12. 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中的存储库的角色。

使用以下内容删除角色:

  1. $ ansible-galaxy delete github_user github_repo
  2.  
  3. 这只会消除Galaxy的角色。 它不会删除或更改实际的GitHub信息库。

Travis集成

您可以在Galaxy和Travis中的角色之间创建集成或连接。 建立连接后,Travis中的版本将自动触发Galaxy中的导入,并使用关于角色的最新信息更新搜索索引。

您可以使用setup命令创建集成,但在创建集成之前,必须首先使用login命令进行身份验证; 您还需要在Travis的帐户和您的Travis令牌。 准备好后,使用以下命令创建集成:

  1. $ 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文件中:

  1. 通知
  2. webhooks https : //galaxy.ansible.com/api/v1/notifications/

列出Travis集成

使用-list选项显示您的Travis集成:

  1. $ ansible-galaxy setup --list
  2.  
  3. ID来源报告
  4. ---------- ---------- ----------
  5. 2 travis github_user / github_repo
  6. 1 travis github_user / github_repo

删除Travis集成

使用-remove选项禁用和删除Travis集成:

  1. $ ansible-galaxy setup --remove ID

提供要禁用的集成的ID。 您可以使用-list选项找到该ID。

  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  

Ansible Galaxy的更多相关文章

  1. ansible Ansible Galaxy ansible-playbook 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源

    笔记 ansible 安装 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置 ...

  2. Ansible_使用Ansible galaxy部署角色

    一.介绍Anisble galaxy 1.介绍Ansibleu galaxy 1️⃣:Ansible Galaxy (官网:https://galaxy.ansible.com)是一个Ansible内 ...

  3. 四、Ansible的Galaxy包管理器

    一.什么是Ansible Galaxy? Ansible Galaxy是Ansible的第三方插件管理和安装工具,其实就是包管理软件.作用类似于Ubuntu的apt,Centos的yum,Python ...

  4. Ansible系列(五):playbook应用和roles自动化批量安装示例

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  5. Ansible进阶--playbook的使用

    一.什么是playbooksplaybooks是ansible的脚本.如同shell脚本一样,它是控制远程主机的一系列命令的集合,通过YAML语言编写.执行一些简单的任务,我们可以使用ad-hoc命令 ...

  6. 通过 Ansible 安装 Docker

    本文的演示环境为 ubuntu 16.04. 先在 Ansible Galaxy 搜索 docker,由 geerlingguy 贡献的 docker role 是目前最受欢迎的: 通过 ansibl ...

  7. [转帖]Ansible 入门秘诀

    Ansible 入门秘诀 作者: Jose Delarosa 译者: LCTT jdh8383 | 2019-03-08 09:24   收藏: 2 用 Ansible 自动化你的数据中心的关键点. ...

  8. 使用Ansible实现数据中心自动化运维管理

    长久以来,IT 运维在企业内部一直是个耗人耗力的事情.随着虚拟化的大量应用.私有云.容器的不断普及,数据中心内部的压力愈发增加.传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统.虚拟 ...

  9. 通过 Ansible 创建 Jenkins Server

    创建 CI 流程的第一件事应该是安装 CI 工具,本文以最常见的 Jenkins 为例,介绍如何使用 Ansible 自动安装 Jenkins Server.说明:本文的演示环境为 ubuntu 16 ...

随机推荐

  1. 用SqlConnectionStringBuilder修改连接超时时间

    连接是通过参数传入,欲修改超时时间. SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(connStr); scsb.C ...

  2. 【刷题】Search in a Big Sorted Array

    原题戳我. 题目 Description Given a big sorted array with positive integers sorted by ascending order. The ...

  3. 5.验证用户名是否已经被注册:AJAXC请求

    首先在 web.xml 文件中添加配置信息 <!-- 配置全局的字符集 --> <context-param> <param-name>encode</par ...

  4. mysql实战优化之九:MySQL查询缓存总结

    mysql Query Cache 默认为打开.从某种程度可以提高查询的效果,但是未必是最优的解决方案,如果有的大量的修改和查询时,由于修改造成的cache失效,会给服务器造成很大的开销. mysql ...

  5. zufe oj 引水工程( 巧妙地把在i建水设为e[0][i])

    引水工程 时间限制: 3 Sec  内存限制: 128 MB提交: 11  解决: 6[提交][状态][讨论版] 题目描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程,是新中国成立以来 ...

  6. 开发框架:IOE 架构

    ylbtech-开发框架:IOE 架构 传统的IOE架构(IBM小型机.EMC存储设备.Oracle数据库). 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部   ...

  7. 1053 Path of Equal Weight (30 分)

    Given a non-empty tree with root R, and with weight W​i​​ assigned to each tree node T​i​​. The weig ...

  8. 比较有意思的原生态js拖拽写法----摘自javascript高级程序设计3

    var DragDrop = function () { var dragging = null; var diffX = 0; var diffY = 0; function handleEvent ...

  9. 给iOS开发新手送点福利,简述UIScrollView的属性和用法

    UIScrollView 1.   contentOffset 默认CGPointZero,用来设置scrollView的滚动偏移量. // 设置scrollView的滚动偏移量 scrollView ...

  10. Windows Storage Stack