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

amazon-ec2 - 在清单中混合 Ansible 静态和动态组

我正在尝试结合静态和动态(EC2)库存。有两个 ec2 实例:

  • ansible控制机
  • 基于ami的主机

试图从控制机器 ping 'ami' 主机。这是我的主机文件:

要成功 ping 'ami' 主机,我需要使用两个特定变量:

  • ansible_ssh_user:ec2-user(我的控制机是ubuntu)
  • ansible_ssh_private_key_file: /home/ubuntu/.ssh/klucze.pem

尝试通过在group_vars目录中创建文件来实现它:

问题是 ansible 似乎只“看到”了带有 ansible_ssh_user 的tag_Name_ami.yml,而忽略了我的带有ansible_ssh_private_key_file值的 amazon.yml 。下面的一些输出:

当我将ansible_ssh_private_key_file添加到我的 tag_Name_ami 时,ping 成功:

但这不是我想要的,我希望每个新的 EC2 实例都定义这个ansible_ssh_private_key_file变量(它将成为“amazon”静态组的一部分),并且 ami/redhat 实例还定义了ansible_ssh_user

提前感谢您提供的任何帮助!

*********** 更新 ****************


我所能达到的就是这样做:

将我的静态主机文件与网络服务器组一起使用。剧本看起来像:

在剧本中将“亚马逊”作为主机值返回错误:

还尝试使用'-i ec2.py'执行剧本,同样的错误

0 投票
2 回答
2122 浏览

amazon-web-services - 如果在静态清单中指定,Ansible 无法解析 EC2 标记

我正在使用 Ansible 部署到 Amazon EC2,并且设置了 ec2.py 和 ec2.ini,以便可以从 Amazon 检索服务器列表。我的服务器位于 AWS tagged rvmdocker:production,并ansible all --list返回我的标签,因为ec2_tag_rvmdocker_production.我也可以运行:

它有效。但是,如果我在静态清单文件中有该标签,然后运行:

它返回:

这是我的生产库存文件:

看起来 Ansibletag_rvmdocker_production在静态清单文件中时无法解析。

更新

我听从了 ydaetskcoR 的建议,现在收到一条新的错误消息:

但我知道标签存在,而且似乎 Ansible 和 ec2.py 都知道:

这是我的生产库存:

还有我的 app.yml 剧本文件:

最后,我希望能够针对开发(我的 Mac 上的虚拟机)、登台或生产运行相同的剧本来启动环境。我的想法是拥有指向 EC2 上的标签或组的静态清单文件。我是否以正确的方式接近这个?

0 投票
1 回答
2141 浏览

jenkins - Jenkins Ansible EC2 动态库存不起作用

更新

不记得我是如何修复它的,但似乎只是因为 ec2.py 脚本的权限错误。


我有一些使用动态库存设置Ansible部署的剧本。AWS EC2

ansible-playbook在服务器内部使用时效果很好

它处于打开状态Ubuntu 14.04Ansible 2.0.1.0具有默认值/etc/ansible/ansible.cfg

我得到ec2.pyec2.ini http://docs.ansible.com/ansible/intro_dynamic_inventory.html

Jenkins使用此插件触发剧本时https://wiki.jenkins-ci.org/display/JENKINS/Ansible+Plugin

它返回有关的错误,ec2.py因为它认为主机文件是ini文件

如果我使用该选项Inline contentDynamic inventory那么它会使用这样的随机.ini文件

以前有人遇到过这个问题吗?

0 投票
1 回答
260 浏览

amazon-ec2 - 如何通过 AWS EC2 动态清单获取文件系统

在使用 ec2 动态清单通过 ansible 设置 AWS CloudWatch 警报时,我发现了一个非常具体的问题。

我已成功设置aws-script-mon来监控我的机器上磁盘和 RAM 的使用情况。

我还设法使用ansible ec2_metric_alarm模块设置 RAM 使用警报。

我目前面临的问题是在设置磁盘使用警报时,Filesystem需要维度参数,但在ec2 动态库存变量中未返回。

我的一些机器将文件系统设置为/dev/xvda1,而其他机器则设置为:/dev/disk/by-uuid/abcd123-def4-....

我目前的“解决方案”如下:

这两个任务之间的唯一区别是Filesystem维度和when条件(innot in)。

有什么方法可以获取Filesystem价值,以便我可以像说的那样舒适地使用它们ec2_id?我最担心的是,在创建新机器并根据该值处理机器列表时,我必须观察文件系统值。

0 投票
1 回答
502 浏览

ansible - Ansible 动态主机跳过

我正在尝试使用 ansible 1.9.4 为我的家庭办公室设置一个非常 hacky 的 vm 部署环境。

