问题标签 [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 投票
3 回答
13439 浏览

ansible - Ansible:如何为播放的所有主机调用模块`add_host`

我正在用这个剧本创建一个剧本:

在主机上hypervisors

  • 从所有主机检索虚拟机列表
  • 使用模块add_host将它们全部添加到一个名为的新库存组中guests

我的库存:

我的剧本:

模块add_host 绕过 play host 循环,只对 play 中的所有主机运行一次

然后它被调用一次(对于 host1),这是使用这个模块的一个特例(见上面的链接),好像变量run_once被隐式固定为true.

如何将它用于组中的所有主机hypervisors

编辑:仅使用 localhost 在您的计算机上重现它的示例

创建文件/tmp/host1_test以模拟来宾vm1vm2的返回:

创建文件/tmp/host2_test以模拟来宾vm3vm4的返回:

将此清单 ( test_add_host.ini ) 与两台主机一起使用,均具有固定 IP 地址127.0.0.1

使用这个剧本(test_add_host.yml):

使用以下命令在本地调用此 playbook:

  • 首先播放呼叫主机host1host2
  • 第二次播放呼叫主机vm1vm2

我应该怎么做才能在第二次播放中调用所有主机(vm1vm2vm3vm4)?

0 投票
2 回答
6017 浏览

ansible - Ansible,如何在主机清单中定义列表?

我有一本剧本,我想在我的主机文件中定义一个字符串列表。

这是我的主机文件:

这是我尝试使用列表文档编写的剧本:

但是运行此剧本ansible-playbook -i hosts ping.yml会导致此错误:

任务:[调试] ********************************************* *******************
致命:[1.2.3.4] => with_items 需要一个列表或一个集合

这似乎是将定义的列表从主机文件传输到 playbook 的问题,因为直接在 playbook 中定义列表是有效的:

0 投票
1 回答
603 浏览

ansible - Ansible:host_variables 分组在一个文件中

我在每个服务器(主机)上都有一个具有不同值的键,如何将所有这些值保存在一个文件中,以便在执行我的剧本时它从该文件中读取。

来自 Ansible 文档:我在 host_vars/hostname 下发现我必须为每个服务器创建一个文件并添加变量。如果我有 100 台服务器会很麻烦

0 投票
1 回答
503 浏览

ansible - ansible 动态主机拒绝使用自定义解释器

我正在尝试使用 ec2 模块在 AWS 上配置新机器并在本地更新我的主机文件,以便下一个任务已经使用主机文件。

因此,配置不是问题,甚至是本地主机文件的创建:

但是,下一个任务是 hostname -i 的简单打印(仅用于测试)失败,因为它在 Ubuntu 16.04 LTS Python 2.7(有 python3)上找不到为此,在我的动态主机文件中添加以下行:

但似乎 ansible 忽略了它并直接进入缺少的 python 2.7。

我试图重新加载库存文件

但这也无济于事。我究竟做错了什么 ?

0 投票
1 回答
370 浏览

amazon-web-services - 在 Ansible/AWS 中本地和远程执行角色

我用 Ansible 编写了两个角色。第一个角色(即配置)在具有所需 IAM 以配置 EC2 实例的实例上本地执行(见下文):

然后我将私有 IP 地址添加到主机。

我等待 SSH 可用。

第二个角色(即 setupEnv)在 'sit' 主机上设置环境变量,例如用户/组目录。我尝试按顺序运行角色(参见下面的main.yml剧本):

但是,只有第一个角色会在本地主机上执行。Ansible 一直等到 SSH 在预配置的实例上可用,然后该过程完成而不尝试角色 setupEnv。

有没有办法可以确保在sitSSH 可用后在主机上执行第二个角色?

0 投票
1 回答
1878 浏览

mongodb - 如何使用 Ansible playbook 在 MongoDB 数据库中使用动态清单访问主机的变量?

我正在尝试使用存储在 MongoDB 中的信息生成初始配置。我正在使用 Ansible 的动态库存功能。后端是一个简单的 mongodb 数据库。手动运行时ansible_fetch_mongodb.py --list,它会根据 Ansible 的要求以 JSON 格式返回组及其变量/子项。使用该--host <hostname>参数还可以毫无问题地返回主机及其变量。但是,当尝试访问变量时,例如item.hostname,或item.var2在 Ansible 剧本中,它会出错并告诉我item.hostname未定义。我正在使用ansible-playbook build_configs.yml -v -i ansible_fetch_mongodb.py命令来运行它。我已经在这个问题上工作了几个小时,非常感谢任何有关从动态源访问变量的正确语法的帮助。

这是剧本:

这是 MongoDB 中表示的主机:

以下是 MongoDB 中表示的组:

这是错误:

任务[调试] ********************************************** ****************************************************** ****************************************************** **************

致命的:[本地主机]:失败!=> {"failed": true, "msg": "字段 'args' 的值无效,似乎包含一个未定义的变量。错误是:'ansible.vars.unsafe_proxy.AnsibleUnsafeText object' has no属性“data1_svi_ip”\n\n错误似乎出现在“/etc/ansible/build_configs.yml”中:第 8 行第 5 列,但可能\n在文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n with_inventory_hostnames: all\n - debug: msg=\"{{ item.data1_svi_ip }}\"\n ^ here\n我们可能错了,但这个看起来可能是出现\n缺少引号的问题。总是在模板表达式括号\n开始一个值时加上引号。例如:\n\n with_items:\n - {{ foo }}\n\n应该写成:

0 投票
1 回答
266 浏览

amazon-web-services - 如何为 ec2.py 和 ec2.ini 指定自定义路径?

到目前为止,我的目录中有我的ec2.pyec2.ini文件:/etc/ansible/inventory.

但是,现在我需要在 AWS Lambda 中运行我的剧本,我需要将所有文件都放在根文件夹中,这意味着这两个文件都应该与剧本的.yml文件位于同一路径中。

那么,我该如何让它工作呢?

我是否需要更改ansible.cfg文件,或在 Ansible 运行命令中进行更改,目前是:ansible-playbook -vvv demo_provision.yml -b -e "N= bucket_name=bucket_name"

我的ansible.cfg文件目前是:

0 投票
1 回答
2335 浏览

amazon-web-services - Ansible 动态清单:检索 ec2 清单时的身份验证错误

我正在使用 Ansible 的动态清单功能连接到 AWS 帐户中的 ec2 实例,方法如下:

我已将https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.py复制到https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2库存目录下的.ini文件。

在运行AWS_PROFILE=personal ansible-playbook cifarm.yml -C时,它会抛出以下错误:

输出:错误:库存脚本 (inventory/ec2.py) 有一个执行错误:错误:“检索 ec2 库存的身份验证错误。-发现 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量但可能不正确-在 '~/.boto, ~/.aws/credentials',但包含的凭证可能不正确”,同时:获取 EC2 实例

我正在从 MAC OS 运行剧本。请注意,我能够在下面成功运行:

这证明凭证是正确的,并且我已经导出了 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。

我尝试执行 inventory/ec2.py 文件,如下所示:

它回来了同样的错误。我看到一个帖子建议更新机器上的时间,我正在运行剧本。所以我跑了 ntpdate -u

但问题仍然存在。我不知道是什么原因。非常感谢任何帮助/建议。

0 投票
6 回答
102407 浏览

ssh - Ansible 配置错误!无法使用 SSH 密码代替密钥

我想使用 Ansible 从最后一个节点中配置我的三个节点。

我的主机是 Windows 10。

我的 Vagrantfile 看起来像:

我的剧本看起来像:

我的主机文件如下所示:

执行后vagrant up --provision出现以下错误:

我扩展了我的 Vagrantfileansible.limit = :all并将其添加[all:vars]到主机文件中,但仍然无法解决错误。

有没有人遇到过同样的问题?

0 投票
1 回答
67 浏览

ssh - Ansible:无法登录到本地 Vagrant 服务器

我有两个运行不同 IP 的 Vagrant 实例:

我的 Ansible 主机文件在/etc/ansible/hosts其中,它看起来像:

我可以使用以下命令轻松地通过 SSH 连接到第二台服务器:

没有密码。

但是运行 Ansible 命令会产生错误:

我该如何解决这个错误?