【问题标题】:How do I install an Ansible Galaxy role from a tar.gz file?如何从 tar.gz 文件安装 Ansible Galaxy 角色?
【发布时间】:2020-08-14 12:50:05
【问题描述】:

我看到许多网站解释了如何使用 ansible-galaxy 从 tar.gz 文件安装角色,它们似乎都在说同样的话。 就我而言,我已经从 ansible galaxy 下载了以下角色文件:

dsglaser-cis_security-1.2.0.tar.gz

然后我尝试安装角色:

ansible-galaxy collection install dsglaser-cis_security-1.2.0.tar.gz

这给了我警告:

[警告]:- 集合未成功安装:无法从 API 服务器 (https://galaxy.ansible.com/api/) 获取数据:无法在端口 443 连接到galaxy.ansible.com:[Errno 104] 对等方重置连接

这是正确的,因为这台机器没有,也永远不会连接到互联网。

又一次尝试:

ansible-galaxy install dsglaser-cis_security-1.2.0.tar.gz

导致另一个警告:

[警告]:- dsglaser-cis_security-1.2.0.tar.gz 未成功安装:指定的角色路径存在且不是目录。

还尝试使用 -p 选项来指示我希望将角色安装在哪里,无论是否存在目录,但每次尝试都会导致最后一个警告。

以 root 身份执行此操作... Ansible 版本是 2.8.13

刚刚发现命令

ansible-galaxy install dsglaser-cis_security-1.2.0.tar.gz -p ./bla

确实有效,但只能作为 root。这不是我想要的……

我做错了什么?

【问题讨论】:

  • 您运行的是哪个版本的ansible?我有 2.9.11 并从 tar 存档安装,这样似乎可以正常工作。
  • 更新了新信息

标签: ansible


【解决方案1】:

我已经把头撞在墙上有一段时间了。我发现我尝试安装的集合具有依赖项,这些依赖项未包含在 tar.gz 文件中。

这会让galaxy出去下载找不到的文件。

解决这个问题的方法是使用另一台装有 ansible (2.10+) 的机器并传输文件。

一旦你在有互联网的机器上安装了 ansible,使用以下命令 ansible-galaxy 合集下载 {{ 合集名称,如果多个使用空间作为分隔符}} 即

ansible-galaxy collection download cisco.ios cisco.asa

这将在您当前的工作目录中创建一个文件夹,其中包含集合及其依赖项的 tar.gz 以及 requirements.yml 文件。

注意:对于 requirements.yml 文件,如果你重新运行下载命令,它会覆盖它,所以如果你有多个集合,请使用上面的单行命令。

然后只需将该文件夹复制到离线 ansible 服务器(2.9+),cd 到该目录,然后运行:

ansible-galaxy collection install -r requirements.yml

鲍勃你的叔叔。 我希望这可以节省一些时间。 感谢这篇关于同一主题的 reddit 帖子 https://www.reddit.com/r/ansible/comments/lh1do0/ansible_newbie_trying_to_install_an_ansible/

【讨论】:

    猜你喜欢
    • 2016-10-25
    • 2014-10-03
    • 2016-08-25
    • 2021-03-10
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多