问题标签 [ansible-galaxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
183 浏览

kubernetes - 即使安装了集合,“community.kubernetes.k8s”也无法在 Ansible 中解析

我想使用 Ansible 创建一些 Kubernetes 对象。可以做到这community.kubernetes.k8s一点,它包含在community.kubernetes集合中。当我尝试创建命名空间时

Ansible 抛出集合未安装的错误:

但是它已经安装好了,正如ansible-galaxy collection install确认的那样:

我安装的 Ansible 版本是 Python 3.8.10 上的 2.9.6,其中ansible_python_interpreter=/usr/bin/python3设置和 Python2 未安装在工作站上(以 为目标ansible_connection=local)。

我究竟做错了什么?

我已经尝试过的

使用旧 + 新命名

安装集合需要 Ansible 2.9+ ansible-galaxy,所以这应该可以工作。在收集文档中,我发现了这个通知:

重要信息 community.kubernetes 集合正在重命名为 kubernetes.core。从 2.0.0 版本开始,该集合已被弃用的所有内容重定向到 kubernetes.core 所取代。如果您使用以 community.kubernetes 开头的 FQCN,请将它们更新为 kubernetes.core。

尽管这似乎令人困惑,因为 Ansible 文档仍然提到community.kubernetes.k8s我也尝试过

并且可以肯定

但仍然抛出相同的无法解决模块/操作“kubernetes.core.k8s”错误。两个目录都~/.ansible/collections/ansible_collections/kubernetes/core/存在~/.ansible/collections/ansible_collections/community/kubernetes/,所以我猜这两个(旧+新命名)都应该工作。

检查目录

ansible-galaxy 通过用switch调用-vvv,我证明了它/home/user/.ansible/collections/ansible_collections是有用的。它还表明这些软件包在后台安装了两个软件包:旧community.kubernetes的和新的kubernetes.core

这对我来说似乎更令人困惑,因为旧的回购说

这个 repo 托管 community.kubernetes (aka kubernetes.core) Ansible Collection。

对我来说,这听起来像是他们只是在更改名称。但正如我们所见,kubernetes.core它有自己的 repo 和版本(2.1.1 vs 2.0)。

为了确保使用此目录,我ansible.cfg在项目范围内将以下内容添加到本地:

没有任何区别。

0 投票
1 回答
444 浏览

ansible - 将ssl证书从服务器复制到ansible中的主机

我正在尝试将本地容器注册表的证书复制到具有 ansible 版本 2.9.6 的 Docker 主机。注册表由其他人管理,但在我们的本地网络中。

使用外壳我会这样做:

到目前为止,我在community.crypto模块上工作了 ansible ans 设法获得证书:

这类似于 shell 替代方案的前半部分。我还没有弄清楚如何完成后半部分的工作,即使用从服务器接收到的内容创建证书。

我尝试使用community.crypto.x509_certificate,但无法使其表现得像openssl_client以下 shell 示例中的那样。

有没有办法用community.crypto模块或以任何其他方式使用 ansible 来做到这一点?

0 投票
0 回答
240 浏览

git - 用于私有 gitlab 存储库的 Ansible-Galaxy,只为所有角色引用一个角色的文件

我只是潜入在私人 gitlab git 存储库中托管定制角色。

对此的答案可能只是“你必须为 1 个角色只有 1 个 repo”,我没有这样做。我试图将两个角色放在一个仓库中,并且刚刚使用文件夹在顶层区分它们。

我似乎已经正确编写了“requirements.yml”,因为它取消了我的角色。但是,它将“nexus”中的所有文件放入“chocolatey_factory”的骨架角色中。'nexus' 导入的角色很好。

我的需求文件如下:

这是我的回购布局。我的想法是让 repo 顶层的每个文件夹都成为一个角色。所以在这种情况下,我有两个角色。

顶级回购

关系文件夹/角色文件

Chocolatey_factory 银河初始化文件夹

我在这里做错了什么?

一个是“nexus”,另一个是“chocolatey_factory”。Nexus 是我获取的可用于配置 Sontaype nexus 的公共角色。Chocolatey_factory 是我正在制作的,但此时它只是一个 ansible-galaxy init 骨架:

然后我运行我的 ansible-galaxy 命令

它导入角色。但是来自“nexus”角色的文件出现在“chocolatey_factory”角色中。

'nexus' 角色有像 pom.xml 这样的文件,其中 'chocolatey_factory' 除了 ansible-galaxy init 创建的东西之外没有任何东西(即它没有 pom.xml 文件)。

您可以在这里看到两个文件夹都有相同的文件。

为什么我的一个角色的文件被插入到另一个角色中?在同一个 git 存储库中不能有两个角色吗?

0 投票
1 回答
524 浏览

docker - 运行本地 ansible 创建本地 docker Image

目录结构

我正在尝试使用 ansible 创建 docker 映像。这是我的剧本 yml

我的 Postgres Docker 文件

当我从项目根目录执行 ansible-playbook 时,这是执行的结果。

根据输出,我希望构建 docker 映像并准备好推送到本地注册表。但是当我执行时,docker images我根本看不到那个图像。

到目前为止我的分析:

我的 DockerFile 必须从项目的根路径复制一些脚本,这就是它具有“../scripts/db-schema”的原因。我无法更改此路径,因为我的docker-compose.dev.yml文件在构建中直接使用相同的 DockerFile 来创建开发容器。

我猜 docker 镜像创建失败,但是 ansible 模块不会抛出错误并提供成功的输出。

其次,ansible docker 模块没有像docker-composeyml 中允许的那样自定义构建上下文的配置。

这是我docker-compose.dev.yml的参考

我的问题:

  1. 我怎么解决这个问题 ?无需重新安排,也无需更改现有的 DockerFile
  2. 如何将 ansible docker 模块配置到自定义上下文?
  3. 为什么 ansible docker 模块没有抛出错误?

Repro 回购:https ://github.com/sathishsoundharajan/ansible-repro

它具有在本地任何人中重现问题所需的文件

0 投票
0 回答
59 浏览

ansible - 使用 ansible 模块将新磁盘添加到 LVM 组

https://serverfault.com/questions/1078120/add-new-disk-to-lvm-group-using-ansible-module

我发布了上述问题,但不确定它是否在正确的位置,所以在这里发布交叉。

团队,有 lvol 模块,但我很难找到将新设备添加到现有 VG 组的方法。所以我采取了替代路线来使用 shell 模块并运行 RAW 命令。但是有没有办法可以使用ansible实现相同的目标?下面是我的代码,它为 4 个步骤运行 4 个任务,它们都工作正常。我只需要等效或更好的 ansible 方法。我知道我可以使用 LIST 参数并将其设为单个任务,但我想在输出中唯一地显示每个任务,以便在观察到失败时。我可以看到它失败的地方。

变量.yaml

0 投票
1 回答
12 浏览

ansible - ios_logging_global 是幂等的吗?

这是我的剧本。我正在尝试向我的交换机添加一个新的日志服务器。

该剧本正在工作(它确实添加了服务器),但它不是幂等的。还有其他人有这个问题吗?我检查了 LF 和编码。Galaxy 系列“cisco.ios”的版本是 2.5。

我的版本是:

$ansible --version

我怎样才能使它具有幂等性?

0 投票
1 回答
64 浏览

ansible - 我无法通过版本标签从 github 安装角色

回购和标签对我来说看起来不错。我可以在不指定标签的情况下安装它,但是它没有版本化:

在此先感谢您的任何建议!

0 投票
0 回答
58 浏览

ansible - 如何使用 ansible-galaxy 命令列出 Ansible Galaxy 角色的版本?

当我使用“ansible-galaxy info author.role_name”时,我得到了大量信息,但没有以前版本的列表。

在网站上,每个角色都有一个很好的以前版本列表,但是当我使用 info 时,没有版本列表:

我在哪里可以找到使用 ansible-galaxy 命令行工具的角色以前版本的列表?

0 投票
0 回答
1264 浏览

python - 错误!无法解析模块/操作“community.aws.ec2_instance_info”。这通常表示拼写错误、缺少集合或模块路径不正确

我有几台安装了 ansible 的 Ubuntu 18.04 机器。在所有这些上运行ansible --version时,我得到以下输出:

顺便说一句,在 处定义的路径configured module search path不存在。

我在所有机器上安装了 community.aws 集合: ansible-galaxy collection install community.aws

我运行了一个简单的剧本来从一些 AWS EC2 实例中收集数据:

除一台机器外,所有机器上一切正常,我收到以下错误:

我跑了一个sudo find / -name "ec2_instance_info.py"看看该文件可能安装在哪里。在所有机器上,我得到完全相同的输出:

我什至在运行这个的机器上强制重新安装:

我得到了这个输出:

但这并没有改变什么。

我还在以前一切正常的机器上运行了强制重新安装。我也设法打破了它。现在我有两台机器正在重现问题。

一种解决方案是直接ec2_instance_info在我的剧本中调用,而不是community.aws.ec2_instance_info. 这有效,但我不知道为什么。无论如何,我不喜欢这个解决方案,因为一些 ansible aws 插件可以在没有 community.aws 前缀的情况下工作,而其他插件则不能。除此之外,当我调用不带前缀的插件时,VS Code 会给我很多警告。

你知道如何解决这个问题吗?我想调用community.aws.ec2_instance_info我的剧本,而不会在任何机器上遇到任何问题。

0 投票
1 回答
268 浏览

ansible - Ansible 离线安装集合

我正在尝试从 tar 文件安装 Ansible,但我似乎面临以下问题:

我得到的错误是:

我遵循了本指南:https ://www.redhat.com/sysadmin/install-ansible-disconnected-node

有什么建议么?