ansibleには公式がベストプラクティスの構成を用意しています。その構成を一括生成しましょう。
ansibleのベストプラクティスのディレクトリ構成は公式が公開しています。↓これです。
Best Practices — Ansible Documentation
このフォルダ構成をいつまでも覚えていられるわけではないので、汎用的に作成できるようシェルスクリプトを用意してみます。
シェルスクリプト
chefでいうところの「chef generate repo chef-repo」「knife cookbook create httpd」みたいなものです。
定数部分を適当に書き換えて使用します。
#!/bin/sh PLAYBOOK_DIR="/usr/vagrant/playbook" ENVIRONMENTS=('development' 'staging' 'production') ROLES=('common' 'httpd') cd $PLAYBOOK_DIR touch site.yml webservers.yml mkdir -p group_vars host_vars library filter_plugins roles for environment in ${ENVIRONMENTS[@]}; do touch $environment touch group_vars/$environment.yml done for role in ${ROLES[@]}; do mkdir -p $PLAYBOOK_DIR/roles/$role && cd $_ mkdir -p tasks handlers templates files vars defaults meta touch tasks/main.yml touch handlers/main.yml touch vars/main.yml touch defaults/main.yml touch meta/main.yml done
treeで確認
tree-no-iMac:vagrant tree$ tree ./playbook/ /usr/vagrant/playbook ├── development ├── filter_plugins ├── group_vars │ ├── development.yml │ ├── production.yml │ └── staging.yml ├── host_vars ├── library ├── production ├── roles │ ├── common │ │ ├── defaults │ │ │ └── main.yml │ │ ├── files │ │ ├── handlers │ │ │ └── main.yml │ │ ├── meta │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ ├── templates │ │ └── vars │ │ └── main.yml │ └── httpd │ ├── defaults │ │ └── main.yml │ ├── files │ ├── handlers │ │ └── main.yml │ ├── meta │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ ├── templates │ └── vars │ └── main.yml ├── site.yml ├── staging └── webservers.yml
雑感
chefは最初に覚えるべき用語や仕組みが多すぎます。用語を覚えた後の初期環境構築も面倒くさいんですよね。
chef serverは学習コスト大、必要サーバ数多い、冗長、
chef zeroは学習コスト大、
itamaeはちょっと将来性等が不安かもしれない、
ansibleは学習コスト中、rubyなどで記述できない、
結局どれも何かしらの不満がありますね。悩ましいところです。
- 作者: Lorin Hochstein,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/04/16
- メディア: 大型本
- この商品を含むブログを見る