Ansible

[初心者向け] 実務開始の前に知っておきたいAnsibleのこと

More than 1 year has passed since last update.

この投稿は、チュートリアルを終えて実務に入る前の人に知っておいて欲しいことをまとめています。
チュートリアルは終えている前提なので、基本的な実行方法などは省いています。
社内メンバー宛なので偏りがあるかもしれないですが、みなさまの役にも経てば幸いです。

フォルダ構成を知る

変更を行う際は、既存のものはどこで何を書いているのかを知りましょう。
新規で作る際は、ansibleの公式サイトに書いてある best practice が参考になります

自分がやろうとしてることを確認する

開発環境で自分の仮想環境に対して実行する時以外は、自分がやろうとしていることをちゃんと理解してから実行しましょう。
「site.ymlが実はコメントアウトされてて、自分がやりたかったことが実行できなかった」なんてこともあるかもしれません。
(逆に、緊急対応でnginxの設定1行変えればいいだけなのに、site.yml全て実行してしまうのも考えものです。)

また、初めて本番環境に対して実行する時は、実行前にコマンドを確認してもらった上で、実行時にも横で見てもらうことをオススメします。

ansible-vault

ansibleはインフラ構築のためにuser/passなどの秘匿情報を記載する必要があります。gitのprivate repositoryにあればパスワードが平文で書かれててもバレる可能性は低いでしょうが、一般的には暗号化していると思います。
その暗号化の際に使えるのがansible-vaultです。

既存のansibleをいじってる時、先頭行に$ANSIBLE_VAULT;1.1;AES256と書いていたら、それがansible-vaultで暗号化されたファイルです

ansible-vault edit (ファイル名)

として、パスワードを入力すれば、編集ができます

passwordを入力しなくても編集ができた人は、ansible.cfgに以下のようにパスワードファイルを指定する記述があるかと思います。
パスワードは厳重に管理しましょう

ansible.cfg
vault_password_file=~/.ansible_vault_password

複数台にansibleのtaskを実行している時の注意

本番環境に対してansibleを実行する時は対象のサーバーが複数台の時が多いと思います。
その際、僕自身がよく詰まるのは以下2点です

複数台のうち、1台が落ちても他のサーバーの実行は止まらない

ansibleを実行していると、エラーが起きたら実行が中断されます。
しかし、複数台のうちの1台が落ちていてもその他のサーバーへの実行はとまりません。
なので、無事終わったなぁと思って見てみると、実は途中で1台こけていて何が原因かわからなくなることもあります。
慌てず実行ログを見ましょう。

定義されてる変数が違う

複数台の場合は、定義されている変数が違います。(cloudだと、同じインスタンスのec2たてても、describeしてみると微妙に違うとかもありますよね)

そこで使えるのがdebug タスクです

- debug: var=変数名

で、その時の変数に何が入っているのかがわかります。

最後に

インフラ周りは影響範囲も大きいので、変更はくれぐれも慎重に。
新規の時は、動くか動かないか0/1の世界なので、既存の他サービスに影響与えないように実行対象にだけ注意して、ガンガンやればいいんじゃないかなぁと思います。

では、よいansible lifeを

[初心者向け] 実務開始の前に知っておきたいシリーズ

[初心者向け] 実務開始の前に知っておきたいSpreadSheetのこと
[初心者向け] 実務開始の前に知っておきたいGoogleAnalyticsのこと
[初心者向け] 実務開始の前に知っておきたいWordPressのこと
[初心者向け] 実務開始の前に知っておきたいRailsのこと