最近仕事でansibleに触れてて久しぶりに開発っぽいことしてて生き生きしてる気がするチャットです。
というわけでansibleにてapacheの構築で、
taskを書いててどうも不思議?なエラーでちょっとハマったのでメモしておきます。
バージョンはansible2.0.0です。
変数内のキーがansibleのモジュールと被ってると発生する
taskの中でwith_itemを使ってgroup_varsの変数を読み込こもうとして、例えば
apache_confの中身
1 2 3 4 5 6 7 8 |
template: - src: "/conf/hoge.conf.j2" dest: "/conf/hoge.conf" - src: "/conf/hege.conf.j2" dest: "/conf/hege.conf" copy: - src: "/bin/" dest: "/usr//bin/" |
だったとしてこの時、
templateのキーは問題なく読み込まれるが、copyのキーだけモジュール名と勘違いするのかエラーになる。
1 |
fatal: [ホスト名]: FAILED! => {"failed": true, "msg": "ERROR! 'unicode' object has no attribute 'dest'"} |
※destが悪いようなエラーメッセージだが実際はcopyというキーが悪さをしている。
対応方法
おそらくバグかなんかだと思われますが、
copyではなく、kopiiにするとかcopy_files等、モジュール名と被らないようにする。
まとめ
変数のキーなどにはなるべくモジュール名は使わないほうが良さそう。
そんな感じです。
今日の一言
ansibleは色々とバグっぽのがあったりと曲者ですが慣れるとまあ確かに便利なものかもしれません。