如何在没有 Galaxy 服务器或使用 Ansible Galaxy 的情况下直接从 http url 安装内置的 Ansible 集合 (tar.gz)?

问题描述 投票:0回答:1

Ansible 集合 文档 提供了多种安装集合的方法。主要重点是安装 来自 Ansible Galaxy

但是,我想从内部 Web 服务器托管和安装构建的集合 (tar.gz)。

此时,我对自托管 Galaxy 服务器或从 git 存储库安装集合不感兴趣(我不想处理权限问题)。

有没有办法在使用时指定一个url作为采集源

ansible-galaxy collection install
.

也就是说,这个可以吗?

 $ ansible-galaxy collection install http://example.com/collection-X.X.X.tar.gz

我可以在

requirements.yml
中指定 url 路径吗?

ansible ansible-collections
1个回答
0
投票

这可以直接在命令行和需求文件中完成。

  1. 直接在命令行上

ansible-galaxy
支持使用

从构建 (tar.gz) 安装集合
  $ ansible-galaxy install  <collection.tar.gz>

如果集合托管在 Web 服务器上,则可以将源传递给命令

  $ ansible-galaxy install  http://example.com/collection-X.X.X.tar.gz
  Downloading http://example.com/collection-X.X.X.tar.gz to <tmp directory>
Starting galaxy collection install process
Process install dependency map
Starting collection install process
Installing 'collection:X.X.X' to '<collection folder>'
  1. 使用需求文件

Ansible 集合可以使用需求文件安装。

文档将

url
列为集合条目的
type
键支持的值。

因此要安装托管在的集合

http://example.com/collection-X.X.X.tar.gz
将以下条目添加到
collections
需求文件的关键

---

# requirements.yml

collections: # Note: all collections must be listed under this key

  - name: <namespace.collection>
    type: url
    source: http://example.com/collection-X.X.X.tar.gz

并使用

安装
  $ ansible-galaxy collection install -r requirements.yml
Starting galaxy collection install process
Process install dependency map
Downloading http://example.com/collection-X.X.X.tar.gz to <tmp directory>
Starting collection install process
Installing 'namespace.collection:X.X.X' to '<collections directory>'
namespace.collection:X.X.X was installed successfully

可以指定

version
键,但提供的值必须与 档案名称。

---

# requirements.yml

collections: # Note: collections must be listed under this key

  - name: <namespace.collection>
    type: url
    version: X.Y.Z # this will fail. value must be X.X.X
    source: http://example.com/collection-X.X.X.tar.gz

© www.soinside.com 2019 - 2024. All rights reserved.