SlideShare a Scribd company logo
Ansible/Vagrantで
アドテク環境を最速構築
自己紹介
マーベリック株式会社
プロダクトグループ
オープンユニットマネージャー
池田英司
Github : https://github.com/pky
Wiki : http://wiki.pky.jp
Blog : http://pky.jp
今日の内容
数百台のアドテクサーバを構築するために
Vagrantをdestroyしてupして、
Ansible流して
ServerSpec走らせて。
の繰り返しをしてて気づいたことを
いくつか。
まずは
Vagrant/Ansible
Vagrant

みんなとっくに使いこなしてるだろうからスルー
そんなわけでほぼ、Ansibleのお話
Ansible
今回、OSのチューニングからミドルウェア
のインストール、デプロイまで全部Ansible
でやりました。
特徴
いらない
Agent
Database
Daemons

Listen Port
いいところ


クライアント側には何もインストー
ルする必要がない
いいところ
クライアント側には何もインストー
ルする必要がない
 sshがつながれば使える

いいところ
クライアント側には何もインストー
ルする必要がない
 sshがつながれば使える




構成管理ツールにもデプロイツール
にも使える
いいところ
クライアント側には何もインストー
ルする必要がない
 sshがつながれば使える


構成管理ツールにもデプロイツール
にも使える
 Yaml書くだけの簡単設定

いいところ
クライアント側には何もインストー
ルする必要がない
 sshがつながれば使える


構成管理ツールにもデプロイツール
にも使える
 Yaml書くだけの簡単設定
 Chefに挫折した私でも覚えれた

自分の構成
いろいろ
できるかぎりModuleを使う
めんどくさくてもShellやCommandじゃなく
てなんかしらのModuleを使うようにする

Module > Command > Shell
Vagrant destroyをあまり使わない

$ vagrant destroy –f
$ vagrant up

のようにサクッと壊して作ってを繰
り返すよりAnsibleの上書きを多めに。
ignore_errors: yesを使う
- name: password
shell: cat /root/.mysql_secret | awk '{ print $NF }'
register: mysql_passwd
- name: check MySQL root password
shell: mysqlshow -uroot -p{{ mysql_passwd.stdout }}
register: root_check
ignore_errors: yes
- name: set MySQL root password
command: |
mysql --connect-expired-password -uroot -p{{ mysql_passwd.stdout }} -e
"set password for root@'{{ item }}' = PASSWORD('{{mysql_root_passwd}}')"
creates=/root/.my.cnf
with_items:
- localhost
when: root_check.stderr.find('deniend') != -1 or root_check.stderr.find('expired.') != -1
forksを設定する
並列プロセス数の値

デフォルトだと5でとても少ない。
25〜50とかでも平気そう。
500でも大丈夫らしい。
$ ansible –I dev -m command -a "sudo service nginx status” all –forks 50
怖い時は
--checkでdryrun
 --stepで1つずつ実行

できるかぎりAnsibleで


1サーバの修正でも出来る限り
Ansibleを修正して流すように



ドキュメント代わりに、ログ代わり
に



一回しかやらないと思っても絶対ま
たやる
ご清聴
ありがとうございました。

More Related Content

Ansible/Vagrantでアドテク環境を最速構築