ごあいさつ
すっかり暖かい陽気となり、花粉が飛び交う素敵な季節となりました。涙とクシャミとフレンドリーになれてとっても幸せなatshtknです。
初投稿なのでgkbrですが、最近いじりだしたansibleでLAMP環境を作ってみたいと思います!
ansibleって何?
一般的には構成管理ツールとか呼ばれていて、代表的なものではchefやpuppetがあります。詳しい説明はおそらく他のブログとかで書かれt(ry
ansibleの良いところを言ってみよう
記法が簡単
YAMLという記法を使ってプレイブックを書きます。YAMLって何?っていう話はGoogle先生に聞いてみてください。構造化されたデータを表現するためのフォーマットだそうです。とても簡単な記法でこんな感じです。
- yum: name=* state=latest
なんとなく分かるかと思いますがyum update
を実行するよという内容です。簡単でしょう?
ドキュメントがしっかりしてる
まずは次のURLを読んでみてください。
https://docs.ansible.com/playbooks_intro.html
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks: - name: ensure apache is at the latest version
yum: pkg=httpd state=latest - name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify: - restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers: - name: restart apache
service: name=httpd state=restarted
こんな感じでapacheをインストールするための記述例が記載されます。文章は英語ですがYAMLが分かれば記述例から何をしているか読み取るのは容易だと思います!
LAMP環境を簡単に構築してみる
ということで早速LAMP(nginx + php-fpm + mysql)環境を構築してみようと思います!今回はVagrant+CentOSな環境でやってみます!
※ 事前にVagrantをインストールしてCentOSの準備も済ませています。
システムのアップデート
- yum: name=* state=latest
これは先ほど紹介しているので説明は省きます。
リポジトリをゲット
- yum: name={{item}} state=present
with_items: - https://rpms.famillecollet.com/enterprise/remi-release-6.rpm
- https://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
- https://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
nginxをyumでインストールするためにリポジトリをゲットします。
リポジトリをデフォルトでは使わないようにする
- replace: dest=/etc/yum.repos.d/{{item}} regexp=”enable *= *1″ replace=”enable=0″
with_items: - epel.repo
- remi.repo
- nginx.repo
- mysql-community.repo
以前はenable=1
となっていたremi.repoでしたが現在はenable=0
となっているようです。ですが、念のためenable=1
という設定があったらenable=0
となるようにします。
ミドルウェアのインストール
- yum: name={{item}} state=present enablerepo=”mysql55-community”
with_items: - { name: php, repo: remi-php56 }
- { name: php-fpm, repo: remi-php56 }
- { name: php-mysql, repo: remi-php56 }
- { name: nginx, repo: nginx }
- { name: mysql-community-server, repo: mysql55-community }
- { name: MySQL-python, repo: mysql55-community }
っていう感じです。リポジトリは必要なものを指定してください。
serviceとして登録する
- service: name={{item}} state=started enabled=yes
with_items: - nginx
- php-fpm
- mysqld
各ミドルウェアをserviceに登録して起動するよう設定します。
そして、今まで書いてきた内容はplaybook.yml
という名前のファイルに記述して保存しておきましょう。
hostsを用意する
hosts
はplaybookの内容をどのサーバで実行するか記述するファイルです。
[webserver]
192.168.xx.xx
[dbserver]
192.168.xx.xx
っていう感じで書きます。
playbookを実行する
ansible-playbook -i hosts playbook.yml
あとは数分間お茶を飲んで待つだけです。
以上
いかがでしたか?とっても簡単でしたよね!ということでansibleで環境構築をエンジョイしましょう!!