问题标签 [ansible-facts]

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

ansible - 如何在 Ansible 剧本中做出特定于架构的决定?

我正在尝试使用 Ansible 剧本来运行多架构集群。现在,要做到这一点,我需要做出具体的决定。是否有任何 ansible 模块可以帮助我做到这一点?或者有什么方法可以让我知道拱门并在“何时”条件语句中使用它?

0 投票
1 回答
1696 浏览

ansible - Ansible - 将远程脚本的输出读入变量以供其他游戏处理

我正在编写一个剧本,它将在许多远程盒子上运行一个脚本。运行这些遥控器的 stdout_lines 需要整理成一个单独的数组,该数组可以传递给在本地运行的书中的另一个剧本,然后将这个大的整理数组传递给一个模块。

我似乎找不到办法做到这一点。一些代码类型的东西(不起作用)如下:

hostvars['localhost']['final_info']在第二部剧中不存在。

谁能解释我是否(a)使用每个遥控器的输出事实正确构建我的数组,以及(b)如何将最终合并的数组放入另一个游戏中以便我可以使用它?

0 投票
1 回答
502 浏览

ansible - Ansible 处理程序读取本地事实

我有一个 Ansible 剧本,可以在一组服务器中安装可变数量的应用程序。要安装应用程序,必须运行许多顺序任务,并且由于可能有多个应用程序,我循环通过它们with_items:

我还以这样的方式注册本地事实中的任何更改,如果在应用程序 A 上执行三个任务,则标记应用程序 A。

我遇到了处理程序的问题。它应该读取这些本地事实并重新启动任何已标记的应用程序,但我未能实现这一点。我的处理程序只是跳过,但调试显示带有标志的本地事实。

我的剧本与此类似:

我需要帮助的处理程序如下。它正在跳过“重新启动应用程序”任务:

最后我的group_vars

0 投票
1 回答
1442 浏览

ansible - 为什么角色部分中没有 Ansible 事实?

问题

ansible_distribution为什么角色部分中没有诸如 Ansible 的事实?

ansible.cfg

0 投票
1 回答
1329 浏览

ansible - Ansible 从 vars_file 读取多个同名变量

在我的~/ip_vars_file,我有

这是用 lineinfile 创建的,

我无法像 with_items 一样读取所有三个 ip。我只得到我剧本中的最后一个 IP。

我得到的输出是,

我想要的输出是这样的

我想一一迭代ips。我如何实现这一目标?

基本上,我想在启动时存储实例的 ips 并在稍后部署期间使用它们。但是当我启动多个具有相同名称的实例时,我被卡住了

0 投票
1 回答
2404 浏览

ansible - Ansible regex_findall 多组

我正在尝试使用 Ansible 从 IOS 设备收集数据,然后使用收集到的数据来运行任务。

我正在运行一个任务来执行 show running-config 命令来查找具有特定描述的接口:

该任务的输出:

我正在寻找以 * 开头的描述的所有接口名称/编号。我正在使用 set_fact 从 regex_findall() 中获取它:

正则表达式工作正常并从两组中获取数据。输出被视为:

我不知道如何获取该列表中的两个项目并分别使用它们。我想使用 ios_config 运行一个任务,以从该列表中的接口名称/编号配置接口,并使用我收集的该描述。

这是一个嵌套列表吗?我尝试了不同的变化,如:

noAuthInts.0 或 noAuthInts.0.0 和 noAuthInts.0.1,但不产生我正在寻找的东西。

我也尝试使用 with_nested: "{{ noAuthInts }}" 并遍历它,但似乎没有正确循环。

我怎样才能从该列表中取出两件并单独使用它们?

0 投票
2 回答
45 浏览

ansible - 在 ansible 中以编程方式复制和运行配置文件

我正在写一个ansible代码。它执行两个任务,首先是将配置文件分组复制到目标实例。其次是运行该配置文件来安装应用程序。

我正在以编程方式创建配置文件和清单,以便将相同的后缀添加到清单中的配置文件名和组名中:

这是我复制文件的代码

这是我运行conf文件的代码

但是根据用户输入,可以创建不确定数量的 conf 文件和组,所以我想以编程方式完成任务。所需的代码可能如下所示

有人可以建议我用什么来使我的代码更加通用和高效吗?

0 投票
2 回答
7694 浏览

ansible - Ansible:如何在 Ansible 中仅从 FQDN 获取 IP 地址?

所以,这里是设置。

我通过额外的变量将 FQDN 列表传递给剧本,但控制机器的密钥与其相应的 IP 地址一起复制。此外,它们在清单中也没有特定的组。

这个剧本的主机是一个服务器,它可能是也可能不是我通过额外变量传递的这个列表的一部分。因此,剧本根本没有这些节点的事实。

所以,我的问题是如何即时获取各个主机的 IP 地址,以便我可以遍历它们以检查我之前通过另一个剧本/角色使用它们的 FQDN 设置的某些属性。(注意:我严格需要 FQDN 来设置这些属性)

我使用了 delegate_to 模块,并传递了 FQDN,它可以工作,但它会询问我是否要继续连接(是/否)并等待用户输入以进行初始运行(如果给定是,它会按预期工作)。他们还有其他更简单、更清洁的方法来解决这个问题吗?
(注意:请记住,我不能修改库存的内容,例如放置别名等)

这是代码片段:

这是调用上述角色的主 yml 文件的片段:

库存代码片段如下所示:

[servernode]
10.0.2.15 ansible_ssh_user=grant ansible_ssh_pass=grant
[all]
10.0.2.15 ansible_ssh_user=grant ansible_ssh_pass=grant
10.0.2.16 ansible_ssh_user=grant ansible_ssh_pass=grant
10.0.2.17 ansible_ssh_user=grant ansible_ssh_pass=grant
10.0.2.18 ansible_ssh_user=grant ansible_ssh_pass=授予
10.0.2.19 ansible_ssh_user=授予 ansible_ssh_pass=授予

最后,这就是我通过额外变量传递的内容:

0 投票
2 回答
15526 浏览

ansible - 在一个角色中创建 set_fact 变量并在另一个角色中使用它们

我有一个复杂的环境,包含多个系统的阶段和用户。

阶段是:dev,int等。

每个阶段都有一个应用程序的用户,我们称之为用户 john。这导致用户 johnd 用于 dev 和 johni 用于 int 等等。

为了抽象系统管理,由于阶段中的所有系统都是相同的,我创建了这个数据结构:

现在我有一个角色“collect_user_information”,它从 LDAP 收集所有类型的信息,并在 set_fact 的帮助下将它们存储在一个变量中。

和 set_fact:

要转储变量,我使用:

调试输出看起来很有希望。

现在我想执行一个角色来创建用户主页。

首先,我转储变量的条目:

现在我想使用这个数据结构。我想我可以通过引用“{{user.name}}”或“{{user['name']}}”来访问这些值,但两者都不起作用。

那么,它是如何工作的?

0 投票
1 回答
113 浏览

ansible - 是否可以使用 with_dict 模块和 ansible-fact ?

我正在尝试编写一个角色来配置一个 keepalived 集群。我希望根据目标框的 IP 将唯一信息传递到模板中。

在这种情况下:服务器 A 是 192.168.1.140,服务器 B 是 192.182.1.141,VIP 是 192.168.1.142

字典看起来像这样:

我希望任务看起来像这样:

模板看起来像这样:

任何见解将不胜感激约翰