動かない手順が載ってるドキュメントほど危険なものはない。と言いますが(出典不明)、Grafanaは残念ながらそれのようで、APTレポジトリを追加してインストールする手順が動きません。。
仕方ないのでdebパッケージをダウンロードしてきてインストールするパターンでつくりました。レポジトリが使えればapt-get install
さえすれば最新版が入ったんですが、debパッケージを生で使うということでバージョン確認とかは自前でやらないといけません。
Ansible初心者すぎるので、Playbookつくってみたときのメモ。
これを参考にしました:
Registerd Variables
参考:Variables — Ansible Documentation
コマンドの実行結果とかexit codeとかを使いたいときはregister
を使います。
- command: ls register: ls_result
とか書いておくと、あとでこの結果を使えます。exit codeはls_result.rc
、標準入力はls_result.stdout
でアクセスできるらしいです。(「らしいです」というのは、command
とかshell
のReturn variables?についてドキュメントを探し回ったけど書いてる場所がわからなかったから…)
failed_when
,registered_when
さっきの結果を使って、
- command: ls register: ls_result changed_when: '"somefile" not in ls_result'
のような条件が書けます。ここで、行すべてを' '
で囲っているのはYAMLの文法的に
the YAML parser is expecting to see the line ended with the same kind of quote.
だかららしい。(と、エラーメッセージに書いてあった)。めんどくさい。
この結果をさらに参照して、
- command: touch somefile when: not ls_result.changed
のように、ファイルがないときだけtouch
する、みたいな条件分岐が書けます。
Jinja2の文法
例えば、バージョン番号の比較みたいなことは、
(grafana_check_version | version_compare("{{ grafana_version }}", "<"))
のように書けばいけるらしい。まだよく分からない。