如何在ansible-console中输入并执行多行命令
ansible-console 多行命令输入方案
ansible-console 是Ansible提供的交互式REPL工具,本身没有官方支持类似bash中行尾加\的续行输入特性,也不需要按YAML的缩进换行格式写任务,具体可以按下面的方式处理:
- 所有任务都可以直接转成单行ad-hoc格式执行,不需要换行。你提到的带
register配置的多行任务,直接在console里输入下面的命令就能达到完全一致的效果:
debug msg='hello' register=result
不管是模块自身的参数,还是任务级的关键字(比如register、when、become、loop等),都可以直接按key=value的格式跟在模块名后面,ansible-console会自动按任务逻辑解析,和多行YAML写法的执行效果没有区别。
比如带条件判断的写法也可以直接拼在一行:
debug msg='hello' register=result when='ansible_os_family == "Debian"'
- 如果任务逻辑特别复杂,单行写起来太长不好维护,可以提前把多行任务写到独立的YAML文件里,在ansible-console中通过
@文件路径的语法直接加载执行,不需要逐行输入:
@./local/tasks/demo.yml
注意:部分Ansible 2.x早期版本存在未文档化的行尾
\续行特性,但该逻辑没有做稳定兼容,高版本已经移除,使用时很容易出现YAML解析错误,不推荐依赖这个写法。
内容的提问来源于stack exchange,提问作者czerny
相关产品推荐
相关产品推荐

