全体てきな印象
- 触る前:
- RedhatがAnsibleを買収してから日本語情報も多いし本も多い。複雑でなく役割や環境が山ほどある案件でなければAnsibleで事足りるし簡単なほうが広まりやすい。
- 触った後:
- 天国みたいにググらびりてぃが最高でチュートリアルもマニュアルも見やすくchefでできたことは大体できるかも。学習コストについてはrubyのメソッド使い始める人がいない分マシなだけで大差なさげ。使い方によるかも。
ループ処理とか
・with_itemとかwith_でループができるのはわかったし条件分岐はwhenでいけるらしい
よくみたらflattenedとかrubyのメソッド風の名前のwith_があり使いこなすといいかも?
- name: be sure common packages are installed
yum: name={{ item }} state=installed
with_items:
- ntp
- bind-utils
- openssl
- openssl-devel
- unzip
- jq
tags: install-common-packages
http://qiita.com/yunano/items/4325935b8567572cc172
http://qiita.com/yushin/items/d65929a3c972bcf50887
attribute的な変数まわり
- 触る前:
- 実行時にプロンプトで入れるとか需要がわからないけど色々できるんだな。 http://d.hatena.ne.jp/akishin999/20130818/1376824640
- 触った後:
- variablesの優先順位やっぱあるのね http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
- ohaiの代わりはfactで十分っぽい https://blog.1q77.com/2014/02/ansible-register/
- jinja2で計算やtemplate内での条件分岐が可能だったりするようだ http://blog.keshi.org/hogememo/2015/12/07/exploiting-ansible-jinja2
データの暗号化まわり
- 触る前:
- data_bagsに相当する暗号化データの扱いはansible-vaultというので鍵でなくてパスワードで暗号化するっぽい。 https://developers.eure.jp/event/ansible-vault/
- chefでやってるみたいに証明書いれたりできるんだろうか。 http://qiita.com/smallpalace/items/b6274905bde3c3a3fce
- 触った後:
- とりあえずパスワード暗号化はvarsのymlファイル分離して、使うところでinclude_varsでよさげ http://qiita.com/knzm/items/f38b54b48f919b8b803c
- 証明書についてはまだ試してない。
ohaiとfactまわり
- 触る前:
- ohaiで便利だったOS搭載メモリとかCPUに応じた設定とか自動設定できないかな。 chefでいうと↓
site-cookbooks/mysqld/templates/default/etc/my.cnf.erb
innodb_buffer_pool_size = <%= ("#{node[:memory][:total]}"[/\d+/].to_f * 1024 * 0.75 ).to_i %>
server-id = <%= node[:ipaddress].split(".").last %>
site-cookbooks/nginx/templates/default/defaultconfs/default_nginx.conf.erb
worker_processes <%= node[:cpu][:total] %>;
site-cookbooks/elasticsearch/templates/default/sysconfig_elasticsearch
ES_HEAP_SIZE=<%= ("#{node[:memory][:total]}"[/\d+/].to_f / 1024 / 1024 * 0.5 ).round %>g
- ググったらCPUコア数に応じてmakeのjob数計算してる人はいた
make_jobs: "{{ansible_processor_count * ansible_processor_cores}}"
- 触った後:
- とりあえず四則演算はいけそう(小数点の数値を渡すと結果も小数点になるので注意)。四捨五入とかsplitした値の一部を使うとかはまだよくわからない。
innodb_buffer_pool_size = {{ ansible_memtotal_mb * 1024 * 768 }}
report-host = {{ ansible_default_ipv4.address }}
- もしできなかったらたぶんpythonでモジュール自作な気がする。
dry-run時に変化を前提とする処理がどうなるか
- 触る前:
- chefではbashやruby_blockの結果がわからずアレでレシピ変えたらVM作ってテストするのあった。
- 触った後:
- chefでいう入ってないサービスのserviceリソースは普通に失敗してた。
実行時の標準出力の表示問題
- 触る前:
- セミナーのデモでみたansibleの表示不親切すぎてありえぬ。想定外のエラーで通知くるようにして見ない前提風?
- 触った後:
-
-vvv
オプションつけるとめっちゃ詳しく出てくるので作りかけのときに超便利。いつもつけたい。 - nameとtagsを自分でちゃんと書かないとダメで詳細表示オプションがないとなんだかよくわかんない感じになる。
-
ホスト情報を管理しない運用ができるのか
- 触る前:
- 実はなるべくインベントリ(ホスト、chefでいうとnode)情報の管理したくない
- フロント側はステートレスでBGデプロイで結構入れ替わると管理の手間が。 インベントリ管理するならHA組んでて一意のパラメータ持ってるステートフルなやつだけ管理でいいんじゃないのかと思う次第。
- 触った後:
- そこまでたどり着いてないけど変数は
-e
オプションで渡せるっぽい - セミナーでansible-artとか作ってる人のLTをみたけどどうなのかな(よくわかってない)
- そこまでたどり着いてないけど変数は
GUIで管理
・towerでできることの話
→ダッシュボードで色々管理したい人にはよさそうですがお値段が台数でかかるようなのでお金持ちだったらですか。10台まで無料ですって。
→localのテスト環境だけなら便利らしいと噂なので使ってみてもよさそう。
今後
- 触る前:
- とりあえずじぶんでplaybookをかかないと始まらなさそうなので需要ありそうなのから順にやってみようかと。
- 触った後:
- チュートリアルを流した後にmysql5.7のcommunity版を入れるplaybookとか書いた(自社のgitlabにあげた)。初期パスワードのところに苦しんだけどregisterとかshellの使い方が分かった。楽しかった。
- もっとモジュールを使いこなしたい。 http://docs.ansible.com/ansible/list_of_all_modules.html