Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible。检查语法的快速方法?_Ansible_Ansible Playbook - Fatal编程技术网

Ansible。检查语法的快速方法?

Ansible。检查语法的快速方法?,ansible,ansible-playbook,Ansible,Ansible Playbook,有没有办法检查剧本的语法和变量 我正在试着进行试运行(--检查),但由于某些原因,它的运行速度非常慢。看起来它试图执行一个操作,而不仅仅是检查语法 我想省略如下错误: ..."msg": "AnsibleUndefinedVariable: ERROR! 'application_name' is undefined"} 根据文件,这是预期行为: 当ansible playbook与执行时,请检查它不会产生任何错误 远程系统上的更改。相反,对任何模块进行检测以支持 “检查模式”(包含大多数主要

有没有办法检查剧本的语法和变量

我正在试着进行试运行(--检查),但由于某些原因,它的运行速度非常慢。看起来它试图执行一个操作,而不仅仅是检查语法

我想省略如下错误:

..."msg": "AnsibleUndefinedVariable: ERROR! 'application_name' is undefined"}

根据文件,这是预期行为:

当ansible playbook与执行时,请检查它不会产生任何错误 远程系统上的更改。相反,对任何模块进行检测以支持 “检查模式”(包含大多数主要核心模块,但 不要求所有模块都这样做)将报告哪些更改 他们会制造而不是制造它们。其他模块可以 不支持检查模式也不会采取任何操作,但只是不会 报告他们可能做出的更改

如果要检查YAML语法,可以使用语法检查

ansible-playbook rds_prod.yml  --syntax-check
playbook: rds_prod.yml

我也在寻找相同的方法,但对
--syntax check
选项并不满意,因为它无法向下运行到角色。可以执行更完整的检查,其中还包括样式检查。但是如果你关闭了所有的样式检查,那么你就有了一个相当完整的语法检查

ansible-playbook rds_prod.yml  --syntax-check
playbook: rds_prod.yml
所以做些类似的事情

ansible-lint -x $(echo $(ansible-lint -L | awk -F':' '{print $1}' | grep '^[^ ]') | tr ' ' ',') my_playbook.yml

添加一个任务,在未定义变量时使剧本失败。这应该是第一次运行任务


另一个选项是确保所有变量在/defaults/目录中都有一个默认值,这样它就不会失败,但是变量仍然可以在其他级别被覆盖

所以,没有办法快速检查所有变量是否已声明?遗憾的是,您在长长的剧本末尾错误地键入了一些名称。检查有两种类型:语法检查和试运行,目前我还不知道还有其他类型的检查。请小心
--check
。由于Ansible 2.2,您可以强制任务在正常模式下运行并对系统进行更改,即使使用
--check
调用playbook。阅读:如果需要任务的结果(例如,列出文件、装入点等),则必须强制任务处于检查模式。这应该只对没有副作用的任务执行。请注意,这不会在任务命令参数中发现语法错误。(我有
yum\u repository:des**t**scription:…
,但没有找到)。您可以对单个角色使用
--语法检查
,例如:
ansible localhost-m include\u role-a name=role\u to\u check--语法检查