ごあいさつ

すっかり暖かい陽気となり、花粉が飛び交う素敵な季節となりました。涙とクシャミとフレンドリーになれてとっても幸せな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で環境構築をエンジョイしましょう!!

投稿者プロフィール

atshtkn
atshtkn
俺より熱い奴に会いに行く