能否将多行Ansible任务及Tags配置写在同一行?
关于Ansible任务单行写法的问题
可以将这些任务写在同一行,但你的写法不符合YAML语法规范,导致Ansible无法正确解析。
错误原因
你当前的写法会让Ansible把import_tasks的值识别为foo/spam.yml tags="foo, spam"这个完整字符串,而不是将tags当成单独的参数键,自然找不到正确的任务文件,所以无法运行。
正确的单行写法
要实现单行任务,需要用YAML的单行字典语法,用大括号{}包裹多个键值对,键值对之间用逗号分隔:
- { import_tasks: foo/spam.yml, tags: [foo, spam] } - { import_tasks: foo/ham.yml, tags: [foo, ham] } - { import_tasks: foo/eggs.yml, tags: [foo, eggs] }
如果习惯用逗号分隔的字符串表示tags,也可以这么写(不过更推荐上面的列表形式,更清晰规范):
- { import_tasks: foo/spam.yml, tags: "foo, spam" } - { import_tasks: foo/ham.yml, tags: "foo, ham" } - { import_tasks: foo/eggs.yml, tags: "foo, eggs" }
核心要点
YAML中,当你需要在同一行定义多个键值对时,必须用大括号明确包裹字典结构,让Ansible能正确区分不同的参数(比如import_tasks和tags),而不是把它们当成一个整体。
内容的提问来源于stack exchange,提问作者lonix
相关产品推荐
相关产品推荐

