问题标签 [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.
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'执行剧本,同样的错误
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 上的标签或组的静态清单文件。我是否以正确的方式接近这个?
jenkins - Jenkins Ansible EC2 动态库存不起作用
更新
不记得我是如何修复它的,但似乎只是因为 ec2.py 脚本的权限错误。
我有一些使用动态库存设置Ansible
部署的剧本。AWS EC2
ansible-playbook
在服务器内部使用时效果很好
它处于打开状态Ubuntu 14.04
并Ansible
2.0.1.0
具有默认值/etc/ansible/ansible.cfg
我得到ec2.py
了ec2.ini
http://docs.ansible.com/ansible/intro_dynamic_inventory.html
Jenkins
使用此插件触发剧本时https://wiki.jenkins-ci.org/display/JENKINS/Ansible+Plugin
它返回有关的错误,ec2.py
因为它认为主机文件是ini
文件
如果我使用该选项Inline content
,Dynamic inventory
那么它会使用这样的随机.ini
文件
以前有人遇到过这个问题吗?
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
条件(in
或not in
)。
有什么方法可以获取Filesystem
价值,以便我可以像说的那样舒适地使用它们ec2_id
?我最担心的是,在创建新机器并根据该值处理机器列表时,我必须观察文件系统值。
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
但它仍然不匹配。
ansible - 如何创建一个包含子组的 Ansible 组,不包括子组?
我正在使用 Ansible EC2 动态清单脚本来自动生成组。
这将创建 Ansible 组ec2
,它包含我的 AWS 账户中的所有 EC2 主机。
这些主机的一个子集有标签KubernetesCluster:kube-acceptance
。动态清单脚本创建一个组tag_KubernetesCluster_kube_acceptance
。
我想构建一个 Ansible 组,包括 group 中的所有主机ec2
,但不包括group 中的主机tag_KubernetesCluster_kube_acceptance
。
这可以在库存文件中实现吗?
amazon-web-services - Ansible EC2 密钥环
对 ansible 和 EC2 来说有点新,我在连接新实例时遇到了麻烦,也许我还没有得到密钥对。
为了从 ansible 连接到新创建的实例,我如何使用密钥对而不是用户和密码来 ssh 这些实例?
如果我将 --private-key=keypair.pem 附加到第二个剧本,一切正常,但不确定如何在创建新实例后在单个剧本中使其工作。
亲切的问候
ansible - 如何设置 Ansible 层级特定的库存变量?
是否可以创建一个不与清单主机或组关联但运行剧本的服务器层的 Ansible 清单变量?我有一个使用 APT 安装 libffi-dev 包的 Ansible 角色,但我可能想在每个服务器层上安装该包的不同版本。为此,我创建了一个变量“libffi-dev_ver”。我还有与我的每个层对应的库存文件“开发”、“暂存”和“生产”。
我的角色的主要任务(从我的主 site.yml 剧本调用)在运行角色之前检查版本变量是否存在:
check_vars.yml 检查以确保包版本变量存在:
misc_libs 角色实际上使用该变量来安装包:
我的开发清单文件如下所示:
当我运行这个命令时:
我收到这个 Ansible 错误:
在 Ansible 中声明这样的包版本控制变量的正确方法是什么?该变量的值取决于服务器层,这向我表明它位于库存文件中,因为库存文件是特定于服务器层的。但是所有库存变量似乎都必须与主机或组相关联。我已经这样做了,但角色仍然看不到变量。我可以向角色添加一个任务来检测服务器层并使用“何时”条件来相应地设置变量,但该解决方案看起来很难看,因为如果您在一个角色中安装多个包,则每个角色都需要三个条件包版本变量。我查看了 Ansible 文档并阅读了许多关于设置多层剧本的博客文章,但我没有看到这种特殊情况得到解决。
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 特定的配置。