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

variables - Ansible:如何在我的剧本中使用清单文件(主机)中定义的变量?

正如题主所说。我的主机清单文件中定义了一些主机变量。如何在我的剧本中访问它们?

这是一个例子。根据我所有的研究,我期待foobar成为hostvars. 我可以将特定于主机的变量放在单独的 var 文件中,但我希望将它们保存在“附加”到主机的清单文件中。我不想在模板中使用它。ansible 版本:1.3.2,ansible_distribution_version:6.4

0 投票
1 回答
25723 浏览

ansible - 列出任务的清单文件中的所有 ansible 主机

对于备份,我需要遍历清单文件中的所有主机,以确保备份目标存在。我的结构看起来像

所以我需要一个(内置)变量/方法来列出清单文件中的所有主机,而不仅仅是一个组。

对于组,它看起来像这样

0 投票
7 回答
143793 浏览

ansible - Ansible - 将清单主机和变量读取到 group_vars/all 文件

我有一个愚蠢的疑问,让我被困了很长时间。我有一个非常普通的清单文件,其中包含主机和变量:

问题是我需要从 group_vars/all 文件访问清单文件中的所有这些主机和变量。

我尝试了以下方式访问主机IP:

要访问我尝试的主机变量:

都是错的!!!谁能帮我找出访问主机和变量的最佳实践,而不是从剧本而是从变量文件?

编辑:

好的。让我们澄清一下。

问题:在变量文件中使用库存文件中声明的主机,比如说:group_vars/all。

示例:我有一个带有IP:10.112.83.37.

库存文件:

在 group:vars/all 文件中,我想使用该 IP 来构建一个变量。

group_vars/所有文件:

在模板中,我使用 group_vars/all 文件中内置的变量。

模板文件:

问题是{{ db }}group_vars/all 文件中的变量没有被 DB 主机 IP 替换。用户只能编辑库存文件。

0 投票
6 回答
50288 浏览

macos - 在 Mac OS X 上存储 Ansible 主机文件的位置

我正在尝试开始使用 Ansible 来配置我的 Vagrantbox,但我不知道如何处理主机文件。

根据文档,应该存储在 中/etc/ansible/hosts,但我在我的系统(Mac OS X)上找不到它。我还看到了host.ini文件位于与 vagrant 文件相邻的文档根目录中的示例。

所以我的问题是你会在哪里存储你的主机文件来设置一个流浪盒?

0 投票
1 回答
4280 浏览

ssh - Ansible SSH 作为一个用户,Sudo 作为另一个用户

我在将 Ansible 配置适应我的环境时遇到了一些困难。

我的测试环境:

  • PermitRootLogin 否
  • 只允许一个用户通过 SSH 连接(foo,没有任何权限)
  • 具有 sudo 权限的用户(bar ALL=(ALL) ALL)

我的 ansible 主机清单如下所示:

我有一个 foo 用户的 SSH 密钥。

当我使用 bar 密码尝试此临时命令(或任何其他命令)时:

然后,如果我使用 foo 密码执行相同的命令:

所以 Ansible 绝对使用 foo 作为 sudo 用户,而不是我指定的 bar。有没有办法强制使用 bar 而不是 foo?我真的不了解 Ansible 上的 sudo 功能,即使我对所有内容(SSH 栏和密码栏)都使用相同的用户 ansible give 返回我:

当我在主机上以 bar 身份登录并执行“sudo echo test > /etc/testfile”时,它会询问我 bar 密码并正确执行命令。我对 Ansible 的行为有什么误解?

0 投票
2 回答
3518 浏览

ansible - 从组 playbook 访问整个 Ansible Inventory

我正在尝试从仅在单个组中运行的剧本中获取清单文件中所有主机的 IP 列表。

假设以下库存文件:

和剧本:

以及做某事的角色:

和 hosts.j2 模板:

问题:

运行此程序时,我只列出了 dbserver ip,而不是所有 ip

问题:

我怎样才能从这个剧本中访问整个库存?在 playbook中将主机更改为all是可行的,但是 dosomething playbook 也在所有主机上运行,​​这不是我想要的。我只想要 dbservers 上的列表。

0 投票
1 回答
2431 浏览

ansible - 按升序从主机库存中获取主机 - Ansible

我在主机清单中有 100 台主机。主机清单如下所示:

当我运行 ansible-playbook 命令时:

正在所有主机上运行它,但它不会按升序排列主机。它以非顺序(103、14、102、100,...)

例子:

如何运行命令以升序获取主机?

0 投票
2 回答
1119 浏览

amazon-ec2 - Ansible ec2 仅提供所需的服务器

我有一个基本的 Ansible 剧本,如下所示:

具有以下库存:

Provision ec2 servers 任务可以满足您的期望。它创建一个 ec2 实例;它还创建一个主机组 [webservers] 并将创建的实例 IP 添加到其中。

配置 {{ application_name }} 服务器步骤然后配置该服务器,安装我需要的一切。

到目前为止一切顺利,这一切都完全符合我的要求,一切似乎都有效。

这就是我卡住的地方。我希望能够为不同的角色启动一个 ec2 实例。理想情况下,我会创建一个数据库服务器、一个网络服务器,也许还有一个 memcached 服务器。我希望能够单独部署此基础架构的任何部分,例如仅创建和配置数据库服务器

我能想到的唯一方法可以使这项工作......好吧,它们不起作用。

我尝试简单地声明清单中没有主机的主机组:

但这是一个语法错误。

我可以明确地配置每个服务器并声明它的主机组,如下所示:

但是这些组在相应步骤完成之前不存在,所以我认为这也不会奏效。

我看过很多关于动态库存的内容,但我无法理解这对我有什么帮助。我还查看了无数 ansible ec2 配置项目的示例,它们总是要么配置预先存在的 ec2 实例,要么只是创建一个实例并在其上安装所有东西。

0 投票
1 回答
6160 浏览

ansible - 指定 Ansible 库存目录

我有两个 Ansible 项目。一个包含常见的角色和剧本,第二个剧本,特定于客户的角色,包括库存。

我希望能够使用第二个项目中的清单运行常见的剧本

这对主机正确运行,但没有拾取 host_vars。我期望 host_vars 和 group_vars 与库存文件相关,但这似乎没有发生。

http://docs.ansible.com/intro_inventory.html#splitting-out-host-and-group-specific-data

提示:在 Ansible 1.2 或更高版本中,group_vars/ 和 host_vars/ 目录可以存在于 playbook 目录或 inventory 目录中。如果两个路径都存在,则将第二个加载 playbook 目录中的变量。

非常感谢任何帮助,我正在运行 1.7

0 投票
2 回答
639 浏览

python - 如何使用 Fabric 访问 AWS 的动态 EC2 库存?

Fabric 有一个hosts设置来指定要通过 SSH 连接到哪些计算机。

Amazon Web Services 有更多的动态库存,可以使用boto等工具在 python 中查询。

有没有办法将这两种服务结合起来?理想情况下,我想要像 ansible 那样简单的方法,使用库存文件并使用像ec2.py这样的外部文件。

更具体地说,是否有针对此用例的预烘焙解决方案?理想情况下,我想像这样简单地运行一些东西:

并像这样运行它,假设env.roledefs['nginx']存在: