问题标签 [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 - How to make Ansible playbook run on first host in the group?
How can I run a playbook only on first host in the group?
I am expecting something like this:
But this doesn't work, gives error:
'groups' is undefined
How can I make it work?
ansible - 如何使用数据中心和环境组织 Ansible 库存?
如果我们有 2 个数据中心,东部和西部。
然后我们有 3 个环境 DEV、QA、PROD。
每个数据中心和环境都有自己的 Consul 集群。
现在我想从清单中引用 Consul 集群,例如:
如何组织我的清单和 group_vars 以只为该数据中心和环境生成正确的 Consul 集群主机?
我的一个想法是为每个数据中心和环境创建一个清单文件。
例如:
- 西-dev.ini
- 西qa.ini
- 西产品.ini
- 东-dev.ini
- 东-qa.ini
- 东prod.ini
这似乎是合理的,但现在我如何处理 group_vars 中的仅环境变量或仅数据中心变量?我让他们成为儿童团体吗?
ansible - Ansible:在 playbook 中使用 hosts.ini 的主机地址
我必须用 ansible 做一个 POST 请求。
我的hosts.ini
文件是:
我必须连接的url需要worker1的ip地址,所以我把我的剧本写成:
但是运行它,我得到:
字段“args”的值无效,似乎包含未定义的变量。错误是:“worker1”未定义
问题出在哪里?
ansible - 根据 Ansible playbook 中的主机运行角色
我必须使用两本剧本,因为我的主人正在为每个角色而改变。有什么解决方法可以让我在单个剧本中完成这项工作吗?
剧本-1:
剧本2:
我已经尝试过这种方法,但似乎这不是 Ansible 的工作方式..
剧本.yml:
vagrant - host_vars 和 group_vars 没有被加载
我有以下文件夹结构,这似乎使它可以构建和加载角色,但是没有加载组和主机变量。怎么来的?
/etc/ansible/
/文档/ansible/
主机文件
**流浪者**
amazon-ec2 - 在詹金斯,我的剧本路径是什么?如何设置库存有 3 个相同的选项
我已经在我的 AWS Instance centos 上安装了 Jenkins 和 ansible,并试图从 jenkins 调用我的 ansible playbook?我不知道如何设置:我的剧本路径是什么?如何设置 Inventory 有 3 个相同的选项(1. 不要指定 Inventory 2. 文件或主机列表
3.Inline 内容)帮助我,以便我调用我的 ansible 从 jenkins 运行
ansible - 当文件名与主机名匹配时,Ansible 任务在委派主机上运行时出现问题
我有一本剧本,其中的一项任务是将模板文件复制到具有delegate_to的特定服务器:名为“grover”
此处包含重要服务器的清单列表是:bigbird、grover、oscar
这些模板文件必须有一个与每个服务器的主机名匹配的名称,并且委托服务器 grover 也必须有它自己的所述文件的实例。仅当文件不存在时,才应进行此模板复制操作。/tmp/grover 预先存在于服务器 grover 上,它需要保持不受剧本运行的影响。
最终除了server grover上的/tmp/grover,运行后应该还存在:/tmp/bigbird和/tmp/oscar也在server grover上。
我遇到的问题是,当剧本在没有任何条件的情况下运行时,它确实起作用,但它也会破坏/覆盖 /tmp/grover,这是不可接受的。
但是,如果我在以前的播放中添加任务以预先检查这些文件,然后在模板播放中添加条件以跳过 grover(如果文件已经存在),它不仅会跳过 grover,而且会跳过所有其他将运行的服务器格罗弗也为那场比赛而战。如果我尝试将其设置为在所有其他服务器上运行但 grover,它仍然会失败,因为委托服务器是 grover 并且将被跳过。
这是实际的示例代码片段,由于主机模式,playbook 正在所有 3 台服务器上运行:
如果我运行它,并且 /tmp/grover 存在于 grover 上,那么它将简单地跳过整个复制播放,因为 grover 上的条件失败。因此,由于此问题,其他服务器将永远不会将其 /tmp/bigbird 和 /tmp/oscar 模板复制到 grover。
最后,我想避免 ghetto 解决方案,例如保存 grover 的原始配置文件的备份,允许使用 clobber,然后将保存的文件复制回来作为最后一项任务。
我一定在这里遗漏了一些东西,我不可能是唯一遇到这种情况的人。任何人都知道如何为此编码?
ansible - Playbook 目录和 Inventory 目录
这里 有一句话:
提示:在 Ansible 1.2 或更高版本中,group_vars/ 和 host_vars/ 目录可以存在于 playbook 目录或 inventory 目录中。如果两个路径都存在,则 playbook 目录中的变量将覆盖清单目录中设置的变量。
我该如何定义:
- 剧本目录
- 库存目录
我不知道这种配置,似乎在我使用 Ansible 的过程中,我总是有一个目录,它同时位于 playbook 目录和库存目录中,但这种分离可能很有用。
ssh - Ansible Permission denied (public key) 但使用相同密钥的 ssh 有效
我在 Ubuntu 16.x(ansible 版本 2.2.1.0 和 2.2.2.0)上运行这个 Ansible ad-hoc 命令
其中 host_alias 是定义的 ansible hosts 文件(定义一个 ec2 实例及其 .pem 文件)。
主机文件如下所示:
我收到此错误:
当我 ssh(由 定义~/.ssh/config
)时,相同的主机和密钥工作正常。我已经三重确保密钥在那里并且具有读取权限。我还尝试ansible_user
在 Ansible 主机文件中设置。
有任何想法吗?
ansible - 使用 ansible-playbook 选择特定的主机/主机组
使用ansible-playbook
command ,我们可以为清单中的所有主机执行 playbook,我有一个从网络服务器中删除缓存的 playbook。但我不应该删除特定机器上的缓存,除非开发人员要求这样做。
但是通过使用,ansible-playbook
我无法从清单中选择特定的主机。但是我可以使用一些语法,ansible-playbook somebook.play -i hostname,
但这会查找 DNS 条目并相应地执行,但不会检查库存文件。
另一种方法是为每个主机创建单独的清单文件,并根据开发人员请求的主机调用它们,我不知道有多少推荐的方式。
最后一种方法 AFAIK 是ansible.runner
通过 Python 使用并在主机名上使用模式并调用 python 程序。
感谢您阅读我的长文。
除了这些,您是否知道在执行剧本时从清单中选择特定主机/主机组的任何其他方法?
我想知道任何其他方式,但只使用 ansible-playbook 和库存文件。