2014年8月20日水曜日

AnsibleからVPC立てる

前置き

最近awsやgcpを触っていて、せっかく作った構成を他の人とかにも共有したいなーと思ってました。
Chefも触ったのですがなんとなーく肌に合わず、最近はAnsibleを使っています。
awsだけだとCloudFormationも有るのですがある程度のサイズになってくると、JSONは微妙ですね... CloudFormationをCoffeeScriptやRubyで書く色々なものも有るのですが、 だったら他のモノのクラウドも一貫して触れる物が良かったのでansibleにしています。

今回やること

以下の様なAWS VCP環境をAnsibleで作ります。

Playbookとかとか

構成

ベストプラクティスっぽい環境 VPCとか「ネットワーク構成」ってRoleに入れるのかな?? 区切りはよくわかないですね
.
├── ec2-servers #hosts
├── envs/ #環境設定 varsとか同じ感じ
│   └── dev.yaml 
├── group_vars/
│   └── all.yaml #awsのクレデンシャルとかリージョンを定義してます。
├── network.yml 
├── roles/
│   └── vpc/ #vpcの設定を行うRole
│       ├── tasks/
│       │   └── main.yaml
│       └── vars/
└── sites.yaml

コード

全般的に↓においてあります。
また以下を参考にしています。

envs/dev.yaml

環境設定を行います。
roles/vpc/tasks/main.yaml内でincludesしていてコマンド引数 environとかで、環境名(production.yamlとか)で設定を変えられます。

group_vars/all.yaml

AWSのクレデンシャルとか全般の設定を行っています。

roles/vpc/tasks/main.yaml

実処理です。 ほとんどdev.yaml内に書いてしまっているので外枠のみですが、ネットワーク周りをyamlで掛けるのはいいですねぇ ただ、route tablesの設定でprivate subnet的なものを作りたいのですが、どうしても空のroute tablesが作れなくてうまく行っていません。 ダミーで適当なroutingを作って後から消すとかがいいんですかね

0 件のコメント:

コメントを投稿