如何扩展ansible剧本以达到复杂条件?

时间:2019-02-18 13:49:24

标签: ansible ansible-facts ansible-template

我了解ansible仅限于配置工具,即我们在yaml文件中创建配置,而python脚本通过查看配置来执行。

但是,有一个有用的属性when可以帮助根据when中提到的条件来决定要进行的配置,并且配置顺序也可以根据任务,

变量和事实可用于实现动态配置。

但是,我的要求涉及复杂的循环和条件,以及递归处理,这在剧本中是完全无法实现的,或者需要根据条件创建多个任务。

我在使用Ansible剧本时发现的几个问题是:

  • 否,否则构造
  • 循环的功能非常有限
  • 可变范围不能像脚本语言那样工作

递归任务的问题例如:

  • 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执行这些任务是否是正确的方法,还是我需要使用脚本语言来进行所需的检查?

1 个答案:

答案 0 :(得分:0)

回答您的问题:

  

” ... ...这是使用Ansible执行这些任务的正确方法,还是我需要使用脚本语言来进行所需的检查?

正确的方法是使用package – Generic OS package manager。如果这不起作用,create a Minimal, Complete, and Verifiable example