问题标签 [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.
ansible - 如何从剧本中的 vsphere_guest 结果中检查 ipaddresses 变量?
我有部署虚拟机的剧本。我想要延迟运行剧本,直到 vm 获得 IP 地址。我尝试制作循环但有错误。
{"failed": true, "msg": "条件检查 'vsphere_facts.ansible_facts.hw_eth0.ipaddresses[0] = \"192.168.250。\"' 失败。错误是:模板化字符串时出现模板错误:预期令牌'语句块结束',得到'='。字符串:{% if vsphere_facts.ansible_facts.hw_eth0.ipaddresses[0] = \"192.168.250 . \" %} 真 {% else %} 假 {% endif %}"}
ansible - 使用 Jinja2 过滤器获取组中主机的 IP 列表
我正在构建几个角色,我需要将指定组中所有主机的 IP 地址作为逗号分隔的字符串提供给配置。
是否有过滤器的 jinja2 组合(如映射、匹配、选择、连接等)产生与此相同的结果:
ansible - Ansible 事实不能作为我的主机/组变量引用
如果我要在“host_vars/host_name”或“group_vars/group_name”文件夹下声明以下变量 - 我将得到未定义的变量。
同时,如果我要在我的任何 ":var" 组变量下的 Inventory 文件中声明相同的内容,我可以调用我的变量就好了。
我想知道这是否是预期的?有没有其他人看到类似的东西?事实查找当然是启用的。
这是我的例子:
ansible - 在 ansible 中查找 docker 卷列表的卷挂载点
不幸的是,当前没有允许我们使用 docker 卷的 API。目前,如果我需要将数据复制到 docker 卷中(注意:不是 docker容器),我必须首先确保某些容器可以访问该卷,然后使用 ansible 运行docker cp
。但是对于这类任务,甚至可能没有安装了卷的 docker 容器。这不是幂等的。这不允许绝大多数 ansible 通常很棒的 API。这通过添加许多额外的步骤使过程复杂化。这不是可靠的方式。如果我们可以简单地找到我们感兴趣的每个卷的挂载点,然后直接与主机的文件系统进行 ansible 对话呢?
因此,假设我们有一些我们将使用的 docker 卷的名称列表。对于列表中的每个项目,我们希望使用 docker 守护进程对其进行检查,然后使用 ansible 设置有关其挂载点的事实。这是我到目前为止所拥有的:
注意:命令返回如下内容:
剧本继续:
但是,这并不像我预期的那样工作,因为 ansible 报告错误"The variable name '' is not valid. Variables must start with a letter or underscore character, and contain only letters, numbers and underscores.
这可能是因为我正在使用的 JSON 查询过滤器的语法,但我找不到任何关于我应该如何使用它的文档。
environment-variables - 使用 ansible 从 env 文件中读取多个值并将它们存储为事实
我有以下代码从环境(.env)文件中读取值并将它们存储为事实:
它非常笨重且笨拙。我想写这样的东西,但我不知道如何:
相反,我得到了这个输出:
当然,更理想的情况是,如果有一个我忽略的 ansible 模块允许我从环境文件中加载值。
linux - 使用 ansible 检查挂载点使用情况
我正在尝试使用 ansible 列出使用率超过 50% 的挂载点。我在 AWK 上遇到错误。
如果我单独运行此命令,它可以工作
或者
如果我将相同的命令放在 ansible shell 中,它会失败
这里:
有没有办法做到这一点?有一个更好的方法吗?可能是使用的因素?
arrays - 如何将命令输出存储到 Ansible 中的数组中?
本质上,我希望能够使用 ansible 在 Linux 中处理“通配符文件名”。本质上,这意味着使用 ls 命令,文件名的一部分后跟一个“*”,以便它只列出某些文件。
但是,我无法将输出正确存储在变量中,因为可能会返回多个文件名。因此,我希望能够存储这些结果,无论在一项任务期间数组中可能有多少。然后,我希望能够在以后的任务中从数组中检索所有结果。此外,由于我不知道可能会返回多少个文件,因此我无法为每个文件名执行一项任务,而数组更有意义。
这背后的原因是随机存储位置中的文件经常更改,但它们始终具有相同的前半部分。他们名字的后半部分是随机的,我根本不想把它硬编码到 ansible 中。
我完全不确定如何在 ansible 中正确实现/操作数组,因此以下代码是我“尝试”完成的示例。显然,如果返回多个文件名,它将无法按预期运行,这就是我在此主题上寻求帮助的原因:
我知道 YAML 格式有点混乱,但如果它是固定的,这个“将”正常运行,它不会给我我正在寻找的输出。因此,如果有 50 个文件,我希望 ansible 能够全部操作它们,和/或能够全部删除它们......等等等等。
如果这里有人可以让我知道如何正确利用上述测试代码片段中的数组,那就太棒了!
azure - 如何从 Ansible azure_rm_publicipaddress_facts 模块获取公共 IP 到一个变量中以与 add_host 一起使用?
我正在尝试使用 Ansible 为 Azure 自动化设置管道,一切正常,除非我尝试将公共 IP 地址放入变量以与 add_host 一起使用。这是我的示例任务:
这给了我以下错误:
致命的:[本地主机]:失败!=> {"failed": true, "msg": "'args' 字段的值无效,似乎包含未定义的变量。
但是值在那里,如图所示:
所以,我想我错过了一些东西,有人能指出我正确的方向吗?
ansible - Ansible:访问由 set_fact 设置的事实
我需要能够使用 Ansible 中的任务设置变量。我为此使用了 set_fact,但似乎无法访问我用它设置的事实。下面的代码有什么问题:
ansible - 使用 with_items 连接字符串并分配给 Ansible 中的变量
启动 ec2_instances 时,我需要将两个 2 IP 保存到 vars_file 中的一个变量中,稍后在部署期间使用。
这就是我保存单个服务器 ip 的方式:
我在 dynamic_ips 文件中的输出是server_public_ip: xxx.xxx.xx.x
现在我有 2 台服务器启动并注册为服务器。
我需要将此保存为server_public_ips: xxx.xx.x.xx , xxx.x.xx.x
我试图声明一个空字符串并将 ips 附加到它,像这样,但我收到错误。
我认为可以使用 lineinfile insertafter 和 regex 来完成。
最后,我需要这个在不同的服务器上执行此操作,