べにやまぶろぐ

技術寄りの話を書くつもり

Ansible error fatal: must be stored as a dictionary/hash とかいって Ansible さんに怒られる

バージョン : Ansible 1.5.5

表題の通りなのですが

jenkins_ip:"192.168.33.10"

とか書くと Ansible error fatal: must be stored as a dictionary/hash とか言ってコケるわけです。

調べてみると Ansible error fatal: must be stored as a dictionary/hash | Random Hacks に同じように困っている人のポストがあって、

some_variable:"value"

some_variable: value

って書いて直したぜってあるんですが例えば some_variable:value だと駄目なんです。

コロンの後のスペースが大事。

YAML 使いな方なら自明かもしれないのですがここで軽くハマりました。

Rubyist Magazine - プログラマーのための YAML 入門 (初級編) にあるように、

ハッシュは「キー: 値」の形式で表します。コロン「:」のあとに半角スペースを 1 つ以上入れてください (タブ文字は使えません)。

ということです。Python で書かれているけど YAML で定義するだけだから言語非依存だぜという Ansible ですがそもそもその YAML をちゃんとわかっていないと駄目ってことですね。出直してきます。