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'