问题标签 [ansible-inventory]

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 回答
2191 浏览

ansible - 库存中的 Ansible 嵌套变量

我已经使用 Ansible 有一段时间了,并且通常对库存中的变量没有任何问题。但是,我第一次必须覆盖库存中的嵌套变量,并且我希望它能够工作......没有。

角色的default/main.yml样子是这样的:

我需要覆盖某些主机的默认存档文件夹,因为其中一些主机为此目的附加了一个外部文件系统,所以我在清单中执行了此操作:

我也尝试将值放在双引号和单引号中,例如

但它不起作用。Ansible 不会抛出任何错误,但不会覆盖默认值。这样做的正确语法是什么?

0 投票
2 回答
20189 浏览

ansible - 将主机添加到 Ansible 主机文件

我一直在尝试使用 Ansible 剧本将主机名添加到我的主机文件中。我的 Ansible 游戏如下所示,我的主机文件位于/etc/ansible/hosts

Playbook 成功执行,但新主机名未添加到 Ansible hosts 文件中。有人可以帮我吗?

0 投票
1 回答
2481 浏览

ansible - Ansible - 从清单文件中获取主机名和私有 IP

有没有办法获取每个节点的私有IP?

使用此模板:

我得到以下结果:

作为我的库存文件:

想法是获取此信息,以便我可以/etc/hosts/在控制节点中填充文件

0 投票
1 回答
7658 浏览

ansible - 在特定主机组上运行 ansible

我正在尝试使用以下命令运行 ansible,

我的主机文件包含以下主机组,

我的 provision.yml 还包含 2 个主机,如下所示,

我的问题甚至认为我使用为 webclient 指定的“-l webserver”角色也运行在 webclient 主机中。如何控制它只运行特定的主机组?

0 投票
1 回答
53 浏览

ansible - 参考 Ansible 库存录入的 value 部分

如果我的 Ansiblehosts文件中有以下条目:

然后在我的任务代码的其他地方,我可以参考动态获取主机名myserver{{ groups['dbserver'][0] }}效果很好。

现在 - 类似的情况。假设我将hosts文件更改为:

我发现{{ groups['dbserver'][0] }}现在将返回“db1”,它似乎是一个纯字符串。但是如果我需要引用实际的主机名“myserver”并且还需要知道用户“myuser”怎么办。如何访问这些值?

0 投票
1 回答
1414 浏览

ansible - 如何在剧本中使用 vsphere_guest 结果中的 ipaddresses 变量?

我想使用的变量ipaddressesvsphere_guest我想首先在 vSphere 中使用虚拟机的名称来获取其 IP 地址,然后使用该 IP 地址在该机器上运行 Ansible 播放。

到目前为止,我有:

我应该如何进行?

0 投票
0 回答
185 浏览

amazon-ec2 - 多个库存不工作 - 未找到主机

我正在使用 Ansible EC2 动态清单脚本来访问我在 EC2 中的主机。我正在寻找的主机有一个名为 的标签sisyphus_environmentdevelopment另一个名为sisyphus_project的标签reddot,所以我需要这些标签的交集。

但是,我什至无法过滤一个标签与 EC2 库存正常工作。

我可以使用 AWS CLI 清楚地找到有问题的实例:

我试图用 Ansible 做同样的事情,表示为由这些标签过滤的动态成员组成的静态组。

我的 ansible.cfg:

我的 EC2 库存与ec2.ini一起直接来自上游

我的库存目录如下所示:

我必须inventory使用.ini扩展名来命名,否则 Ansible 会尝试将其加载为 YAML 并失败。

我的inventory/inventory.ini文件如下所示:

与 Ansible 关于此事的文档类似。不幸的是,这个简单的事情失败了:

如果我按标签查询,我会得到结果:

有没有我错过的步骤?

我的 Ansible 版本:

0 投票
1 回答
449 浏览

ansible - 使用动态库存时,ansible 返回不正确的变量

测试:ansible 2.2.0.0、2.2.1.0 & 2.1.4.0

我有一个清单脚本,它在运行时返回这个 json(例如为了最小化):

我正在编写的剧本是用于部署应用程序的。清单中的变量对于组是唯一的,即每个服务都有自己的 lb 池和 http 端口。一台主机上也可以有多个应用程序。这就是剧本喜欢的样子:

角色中的任务只是打印出变量 nginxpool 和 httpport。

我像这样运行剧本:

预期结果:

实际结果:

--limitansible的工作部署在为componentA-service_ci列出的主机上,但对于host1.example.com,我从componentB-service_ci vars获取nginxpool和httpport的值。我阅读了文档,但不明白这是怎么发生的?这是一个错误还是我只是不理解 ansible 在这里的工作原理?

0 投票
1 回答
1730 浏览

ansible - Ansible-playbook 针对不在清单文件中并包含组变量的任意主机运行

当我以这种方式运行剧本时runrole.yml

runrole.yml有:

它可以工作(即它针对 192.168.0.7 运行),但它失败了,因为我没有提供所有额外的参数

我希望 Ansible 使用在group-vars/allwindows.yml.

如果我将清单文件添加到组[allwindows]主机中,它将起作用192.168.0.7

并使用:

它工作正常,因为它检测到192.168.0.7属于一个 group allwindows。在某些情况下,我想在不接触库存文件的情况下对主机运行角色。如何在不修改清单文件的情况下指定包含组allwindows以使用所有变量?group_vars/allwindows.yml

0 投票
1 回答
11183 浏览

ansible - Ansible:使用带有变量的嵌套组

我有一种情况,我们有 3 层框,在每一层中我们应用不同的变量设置(比如缓存目录在哪里),但是有一堆默认值。我还需要在每个节点的基础上进行覆盖,这通常是通过主机本身的库存变量来完成的。我不确定组织主持人的最佳方式是什么,以便优先权对我有利。

这是我尝试过的不同方法。在每种情况下,我在库存文件中都有这样的条目:

起初,我让它们中的每一个都有一长串变量定义。我也有不同的group_var/bots/[bots-magical | bots-super-fancy | bots-fancy].yaml文件。这很快就变得站不住脚了。


尝试1:使用剧本变量在剧本中我有这样的事情:

这有效(虽然是脆弱的),但它不会让我在每个主机的基础上覆盖。我不得不偶尔在节点上设置不同的东西,但不是在整个组上。


尝试2:group_vars为每个使用

我添加了

到主机文件。vars_files从剧本中删除任何内容并group_vars为每个组创建。我将默认/共享设置添加到group_vars/bots.yaml. 当我运行剧本时,它只会加载bots它看起来的 group_vars。理想情况下,我希望它加载bots,然后用bots-fancy. 最后是主机文件中的值。

我不确定构建这些组的最佳方式,因此任何输入都会非常有帮助!