问题标签 [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.
ansible - 库存中的 Ansible 嵌套变量
我已经使用 Ansible 有一段时间了,并且通常对库存中的变量没有任何问题。但是,我第一次必须覆盖库存中的嵌套变量,并且我希望它能够工作......没有。
角色的default/main.yml
样子是这样的:
我需要覆盖某些主机的默认存档文件夹,因为其中一些主机为此目的附加了一个外部文件系统,所以我在清单中执行了此操作:
我也尝试将值放在双引号和单引号中,例如
但它不起作用。Ansible 不会抛出任何错误,但不会覆盖默认值。这样做的正确语法是什么?
ansible - 将主机添加到 Ansible 主机文件
我一直在尝试使用 Ansible 剧本将主机名添加到我的主机文件中。我的 Ansible 游戏如下所示,我的主机文件位于/etc/ansible/hosts
:
Playbook 成功执行,但新主机名未添加到 Ansible hosts 文件中。有人可以帮我吗?
ansible - Ansible - 从清单文件中获取主机名和私有 IP
有没有办法获取每个节点的私有IP?
使用此模板:
我得到以下结果:
作为我的库存文件:
想法是获取此信息,以便我可以/etc/hosts/
在控制节点中填充文件
ansible - 在特定主机组上运行 ansible
我正在尝试使用以下命令运行 ansible,
我的主机文件包含以下主机组,
我的 provision.yml 还包含 2 个主机,如下所示,
我的问题甚至认为我使用为 webclient 指定的“-l webserver”角色也运行在 webclient 主机中。如何控制它只运行特定的主机组?
ansible - 参考 Ansible 库存录入的 value 部分
如果我的 Ansiblehosts
文件中有以下条目:
然后在我的任务代码的其他地方,我可以参考动态获取主机名myserver
。{{ groups['dbserver'][0] }}
效果很好。
现在 - 类似的情况。假设我将hosts
文件更改为:
我发现{{ groups['dbserver'][0] }}
现在将返回“db1”,它似乎是一个纯字符串。但是如果我需要引用实际的主机名“myserver”并且还需要知道用户“myuser”怎么办。如何访问这些值?
ansible - 如何在剧本中使用 vsphere_guest 结果中的 ipaddresses 变量?
我想使用的变量ipaddresses
。vsphere_guest
我想首先在 vSphere 中使用虚拟机的名称来获取其 IP 地址,然后使用该 IP 地址在该机器上运行 Ansible 播放。
到目前为止,我有:
我应该如何进行?
amazon-ec2 - 多个库存不工作 - 未找到主机
我正在使用 Ansible EC2 动态清单脚本来访问我在 EC2 中的主机。我正在寻找的主机有一个名为 的标签sisyphus_environment
和development
另一个名为sisyphus_project
的标签reddot
,所以我需要这些标签的交集。
但是,我什至无法过滤一个标签与 EC2 库存正常工作。
我可以使用 AWS CLI 清楚地找到有问题的实例:
我试图用 Ansible 做同样的事情,表示为由这些标签过滤的动态成员组成的静态组。
我的 ansible.cfg:
我的库存目录如下所示:
我必须inventory
使用.ini
扩展名来命名,否则 Ansible 会尝试将其加载为 YAML 并失败。
我的inventory/inventory.ini
文件如下所示:
这与 Ansible 关于此事的文档类似。不幸的是,这个简单的事情失败了:
如果我按标签查询,我会得到结果:
有没有我错过的步骤?
我的 Ansible 版本:
ansible - 使用动态库存时,ansible 返回不正确的变量
测试:ansible 2.2.0.0、2.2.1.0 & 2.1.4.0
我有一个清单脚本,它在运行时返回这个 json(例如为了最小化):
我正在编写的剧本是用于部署应用程序的。清单中的变量对于组是唯一的,即每个服务都有自己的 lb 池和 http 端口。一台主机上也可以有多个应用程序。这就是剧本喜欢的样子:
角色中的任务只是打印出变量 nginxpool 和 httpport。
我像这样运行剧本:
预期结果:
实际结果:
该--limit
ansible的工作部署在为componentA-service_ci列出的主机上,但对于host1.example.com,我从componentB-service_ci vars获取nginxpool和httpport的值。我阅读了文档,但不明白这是怎么发生的?这是一个错误还是我只是不理解 ansible 在这里的工作原理?
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
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
. 最后是主机文件中的值。
我不确定构建这些组的最佳方式,因此任何输入都会非常有帮助!