とりあえず動かすとこまでの「Ansible入門」:nginx, php-fpm, mysql編
Chefよりも手軽に使えるということでAnsibleを試してみました。
今回は、nginx、php-fpm、mysqlを入れて、さらにmysqlでデータベースとユーザーを作成するところまでをやってみます。とりあえずの使用感を知りたかったので、Ansibleの環境はlocalhostです。
Ansibleを使うには
CentOS6でAnsibleを使うには、yumでansibleをインストールするだけでOKです。インストールしたらサーバー構築の手順書であるPlaybookを書いて、実行すればOKです。
簡単な流れは以下の通り。
・Ansibleをyumでインストール ・Playbookでサーバー構築の設定を書く ・Playbookを実行
1. Ansibleのインストール
$ yum clean all
$ yum -y update
$ yum -y install ansible
$ cd /etc/ansible/
構成は以下のようになってます。
$ ls
ansible.cfg hosts roles
ansible.cfgはansibleの設定ファイル。hostsはansibleの対象となるサーバーや、グループなどを設定できます。
今回はlocalhostのみが対象でさくっとお試しなので、特に設定することはありません。
2. Playbookを作成
rolesディレクトリや好きなディレクトリに移動してplaybookを作ります。
使えるコマンド(モジュール)は、公式のModule Indexに記載があります。
$ cd roles
- hosts: 127.0.0.1 connection: local sudo: yes tasks: - name: add nginx repository yum: name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present - name: add remi repository yum: name=http://rpms.famillecollet.com/enterprise/remi-release-6.rpm state=present - name: add epel repository yum: name=http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm state=present - name: install nginx yum: name=nginx state=present - name: install php packages yum: name={{ item }} state=present enablerepo=remi with_items: - php - php-cli - php-devel - php-mbstring - php-gd - php-pear - php-xml - php-fpm - name: install mysql packages yum: name={{ item }} state=present enablerepo=remi with_items: - mysql.x86_64 - mysql-server.x86_64 - php-mysql - name: be sure php-fpm is running and enabled service: name=php-fpm state=running enabled=yes - name: be sure mysqld is running and enabled service: name=mysqld state=running enabled=yes - name: be sure nginx is running and enabled service: name=nginx state=running enabled=yes - name: install MySQL-python yum: name=MySQL-python state=present - name: add root user of mysqld mysql_user: name: root host: localhost password: samplepassword - name: create n edit ~/.my.cnf lineinfile: dest: ~/.my.cnf line: "[client]\nuser=root\npassword=samplepassword" create: yes - name: create new database mysql_db: name: wordpress state: present - name: add new user mysql_user: name: wordpress password: wordpress priv: "wordpress.*:ALL" host: localhost state: present
3. Ansibleを実行
Playbookの実行にはansible-playbookコマンドを使います。–syntax-checkなどをつけることで、構文チェックなどができます。
# 構文チェック
$ ansible-playbook playbook.yml --syntax-check
# タスクを確認
$ ansible-playbook playbook.yml --list-tasks
# 仮実行
$ ansible-playbook playbook.yml --check
# 実行
$ ansible-playbook playbook.yml
使ってみた感想としては、手軽に使えてYAMLで記述できるので見通しもよく扱いやすい印象。
その反面、ほかの人も指摘していますが複雑な処理は苦手そうといったイメージ。