Ansible触ってみました

レイ
2024-07-29
2024-07-29

Ansible_Logoお疲れ様です。おれちゃんでござる!

最近は自動化を構築のところではなく、EC2の内部構築と設定の自動化に挑戦してます。
現在はゴルデンイメージでEC2の基本のインストールの部分をしてから手作業で各案件のインストールを行っています。
今回の目標はゴルデンイメージを使わずにオフィシャルイメージからインストールのステップをすべてAnsibleでしたいとおもいます。

メリットはいくつかあります。

- ゴルデンイメージをわざわざ更新しなくてよい

- 変更したければコードを変えることだけで済む

- 案件のもっと細かいインストールステップまでコードにできる

 

まず初めにAnsibleの構成を少し紹介します。

ファイルとディレクトリの構成

ファイルごとに仕様が決まっています。以下のツリーになってます。

├── php_setup
│   ├──files
│   │   └── php.conf
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   │   └── php-fpm.conf.j2
│   └── vars
│   └── main.yaml
├── inventory.yaml
└── main.yaml 

まずディレクトリのルートにある二つのファイルを紹介します。
- 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の内容のいくつかのパターンを紹介したいと思っていますので

お楽しみにしてね ^^💦