環境
Amazon Linux
Ansible 実行環境の準備
Vagrant で CentOS 6.5 環境を構築
config.vm.box = "chef/centos-6.5"
を指定した Vagrantfile を用意して vagrant up
を実行する。Vagrant の内容は割愛。
EPEL を有効にする
$ sudo rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm
Ansible をインストール
$ sudo yum install ansible -y
EC2 インスタンスと疎通確認
$ ansible -i <hosts ファイルのパス> --private-key=<秘密鍵のパス> -u ec2-user -m ping <EC2インスタンスのIP>
<EC2インスタンスのIP> | success >> {
"changed": false,
"ping": "pong"
}
-i オプションで指定する hosts ファイルには、ansible を実行する対象のホスト名またはIPを指定する。
デフォルトは /etc/ansible/hosts
なので、こちらにホスト名を追記している場合はこのオプションは不要となる。
MySQL をインストールする
playbook を作成する
MySQL をインストールし、初期DB・ユーザーを登録する playbook を作成してみた。
MySQL-python
は mysql_db, mysql_user といったモジュールを利用するために必要だった。
各項目の詳細は参考サイトを参照すべし。
- hosts: <EC2インスタンスのIP>
remote_user: ec2-user
sudo: yes
gather_facts: no
vars:
db:
- name: <DB名>
user: <DBユーザー>
pass: <DBユーザーパスワード>
tasks:
- name: install mysql
yum: name={{ item }} state=latest
with_items:
- mysql
- mysql-devel
- mysql-server
- MySQL-python
- name: run mysqld
service: name=mysqld state=running enabled=yes
- name: create database
mysql_db: db={{ item.name }} state=present encoding=utf8
with_items: db
- name: create database user
mysql_user: name={{ item.user }} password="{{ item.pass }}" priv={{ item.name }}.*:ALL state=present
with_items: db
playbook を実行する
$ ansible-playbook --private-key=<秘密鍵のパス> ./playbook-mysql.yml
参考サイト
- Ansible: http://docs.ansible.com/
- Ansible 入門: http://qiita.com/ArimaRyunosuke/items/1f9d840311584d8160bc
- Ansible Tutorial: http://yteraoka.github.io/ansible-tutorial/