我很远,但最后一步是行不通的。我有一个书面的 10loc 插件,它为暂存 vlan 生成临时 dns 名称,我想将该值作为主机传递给下一个剧本角色。

它可以通过主机变量在全局剧本范围内访问:

并应传递给:

这导致:

我的库存看起来像这样,并且似乎有效。硬编码“vm-tmp103.local”使角色运行。

提前谢谢你,希望有人能指出我正确的方向。计划 B 包括将 dns 记录传递给 bash 脚本以完成配置,因为我只想在将 vm 添加到监控之前配置网络接口。

编辑:修改播放以使用添加主机并将它们添加到临时组 - add_host: name={{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }} groups=just_vm

但它仍然不匹配。

0 投票
1 回答
1633 浏览

ansible - 如何创建一个包含子组的 Ansible 组,不包括子组?

我正在使用 Ansible EC2 动态清单脚本来自动生成组。

这将创建 Ansible 组ec2,它包含我的 AWS 账户中的所有 EC2 主机。

这些主机的一个子集有标签KubernetesCluster:kube-acceptance。动态清单脚本创建一个组tag_KubernetesCluster_kube_acceptance

我想构建一个 Ansible 组,包括 group 中的所有主机ec2,但不包括group 中的主机tag_KubernetesCluster_kube_acceptance

这可以在库存文件中实现吗?

0 投票
1 回答
69 浏览

amazon-web-services - Ansible EC2 密钥环

对 ansible 和 EC2 来说有点新,我在连接新实例时遇到了麻烦,也许我还没有得到密钥对。

为了从 ansible 连接到新创建的实例,我如何使用密钥对而不是用户和密码来 ssh 这些实例?

如果我将 --private-key=keypair.pem 附加到第二个剧本,一切正常,但不确定如何在创建新实例后在单个剧本中使其工作。

亲切的问候

0 投票
2 回答
767 浏览

ansible - 如何设置 Ansible 层级特定的库存变量?

是否可以创建一个不与清单主机或组关联但运行剧本的服务器层的 Ansible 清单变量?我有一个使用 APT 安装 libffi-dev 包的 Ansible 角色,但我可能想在每个服务器层上安装该包的不同版本。为此,我创建了一个变量“libffi-dev_ver”。我还有与我的每个层对应的库存文件“开发”、“暂存”和“生产”。

我的角色的主要任务(从我的主 site.yml 剧本调用)在运行角色之前检查版本变量是否存在:

check_vars.yml 检查以确保包版本变量存在:

misc_libs 角色实际上使用该变量来安装包:

我的开发清单文件如下所示:

当我运行这个命令时:

我收到这个 Ansible 错误:

在 Ansible 中声明这样的包版本控制变量的正确方法是什么?该变量的值取决于服务器层,这向我表明它位于库存文件中,因为库存文件是特定于服务器层的。但是所有库存变量似乎都必须与主机或组相关联。我已经这样做了,但角色仍然看不到变量。我可以向角色添加一个任务来检测服务器层并使用“何时”条件来相应地设置变量,但该解决方案看起来很难看,因为如果您在一个角色中安装多个包,则每个角色都需要三个条件包版本变量。我查看了 Ansible 文档并阅读了许多关于设置多层剧本的博客文章,但我没有看到这种特殊情况得到解决。

0 投票
1 回答
192 浏览

python - Ansible Dynamic Inventory 无法获取流浪主机

尝试使用动态清单调用 Ansible。创建了一个 .py 脚本来获取 vagrant box 信息,输出为 .json。下面的图片显示

  1. dynamic_inventory.py 是可执行的
  2. python dynamic_inventory.py --list返回 .json
  3. 通过 ansible 调用这个返回错误

Ansible 版本 1.9.2

在此处输入图像描述

0 投票
1 回答
103 浏览

vagrant - 针对主机组运行 Ansible

当我尝试运行这个 Ansible 命令时 -ansible testserver -m ping它工作得很好,但是当我尝试这个命令时 -ansible webservers -m ping我收到以下错误 - ERROR! Specified hosts options do not match any hosts

我的主机文件如下所示 -

可能是什么问题呢?为什么ansible可以识别出问题的主机而不是主机组?

我尝试更改文件以确保 ansible 正在专门从该文件中读取,并确保是这种情况,因此这不是从我不知道的另一个文件中读取配置的问题。

我也尝试过使用为什么 Ansible 跳过主机组中指定的解决方案并且什么都不做,但使用不同的解决方案似乎是一个不同的问题。

编辑 - 添加了我的 anisble.cfg 文件,以指出我已经完成了所有 vagrant 特定的配置。