uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

Ansible始めてました。

昨年秋ぐらいから必要にかられてAnsibleを始めて今日までいろいろ書いたので振り返りをしようと思います。

まず、Ansibleを始める前はchefを業務で触っていてInfrastructure as a Code的なものは分かった状態でAnsibleを触りました。

入門書として自分はオライリーの初めてのAnsibleを買いました。

初めてのAnsible

初めてのAnsible

本書で紹介されているAnsibleは1.x系と現在の最新版である2.7とはメジャーバージョンが違うもので説明が進んでいきます。 最初はメジャーバージョン違いを気にして購入を躊躇したのですが一通り読んだあとにこの点を振り返ると特に支障はなかったというのが自分の実感です。当然、2.xで導入された機能はほとんど紹介されていないのでそこは公式ドキュメントを読んで補完する必要がありますがAnsibleのドキュメントはまとまりがありよく書けているのでドキュメントがなく使い方が分からないということにはならないでしょう。

そして、一通り読破しつつAnsibleを日常のパッケージ更新などのオペレーションに取りいてその過程で枝葉となる機能を少しずつ身につけていきました。 公式ドキュメントがわかりやすく書かれているので"Ansible + <やりたいこと>"でググって公式ドキュメントをヒットさせて学んでいくのが自分の学び方です。 docs.ansible.com

このような状態で一月ほど過ごした次は新規で構築するシステムをChefからAnsibleに全面的に置き換えるという作業を行いました。
新システムのプロビジョニングのために監視系を含め10以上のAnsible Roleを作成し3つのコンポーネントをセットアップしました。
同じことをChefでやろうとするとAnsibleの数倍以上の時間とコード量になったであろうことを思うとこの時に本当にAnsibleを導入して良かったと思いました。

Chefと比較した時にAnsibleの良いところは最初のハードルが低いところです。 Chefの場合はChef Serverがあってそこにクックブックをアップロードし対象サーバーをブートストラップしてknifeコマンドでロールや環境を設定してやっとプロビジョニングが出来るのに対して、Ansibleは作業対象サーバーを記載したinventoryファイルと作業内容を記載したplaybook yamlの2ファイルで始められるという違いがあります。 このたった2ファイルから始められるというポイントが時間がないけど少しだけやってみようかという気持ちにさせるのとプレイブックがただのyamlで一切コードを書く必要がなく新たに言語を覚える必要もないというのがAnsibleのメリットだと思います。

自分は初めChefからAnsibleに移行するのを躊躇していましたが今ではさっさとAnsibleに移行しておけば良かったと逆に後悔するぐらいに気持ちでいます。

さらに、今年に入ってからは通常のサーバー・オペレーションに加えて、PackerでのAWS AMIのプロビジョニングにも使うようになりました。
この利用方法はサーバーでプレイブックを実行し一通り検証したあとにpackerのjsonコードを少し足すだけでAMIが足すことが出来るのでシェルスクリプトなどを使うよりも冪等性やデバッグの容易性で有益でした。

2019年も2月になりましたが今年Ansibleを始める人の助けになればと思って自分が最近導入したときの学び方をまとめてみました。