【发布时间】:2019-02-18 13:49:24
【问题描述】:
我了解 ansible 仅限于作为配置工具,即我们在 yaml 文件中创建配置,python 脚本通过查看配置来执行。
但是有一个有用的属性when 将有助于根据when 中提到的条件决定要执行的配置,并且配置的顺序也是根据任务的顺序完成的,
变量和事实可用于实现动态配置。
但是,我的要求涉及复杂的循环和条件以及递归处理,这在 playbook 中完全无法实现,或者需要根据条件创建多个任务。
我在使用 ansible playbook 时发现的几个问题是:
- 没有 if else 结构
- 循环的功能非常有限
- 变量范围不像在脚本语言中那样工作
递归任务的问题例如:
-
start_installation.yml安装变量中定义的包 - 包有依赖关系,依赖关系也有依赖关系,即递归依赖关系和安装应该首先通过调用
start_installation.yml递归地在依赖关系上完成。但是,这会产生变量范围的问题,即,如果在为 A 启动start_installation.yml时 package_to_install 是“A”,并且如果 A 具有依赖项“B”,那么 package_to_install 将设置为“B”,在为B启动start_installation.yml的时间。现在,一旦B的安装完成,它就不能安装A,因为变量范围不是被调用函数的本地。
我的问题主要是使用 Ansible 执行这些任务是否是正确的方法,还是我需要使用脚本语言来执行所需的检查?
【问题讨论】:
标签: ansible ansible-facts ansible-template