Ansibleの備忘録(環境分離編)
Ansibleを環境毎に使い分けてみました。
実行したAnsibleのバージョンは 2.7.1
です。
ではさっそく!!
やりたいこと
- 環境毎にansibleを使い分ける
- dev /stg
verifi
ロールで実行環境のenvを表示させて確認する
検証時のAnsibleディレクトリ構造とplaybook
├── bastion.yml ├── group_vars │ ├── all │ ├── env_dev │ │ └── main.yml │ ├── env_stg │ │ └── main.yml │ └── role_bastion ├── inventory │ ├── dev │ └── stg └── roles └── verifi └── tasks └── main.yml
- bastion.yml
- hosts: role_bastion user: ubuntu become_method: sudo gather_facts: yes roles: - verifi
環境分離にinventoryを使う
今回はdevとstgをそれぞれ用意した。
inventory/dev
[role_bastion] localhost [env_dev:children] role_bastion
inventory/stg
[role_bastion] localhost [env_stg:children] role_bastion
それぞれの環境名を変数をセットする
/group_vars/env_dev/main.yml
--- env: dev
/group_vars/env_stg/main.yml
--- env: stg
環境毎の変数を参照しているか確認
inventoryでdev/stgを指定して出力を確認する
- devを指定して実行する
$ ansible-playbook -i inventory/dev bastion.yml -D
TASK [verifi : echo environment] *********************************************************************** ok: [localhost] => (item=dev) => { "dev": "VARIABLE IS NOT DEFINED!", "item": "dev" }
- stgを指定して実行する
$ansible-playbook -i inventory/stg bastion.yml -D
TASK [verifi : echo environment] *********************************************************************** ok: [localhost] => (item=stg) => { "item": "stg", "stg": "VARIABLE IS NOT DEFINED!" }
まとめ
- inventoryを使って、環境を指定してAnsibleを実行することができた。
- これで、複数の環境をひとつのリポジトリでコード管理してプロビジョニングをすることができる。