【发布时间】:2021-03-25 05:53:08
【问题描述】:
...最后结果证明我所有的调试尝试都得到了问题并且我的文件不同步。正如下面所说,最初的问题是缺少引号,然后我一直在搞乱并删除了 block: 和管道字符之间的空格。我会留下这个,因为如果其他人对 blockinfile 有一些问题,它可能会有所帮助......
我正在尝试使用 ansible 来设置一些覆盆子。一切正常,直到我尝试添加静态 IP。任务是(主机和任务
- name: Sett opp boom / shake
hosts: boomshake
tasks:
(... a number of tasks that works fine ...
- name: Set up static ip
become: yes
blockinfile:
path: /etc/dhcpcd.conf
marker: "# ANSIBLE MANAGED - static ip {mark}"
block:|
interface=eth0
static ip_address=xxx.yyy.zzz.{{lastoct}}/26
static routers=xxx.yyy.zzz.1
static domain_name_servers=xxx.yyy.zzz.106,8.8.8.8
tags: network
Lastoct 是为 hosts 文件中的每个树莓派设置的变量。
当我运行它时,我得到:
Syntax Error while loading YAML.
found unexpected end of stream
(...)
The offending line appears to be:
static domain_name_servers=10.10.1.106,10.10.1.110,8.8.8.8
^ here
There appears to be both 'k=v' shorthand syntax and YAML in this task. Only one syntax may be used.
所以 ansible 正在解析它应该逐字插入文件中的块的内容。我怎样才能阻止这种情况发生?
在我的调试尝试中,我删除了 =s,但后来我得到了
Syntax Error while loading YAML.
found unexpected end of stream (...)
The offending line appears to be:
tags: network
^ here
所以这是 yaml 中块的语法我不正确的东西。
在centos7上使用ansible 2.9.17
【问题讨论】:
-
block:|=>block: |(在上面的语法高亮代码中可以清楚地看到空格缺失)。同时,如果您报告 yaml 解析错误而没有提供生成它的整个 yaml 文件,这里的每个人都可能会错过实际问题。制作这个MCVE