お疲れ様です。おれちゃんでござる!
最近は自動化を構築のところではなく、EC2の内部構築と設定の自動化に挑戦してます。
現在はゴルデンイメージでEC2の基本のインストールの部分をしてから手作業で各案件のインストールを行っています。
今回の目標はゴルデンイメージを使わずにオフィシャルイメージからインストールのステップをすべてAnsibleでしたいとおもいます。
メリットはいくつかあります。
- ゴルデンイメージをわざわざ更新しなくてよい
- 変更したければコードを変えることだけで済む
- 案件のもっと細かいインストールステップまでコードにできる
まず初めにAnsibleの構成を少し紹介します。
ファイルとディレクトリの構成
ファイルごとに仕様が決まっています。以下のツリーになってます。
まずディレクトリのルートにある二つのファイルを紹介します。
- main.yaml はplaybookの入り口です。ここから各Roleを操る
- inventory.yaml はhosts(サーバーのこと)と、このサーバーのインストールステップに使われてる変数の値が示されてる。
php-setupはRoleです。
Roleはインストールステップを細かいステップを区分するために使ってます。
当のRoleはphpをインストールするために作ったのでphp-setupで名付けました。
filesのなかでコピーしたいファイルを置いておく
handlersのなかでプロセスの再起動を設定します
varsのなかで変数を作ります。inventoryの変数で新たな変数も作れるし他の変数も固定できます
templatesのなかは設定ファイルをそのままコピペではなくjinja2のコードで設定ファイルを生成する
tasksのなかでAnsibleのコードでステップを書く
taskでなにができますか?
一般的にコマンドで打てることは大体taskでできます。
例えばapacheのテストページを自動かにしましょう。
destのところで で変数をつくれます。varsのなかでhttp_hostは以下のように定義されている。
これで変数で変数を作ってます。元の変数はinventoryのなかに値されてます。
結果的に変数を細かく設定でき、インストールステップも案件ごとに調整できます。
最後に
これでもっと易くEC2の内部設定はできそうでしょうね!
これからtaskの内容のいくつかのパターンを紹介したいと思っていますので
お楽しみにしてね ^^💦