AnsibleでYAMLの書き方¶
トラブルシュート¶
文字列中のコロンとそれに続くスペースが文法エラーとなる¶
次のようなタスクを実行すると、
- name: 管理ユーザー(wheelグループ)がsudoできる権限の設定
replace: dest=/etc/sudoers
regexp='^#\s+(%wheel.*NOPASSWD: ALL)'
replace='\1'
次のように文法エラーが発生します。
ERROR! Syntax Error while loading YAML.
The error appears to have been in '/home/foobar/work/roles/adminuser/tasks/main.yml': line 11, column 42,
but maybe elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
replace: dest=/etc/sudoers
regexp="^#\s+(%wheel.*NOPASSWD: ALL)"
^ here
回避策¶
コロンを変数化する
- name: 管理ユーザー(wheelグループ)がsudoできる権限の設定
replace: dest=/etc/sudoers
regexp="^#\s+(%wheel.*NOPASSWD{{':'}} ALL)"
replace='\1'
折り返し記号(>)を使う
- name: 管理ユーザー(wheelグループ)がsudoできる権限の設定
replace: >
dest=/etc/sudoers
regexp='^#\s+(%wheel.*NOPASSWD: ALL)'
replace='\1'
ディクショナリ記法を使う
- name: 管理ユーザー(wheelグループ)がsudoできる権限の設定
replace:
dest: /etc/sudoers
regexp: '^#\s+(%wheel.*NOPASSWD: ALL)'
replace: '\1'