Ansible で YAML ファイルの中で値の部分にコロンを入れると Syntax Error でコケます。
例えば /etc/sudoers
を lineinfile
モジュールで書き換えようとして NOPASSWD:
という文字列を入れちゃうとエラーになります。バックスラッシュではエスケープできませんでした。
ERROR: Syntax Error while loading YAML script, ...
Note: The error may actually appear before this position: line 1, column 63
これを回避する方法、それはコロンを変数に入れること...
group_vars/all
colon: ':'
NG
- lineinfile: >
regexp='^%wheel'
line='%wheel ALL=(ALL) NOPASSWD: ALL'
dest=/etc/sudoers
OK
- lineinfile: >
regexp='^%wheel'
line='%wheel ALL=(ALL) NOPASSWD{{colon}} ALL'
dest=/etc/sudoers
あ、でもこの例(sudoers)の場合は /etc/sudoers.d/
にファイルを置く方法にするのが良いと思います。