问题标签 [ansible-2.x]

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 投票
5 回答
34354 浏览

jinja2 - 使用字符串的 Jinja2 过滤器列表包含测试

当元素包含字符串时,我试图在 Jinja2 中的 ansible 中过滤列表,但 Jinja 文档似乎不够清晰,我无法弄清楚。

这是我到目前为止所拥有的:

但我得到的只是错误:

例如,如果stdout_lines包含["apples","running script one","oranges","running script two"],我想打印

他们有select文档和 built-in-tests 的文档,但是他们不显示“in”测试,而且我不知道它们在这个 ansible 变量的上下文中是如何工作的。

我试着像这样解决它:

但这会为每条未通过测试的行显示“跳过”……有点违背了目的!

0 投票
1 回答
355 浏览

ansible - Ansible 2.0 中变量的条件语句

有没有办法在 Ansible 2.0 中为变量提供条件语句?

中将有公共变量(例如locationtimezonedomainlanglanguagepapertime等),$ROLES_PATH/vars/main.yml并且可能会在 playbook 和/或 Jinja2 模板中调用/使用,如下所示:

  • '{{ target_location }}'
  • '{{ target_timezone }}'
  • '{{ target_domain }}'
  • '{{ target_lang }}'
  • '{{ target_language }}'
  • '{{ target_paper }}'
  • '{{ target_time }}'

但是,target_*当目标机器的 IP 地址属于 if/else 语句中所述的子网之一时,变量的值将自动更改。或者,目标机器属于清单文件中的组(按位置)时,可以构造条件。

$ROLES_PATH/vars/main.yml 中变量的伪代码

有没有办法按照最佳实践在 Ansible 2.0 中实现上述目标?

0 投票
1 回答
1137 浏览

ansible - 如何使用 ansible pam_limits 模块删除 limits.conf 中的字符串?

我正在/etc/security/limits.conf使用 Ansible 的新模块pam_limits 进行配置。

我在以下方面取得了成功:

  • 为特定域设置值并输入默认值limits.conf。(一个新的字符串被附加到文件的末尾)。
  • 更改值(字符串被重写)。

问题是当我想完全删除设置时。例如,我不想再保存核心转储了。我应该如何使用 pam_limits 完全删除字符串?

我设法开发了以下解决方法,但我认为它不是很好。它不会删除字符串,而是将限制设置为 0,这可能不一样。

角色/myrole/tasks/main.yaml

group_vars/myhosts.yaml:

我的服务.yaml

0 投票
1 回答
297 浏览

ansible - RHEL 6.5 上的 ansible 因 python 弃用警告而挂起

我正在尝试使用 ansible 将代码部署到我的 RHEL 6.5 服务器。它安装了 python 2.6.6。每当我尝试运行剧本时,它都会挂在这里:

我 ssh 进入我的服务器并尝试运行它挂起的代码并获得以下 python(?) 弃用,然后它挂起:

这是python和ansible的版本

我在尝试部署到的服务器上安装了相同版本的 python,但我没有安装 ansible。

我没有安装什么东西还是我需要升级 python 或其他东西?

0 投票
1 回答
2214 浏览

ansible - Ansible 变量优先级哈希

Ansible 版本:2.0.0.2

我需要通过库存主机变量覆盖角色默认变量。据我了解阅读变量优先级:我应该在哪里放置变量?在 Ansible Docs 中,这是可能的,但可能不是最佳实践,但不幸的是,一些主机需要调整一些默认配置参数。

我将重现真实案例,因此让我们考虑以下目录层次结构:

debug.yml是我们的剧本文件。

host_vars/test.localdomain包含我想要优先于默认值的变量。

inventory/debug是我们要使用的库存文件。

roles/debug/tasks/main.yml打印出foo.bar变量。

roles/debug/vars/main.yml包含默认角色变量。

此时,我希望在调试剧本运行期间,foo.bar的值为[ "hey" ],但显然我错了:

从 ansible cli运行调试模块给了我预期的结果,所以我很确定主机变量被正确评估,但也许由于某种原因它们没有优先于默认角色变量。

我的错误在哪里?

0 投票
1 回答
14179 浏览

python - 如何使用 Ansible 2.0 Python API 运行 Playbook?

我正在尝试编写一个 python 脚本,它将调用现有的 Ansible 剧本(因为我想在循环变量列表时循环播放列表)。

这篇文章很好地解释了它,对于 ansible pre-2.0:使用 Python API 运行 ansible-playbook

如果您在脚本中编写新剧本,此文档解释得很好:http: //docs.ansible.com/ansible/developing_api.html

但是我看不到如何使用 Python API 2.0 调用现有的剧本,并且 ansible.runner 不再有效。

帮助我,Stackoverflow-Wan Kenobi。你是我唯一的希望。

0 投票
1 回答
5516 浏览

ansible - Ansible 注册和 .changed 不起作用

我有一个安装包的剧本,如果安装了包,则需要运行命令。我曾经register <variable>这样<variable>.changed做过,但是,除非我做错了,否则这似乎在 Ansible 2.0 中不起作用。这是我的代码。

发生的情况是第一个块安装了 syncthing 包,并给了我以下输出:

更改:[我的主机]

然后下一个块应该执行,因为上一步注册了更改,但不幸的是,它没有:

跳过:[10.10.99.193]

我希望有一个简单的解决方案,我似乎从我阅读的文档以及以下帖子中正确地做到了这一点:https ://raymii.org/s/tutorials/Ansible_- _Only-do-something-if-another-action-changed.html

0 投票
3 回答
36856 浏览

ansible - 如何使用ansible读取json文件

我在我的 ansible 脚本所在的同一目录中有一个 json 文件。以下是json文件的内容:

我正在尝试使用 get_url 下载这些包。以下是方法:

第一个任务是正确打印文件的内容,但在第二个任务中,我收到以下错误:

0 投票
1 回答
1161 浏览

ansible - 使用ansible将文件从所有目录移动到父目录

我有以下文件结构:

我希望将文件 1、文件 2、文件 3 移动到父目录。问题是找出父目录中的所有目录。我正在尝试实现这样的东西:

任何方法对我来说都很好。我没有任何线索。

0 投票
1 回答
1348 浏览

ansible - 列表中的 Ansible 项目显式

我正在尝试做一个有条件的when: item.name in item_list

如何使 when 子句明确,以便如果我正在循环的项目列表仅是 [data],那么“database”和“proddata”不会将条件传递为 true?我只想通过 EXACT 拼写。

例子

如您所见,data不在final_list但它显示为真。我相信因为数据包含在产品数据数据库中。when: item.name == (item.name in final_list)如果可能的话,我希望这样做。我只是不确定我需要哪个过滤器。