问题标签 [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 回答
18522 浏览

ansible - How to make Ansible playbook run on first host in the group?

How can I run a playbook only on first host in the group?

I am expecting something like this:

But this doesn't work, gives error:

'groups' is undefined

How can I make it work?

0 投票
1 回答
993 浏览

ansible - 如何使用数据中心和环境组织 Ansible 库存?

如果我们有 2 个数据中心,东部和西部。

然后我们有 3 个环境 DEV、QA、PROD。

每个数据中心和环境都有自己的 Consul 集群。

现在我想从清单中引用 Consul 集群,例如:

如何组织我的清单和 group_vars 以只为该数据中心和环境生成正确的 Consul 集群主机?

我的一个想法是为每个数据中心和环境创建一个清单文件。

例如:

  • 西-dev.ini
  • 西qa.ini
  • 西产品.ini
  • 东-dev.ini
  • 东-qa.ini
  • 东prod.ini

这似乎是合理的,但现在我如何处理 group_vars 中的仅环境变量或仅数据中心变量?我让他们成为儿童团体吗?

0 投票
1 回答
957 浏览

ansible - Ansible:在 playbook 中使用 hosts.ini 的主机地址

我必须用 ansible 做一个 POST 请求。

我的hosts.ini文件是:

我必须连接的url需要worker1的ip地址,所以我把我的剧本写成:

但是运行它,我得到:

字段“args”的值无效,似乎包含未定义的变量。错误是:“worker1”未定义

问题出在哪里?

0 投票
1 回答
591 浏览

ansible - 根据 Ansible playbook 中的主机运行角色

我必须使用两本剧本,因为我的主人正在为每个角色而改变。有什么解决方法可以让我在单个剧本中完成这项工作吗?

剧本-1:

剧本2:

我已经尝试过这种方法,但似乎这不是 Ansible 的工作方式..

剧本.yml:

0 投票
2 回答
1829 浏览

vagrant - host_vars 和 group_vars 没有被加载

我有以下文件夹结构,这似乎使它可以构建和加载角色,但是没有加载组和主机变量。怎么来的?

/etc/ansible/

/文档/ansible/

主机文件

**流浪者**

0 投票
1 回答
1221 浏览

amazon-ec2 - 在詹金斯,我的剧本路径是什么?如何设置库存有 3 个相同的选项

我已经在我的 AWS Instance centos 上安装了 Jenkins 和 ansible,并试图从 jenkins 调用我的 ansible playbook?我不知道如何设置:我的剧本路径是什么?如何设置 Inventory 有 3 个相同的选项(1. 不要指定 Inventory 2. 文件或主机列表
3.Inline 内容)帮助我,以便我调用我的 ansible 从 jenkins 运行

0 投票
1 回答
615 浏览

ansible - 当文件名与主机名匹配时,Ansible 任务在委派主机上运行时出现问题

我有一本剧本,其中的一项任务是将模板文件复制到具有delegate_to的特定服务器:名为“grover”

此处包含重要服务器的清单列表是:bigbird、grover、oscar

这些模板文件必须有一个与每个服务器的主机名匹配的名称,并且委托服务器 grover 也必须有它自己的所述文件的实例。仅当文件不存在时,才应进行此模板复制操作。/tmp/grover 预先存在于服务器 grover 上,它需要保持不受剧本运行的影响。

最终除了server grover上的/tmp/grover,运行后应该还存在:/tmp/bigbird和/tmp/oscar也在server grover上。

我遇到的问题是,当剧本在没有任何条件的情况下运行时,它确实起作用,但它也会破坏/覆盖 /tmp/grover,这是不可接受的。

但是,如果我在以前的播放中添加任务以预先检查这些文件,然后在模板播放中添加条件以跳过 grover(如果文件已经存在),它不仅会跳过 grover,而且会跳过所有其他将运行的服务器格罗弗也为那场比赛而战。如果我尝试将其设置为在所有其他服务器上运行但 grover,它仍然会失败,因为委托服务器是 grover 并且将被跳过。

这是实际的示例代码片段,由于主机模式,playbook 正在所有 3 台服务器上运行:

如果我运行它,并且 /tmp/grover 存在于 grover 上,那么它将简单地跳过整个复制播放,因为 grover 上的条件失败。因此,由于此问题,其他服务器将永远不会将其 /tmp/bigbird 和 /tmp/oscar 模板复制到 grover。

最后,我想避免 ghetto 解决方案,例如保存 grover 的原始配置文件的备份,允许使用 clobber,然后将保存的文件复制回来作为最后一项任务。

我一定在这里遗漏了一些东西,我不可能是唯一遇到这种情况的人。任何人都知道如何为此编码?

0 投票
2 回答
12698 浏览

ansible - Playbook 目录和 Inventory 目录

这里 有一句话:

提示:在 Ansible 1.2 或更高版本中,group_vars/ 和 host_vars/ 目录可以存在于 playbook 目录或 inventory 目录中。如果两个路径都存在,则 playbook 目录中的变量将覆盖清单目录中设置的变量。

我该如何定义:

  • 剧本目录
  • 库存目录

我不知道这种配置,似乎在我使用 Ansible 的过程中,我总是有一个目录,它同时位于 playbook 目录和库存目录中,但这种分离可能很有用。

0 投票
2 回答
3373 浏览

ssh - Ansible Permission denied (public key) 但使用相同密钥的 ssh 有效

我在 Ubuntu 16.x(ansible 版本 2.2.1.0 和 2.2.2.0)上运行这个 Ansible ad-hoc 命令

其中 host_alias 是定义的 ansible hosts 文件(定义一个 ec2 实例及其 .pem 文件)。

主机文件如下所示:

我收到此错误:

当我 ssh(由 定义~/.ssh/config)时,相同的主机和密钥工作正常。我已经三重确保密钥在那里并且具有读取权限。我还尝试ansible_user在 Ansible 主机文件中设置。

有任何想法吗?

0 投票
1 回答
4069 浏览

ansible - 使用 ansible-playbook 选择特定的主机/主机组

使用ansible-playbookcommand ,我们可以为清单中的所有主机执行 playbook,我有一个从网络服务器中删除缓存的 playbook。但我不应该删除特定机器上的缓存,除非开发人员要求这样做。

但是通过使用,ansible-playbook我无法从清单中选择特定的主机。但是我可以使用一些语法,ansible-playbook somebook.play -i hostname,但这会查找 DNS 条目并相应地执行,但不会检查库存文件。

另一种方法是为每个主机创建单独的清单文件,并根据开发人员请求的主机调用它们,我不知道有多少推荐的方式。

最后一种方法 AFAIK 是ansible.runner通过 Python 使用并在主机名上使用模式并调用 python 程序。

感谢您阅读我的长文。

除了这些,您是否知道在执行剧本时从清单中选择特定主机/主机组的任何其他方法?

我想知道任何其他方式,但只使用 ansible-playbook 和库存文件。