ANSIBLE GALAXY

2024-01-03 19:38
文章标签 ansible galaxy

本文主要是介绍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。 在撰写本文时,只支持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/nginxversion: mastername: nginx_role# from a webserver, where the role is packaged in a tar.gz
- src: https://some.webserver.example.com/files/master.tar.gzname: http-role# from Bitbucket
- src: git+http://bitbucket.org/willthames/git-ansible-galaxyversion: v1.4# from Bitbucket, alternative syntax and caveats
- src: http://bitbucket.org/willthames/hg-ansible-galaxyscm: hg# from GitLab or other git-based scm
- src: git@gitlab.company.com:mygroup/ansible-base.gitscm: gitversion: "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.gitversion: 775396299f2da1f519f0d8885022ca2d6ee80ee8name: 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/inventorytest.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_namedescription: Installs and configures a thing, a distributed, highly available NoSQL thing.active: Truecommit: c01947b7bc89ebc0b8a2e298b87ab416aed9dd57commit_message: Adding traviscommit_url: https://github.com/username/repo_name/commit/c01947b7bc89ebc0b8a2e298b87abcompany: My Company, Inc.created: 2015-12-08T14:17:52.773Zdownload_count: 1forks_count: 0github_branch:github_repo: repo_namegithub_user: usernameid: 6381is_valid: Trueissue_tracker_url:license: Apachemin_ansible_version: 1.4modified: 2015-12-08T18:43:49.085Znamespace: usernameopen_issues_count: 0path: /Users/username/projects/rolesscm: Nonesrc: username.repo_namestargazers_count: 0travis_status_url: https://travis-ci.org/username/repo_name.svg?branch=masterversion: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

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

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

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

$ ansible-galaxy loginWe 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 --listID来源报告---------- ---------- ----------2 travis github_user / github_repo1 travis github_user / github_repo

删除Travis集成

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

  $ ansible-galaxy setup --remove ID

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

这篇关于ANSIBLE GALAXY的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/566825

相关文章

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

ansible资料

ansible系列教程-强烈推荐看完ansible官方编写的例子ansible_uiJenkins配置ansiblegalaxy官方文档中文教程1中文教程2playbook进阶YAML语法fabric编写的自动化部署

使用Ansible进行多云环境的自动化部署与管理

使用Ansible进行多云环境的自动化部署与管理 引言 随着云计算技术的飞速发展,多云环境已经成为现代企业IT架构的主流选择。多云环境不仅提供了更高的灵活性和可用性,还能有效降低供应商锁定的风险。然而,多云环境的管理和部署复杂性也随之增加,传统的手动操作已经无法满足需求。Ansible作为一种简单而强大的自动化工具,可以帮助企业在多云环境中实现自动化部署和管理,显著提高效率并减少人为错误。

企业级Ansible自动化运维项目案例:实战与技巧

在企业级的IT运维中,自动化已成为提高效率、减少人为错误和保证服务一致性的关键手段。Ansible作为一种简单但功能强大的自动化工具,广泛应用于配置管理、应用程序部署、任务自动化和IT编排。本文将通过一个企业级的Ansible自动化运维项目案例,详细介绍如何从零开始设计、实施和优化自动化解决方案,并探讨其中的实战技巧。 一、项目背景 某大型企业拥有多个数据中心和数百台服务器,涉及不同的操作系统

Ansible与Docker集成:实现容器化运维自动化

Ansible与Docker集成:实现容器化运维自动化 在现代 DevOps 和云原生环境中,Ansible 和 Docker 是两种非常受欢迎的工具。Ansible 专注于配置管理和任务自动化,而 Docker 则通过容器化技术实现应用的轻量级隔离和部署。将 Ansible 和 Docker 结合使用,可以大幅度提高运维的效率,实现更灵活的容器化运维自动化。本指南将详细探讨如何将 Ansibl

Ansible剧本编写指南:从简单任务到复杂自动化的实现

Ansible剧本编写指南:从简单任务到复杂自动化的实现 Ansible 是一个流行的开源自动化工具,被广泛用于配置管理、应用部署、任务自动化以及 IT 基础设施的编排。它的核心是简单且易于学习的 YAML 格式,使用户能够编写可重用、可维护的剧本(Playbooks)来实现各种自动化任务。本指南将深入探讨 Ansible 剧本编写,从简单任务开始,逐步过渡到复杂的自动化实现。 目录 Ans

09-03 周二 ansible部署和节点管理过程

09-03 周二 ansible部署和节点管理过程 时间版本修改人描述2024年9月3日10:08:58V0.1宋全恒新建文档, 简介  首先要找一个跳板机,来确保所有的机器都可以访问。然后我们围绕ansible来搭建环境,方便一键执行所有的命令,主要的任务是将这10个节点均挂载NAS服务器,添加我们的harbor服务器, ansible介绍  ansible/ansible at

Ansible自动化运维入门:从基础到实践的全面指南

Ansible自动化运维入门:从基础到实践的全面指南 随着IT基础设施的日益复杂,自动化运维已经成为提升效率、减少人为错误、优化资源的重要手段。在众多自动化工具中,Ansible因其简洁、易用、无代理(Agentless)等特性,备受运维工程师的青睐。本指南将详细介绍Ansible的基础知识和实践应用,帮助你从零开始掌握Ansible自动化运维的精髓。 目录 什么是Ansible?Ansib

使用Ansible实现高效服务器配置管理的最佳实践

使用Ansible实现高效服务器配置管理的最佳实践 在现代IT运维中,服务器的配置管理是一个关键环节。传统的手动配置方法不仅耗时耗力,而且容易出错,特别是在规模庞大的服务器集群中,配置的一致性难以保证。Ansible作为一款无代理的自动化运维工具,通过其易用性和灵活性,提供了一种高效的服务器配置管理解决方案。本指南将从基础到高级应用,详细介绍使用Ansible实现高效服务器配置管理的最佳实践。