LAMP環境構築itamaeレシピを作ってみる

実際に実行するレシピ setup.rb

まずはtimezoneを設定します

# timezoneの設定
execute 'set timezone' do
  command 'timedatectl set-timezone Asia/Tokyo'
end

次にfirewallの停止と無効化
開発環境なのでばっさりきります

# firewalld停止,無効化
service 'firewalld' do
  action [:disable, :stop]
end

インストールするミドルウェア別にレシピを作成しそれを読み込む
それぞれの内容は後述する
それぞれのレシピはこのレシピと同階層のcookbooks配下に
それぞれのミドルウェアのディレクトリを作成してそこに配置することとする。

include_recipe "./cookbooks/apache/default.rb"
include_recipe "./cookbooks/php/default.rb"
include_recipe "./cookbooks/mariadb/default.rb"
include_recipe "./cookbooks/phpmyadmin/default.rb"

最後に設定の反映を兼ねてApacheを起動、有効化する

# Apache起動、有効化
service 'httpd' do
  action [:start, :enable]
end

Apache設定レシピ ./cookbooks/apache/default.rb

# Apacheインストール
package 'httpd' do
  version '2.4.6'
end

# httpd.confのバックアップ
execute 'httpd.conf backup' do
    command 'mv /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org'
end

# httpd.confの転送
remote_file "/etc/httpd/conf/httpd.conf" do
  owner "root"
  group "root"
  source "/vagrant_data/httpd.conf"
end

PHP設定レシピ ./cookbooks/php/default.rb

# PHPのremiリポジトリ設定
execute 'php remi repo set' do
    command <<-EOF
rpm --import https://raw.githubusercontent.com/remicollet/remirepo/master/remi-release/RPM-GPG-KEY-remi
yum -y install yum-utils http://remi.kazukioishi.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php56
EOF
end

# PHPのインストール
package 'php' do
    version '5.6.14'
end

# PHPのプラグインをインストール
package 'php-mysqlnd php-gd php-intl php-mbstring'

# php.iniのバックアップ
execute 'php.ini backup' do
    command 'mv /etc/php.ini /etc/php.ini.org'
end

# php.iniの転送
remote_file "/etc/php.ini" do
  owner "root"
  group "root"
  source "/vagrant_data/php.ini"
end

# phpinfoの転送
remote_file "/var/www/html/info.php" do
  owner "apache"
  group "apache"
  source "/vagrant_data/info.php"
end

MariaDB設定レシピ ./cookbooks/mariadb/default.rb

# MariaDBインストール
package 'mariadb-server'

# MariaDB所有者設定
execute 'mariadb permition' do
    command <<-EOL
chown -R mysql:mysql /var/log/mariadb
chown -R mysql:mysql /var/lib/mysql
EOL
end

# my.cnfのバックアップ
execute 'my.cnf backup' do
    command 'mv /etc/my.cnf /etc/my.cnf.org'
end

# my.cnfの転送
remote_file "/etc/my.cnf" do
  owner "root"
  group "root"
  source "/vagrant_data/my.cnf"
end

# MariaDB起動、有効化
service 'mariadb' do
  action [:start, :enable]
end

# MariaDB初期設定
execute "mysql_secure_installation" do
  user "root"
  only_if "mysql -u root -e 'show databases' | grep information_schema" # パスワードが空の場合
  command <<-EOL
mysqladmin -u root password "password"
mysql -u root -ppassword -e "DELETE FROM mysql.user WHERE User='';"
mysql -u root -ppassword -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');"
mysql -u root -ppassword -e "DROP DATABASE test;"
mysql -u root -ppassword -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
mysql -u root -ppassword -e "FLUSH PRIVILEGES;"
EOL
end

phpMyAdmin設定レシピ ./cookbooks/phpmyadmin/default.rb

# phpMyAdminインストール
package 'phpMyAdmin'

# phpMyAdmin権限設定
execute 'phpMyAdmin owner permition' do
  command <<-EOL
chown -R apache:apache /usr/share/phpMyAdmin/
chmod -R 700 /usr/share/phpMyAdmin/
EOL
end

# phpMyAdmin.confのバックアップ
execute 'phpMyAdmin.conf backup' do
    command 'mv /etc/httpd/conf.d/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf.org'
end

# my.cnfの転送
remote_file "/etc/httpd/conf.d/phpMyAdmin.conf" do
  owner "root"
  group "root"
  source "/vagrant_data/phpMyAdmin.conf"
end

※各設定ファイルはそれぞれ/vagrant_data配下に設定しておく必要がある

あとは実行するだけ

su -
itamae local setup.rb

Vagrant + Itamaeでサーバの構成管理をする

itamae

今回はまずVagrant内の環境でお試します。

  1. Vagrantのインストール
    https://www.vagrantup.com/
    DOWNLOADボタンをクリック
    該当のOSのリンクをクリック
    インストーラーにしたがってインストールする
    ※少し時間がかかります。

  2. BOXの追加
    http://www.vagrantbox.es/
    でお好みのOSを探し、URLをコピーする。

    $ vagrant add centos71 https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box
        

  3. vagrant up
    ディレクトリを作成し、vagrantの初期化を行います。
    その後、vagrant upで起動させます。

    $ mkdir vagrant_test
    $ cd vagrant_test
    $ vagrant init cenetos71
    $ vagrant up
        

    少し時間がかかるので、まったりと待つ。

  4. vagrant ssh
    起動されたらsshでアクセスしてみましょう。

    $ vagrant ssh
        

  5. rubyをインストールする
    itamaeを動かすにはrubyが必要なのでインストールする

    $ su -
    # yum install ruby
        

    確認

    # ruby -v
    ruby 2.0.0p598 (2014-11-13) [x86_64-linux]
        

  6. itamaeをインストールする
    gemでインストールする

    # gem install itamae
        

    確認

    # itamae version
    Itamae v1.6.0
        

    ※ rubyとitamaeのインストールはVagrantfileに書いておくと楽

    config.vm.provision ”shell”, inline: <<-SHELL
      sudo yum install -y ruby
      sudo gem install itamae
    SHELL
        

  7. recipeを作成する

    # mkdir /recipes
    # vi httpd.rb
        

    apacheをインストールして起動するレシピ

        # Apacheインストール
        package 'httpd' do
          action :install
        end
    
        # Apache起動、有効化
        service 'httpd' do
          action [:enable, :start]
        end
        

  8. recipeを実行する

    # cd recipes
    # itamae local httpd.rb
        

  9. Apacheの起動を確認する

    # systemctl status httpd
    
        

    activeとなっておりapacheの起動が確認出来た。