问题标签 [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:如何为播放的所有主机调用模块`add_host`
我正在用这个剧本创建一个剧本:
在主机上hypervisors
:
- 从所有主机检索虚拟机列表
- 使用模块
add_host
将它们全部添加到一个名为的新库存组中guests
我的库存:
我的剧本:
模块add_host
绕过 play host 循环,只对 play 中的所有主机运行一次。
然后它被调用一次(对于 host1),这是使用这个模块的一个特例(见上面的链接),好像变量run_once
被隐式固定为true
.
如何将它用于组中的所有主机hypervisors
?
编辑:仅使用 localhost 在您的计算机上重现它的示例
创建文件/tmp/host1_test以模拟来宾vm1和vm2的返回:
创建文件/tmp/host2_test以模拟来宾vm3和vm4的返回:
将此清单 ( test_add_host.ini ) 与两台主机一起使用,均具有固定 IP 地址127.0.0.1:
使用这个剧本(test_add_host.yml):
使用以下命令在本地调用此 playbook:
- 首先播放呼叫主机host1和host2
- 第二次播放呼叫主机vm1和vm2
我应该怎么做才能在第二次播放中调用所有主机(vm1、vm2、vm3和vm4)?
ansible - Ansible,如何在主机清单中定义列表?
我有一本剧本,我想在我的主机文件中定义一个字符串列表。
这是我的主机文件:
这是我尝试使用列表文档编写的剧本:
但是运行此剧本ansible-playbook -i hosts ping.yml
会导致此错误:
任务:[调试] ********************************************* *******************
致命:[1.2.3.4] => with_items 需要一个列表或一个集合
这似乎是将定义的列表从主机文件传输到 playbook 的问题,因为直接在 playbook 中定义列表是有效的:
ansible - Ansible:host_variables 分组在一个文件中
我在每个服务器(主机)上都有一个具有不同值的键,如何将所有这些值保存在一个文件中,以便在执行我的剧本时它从该文件中读取。
来自 Ansible 文档:我在 host_vars/hostname 下发现我必须为每个服务器创建一个文件并添加变量。如果我有 100 台服务器会很麻烦
ansible - ansible 动态主机拒绝使用自定义解释器
我正在尝试使用 ec2 模块在 AWS 上配置新机器并在本地更新我的主机文件,以便下一个任务已经使用主机文件。
因此,配置不是问题,甚至是本地主机文件的创建:
但是,下一个任务是 hostname -i 的简单打印(仅用于测试)失败,因为它在 Ubuntu 16.04 LTS Python 2.7(有 python3)上找不到为此,在我的动态主机文件中添加以下行:
但似乎 ansible 忽略了它并直接进入缺少的 python 2.7。
我试图重新加载库存文件
但这也无济于事。我究竟做错了什么 ?
amazon-web-services - 在 Ansible/AWS 中本地和远程执行角色
我用 Ansible 编写了两个角色。第一个角色(即配置)在具有所需 IAM 以配置 EC2 实例的实例上本地执行(见下文):
然后我将私有 IP 地址添加到主机。
我等待 SSH 可用。
第二个角色(即 setupEnv)在 'sit' 主机上设置环境变量,例如用户/组目录。我尝试按顺序运行角色(参见下面的main.yml
剧本):
但是,只有第一个角色会在本地主机上执行。Ansible 一直等到 SSH 在预配置的实例上可用,然后该过程完成而不尝试角色 setupEnv。
有没有办法可以确保在sit
SSH 可用后在主机上执行第二个角色?
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应该写成:
amazon-web-services - 如何为 ec2.py 和 ec2.ini 指定自定义路径?
到目前为止,我的目录中有我的ec2.py
和ec2.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
文件目前是:
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
但问题仍然存在。我不知道是什么原因。非常感谢任何帮助/建议。
ssh - Ansible 配置错误!无法使用 SSH 密码代替密钥
我想使用 Ansible 从最后一个节点中配置我的三个节点。
我的主机是 Windows 10。
我的 Vagrantfile 看起来像:
我的剧本看起来像:
我的主机文件如下所示:
执行后vagrant up --provision
出现以下错误:
我扩展了我的 Vagrantfileansible.limit = :all
并将其添加[all:vars]
到主机文件中,但仍然无法解决错误。
有没有人遇到过同样的问题?
ssh - Ansible:无法登录到本地 Vagrant 服务器
我有两个运行不同 IP 的 Vagrant 实例:
我的 Ansible 主机文件在/etc/ansible/hosts
其中,它看起来像:
我可以使用以下命令轻松地通过 SSH 连接到第二台服务器:
没有密码。
但是运行 Ansible 命令会产生错误:
我该如何解决这个错误?