ブログ移住計画その2~AnsibleでWordPressの構成管理~
インフラ部分は整ったので、
実際にインストールをしていくのですが、
ここではAnsibleを使ってインストールの構成管理をします。
で、いきなりAWS上でやるのはあれなので、一旦手元のPC(Mac)でVagrantを使ってテスト用に3台(プロビジョニング、WordPress、MySQL)立てます
いろいろとインストールの記事(こことか)を読んでいくと、
がいるらしい。
で、今回はMySQLとそれ以外でインストール先を分けるのでそこも気にしながら進めていく。
Ansibleの構成
. ├── group_vars/ │ └── mysql.yml ├── inventory/ │ └── hosts ├── playbook.yml ├── roles/ │ ├── httpd/ │ │ ├── handlers/ │ │ │ └── main.yml │ │ └── tasks/ │ │ └── main.yml │ ├── mysql/ │ │ ├── handlers/ │ │ │ └── main.yml │ │ └── tasks/ │ │ └── main.yml │ ├── php/ │ │ └── tasks/ │ │ └── main.yml │ └── wordpress/ │ └── tasks/ │ └── main.yml └── templates/
※いらないとこ多々あり。今後スケール見越して一部ディレクトリ作ってます。
プロビジョニング先のIPの設定
Inventory/hostsファイルを作る
[wp] 192.168.33.90 [mysql] 192.168.33.91 ## IPはその時による
MySQLのパスワードを変数化
group_vars/mysql.yml
mysql_root_password: "<rootパスワード>" mysql_db_password: "<wordpress用ユーザのパスワード>"
httpd(Apache)のインストール他もろもろ
httpd/tasks/main.yml
- name: install apache yum: name: httpd - name: start http server service: name: httpd state: started enabled: yes
頻繁にhttpdは再起動するので、再起動用のハンドラを作っておきます。 httpd/handlers/main.yml
- name: Restart httpd service: name: httpd state: restarted
PHPのインストール
php/tasks/main.yml
PHPを素直にインストール
php-develとphp-mbstringはいらないかも?
インストールあとにhttpdを再起動
- name: install php yum: name: "{{ item }}" state: latest with_items: - php - php-devel - php-mbstring - php-mysql notify: Restart httpd
WordPressをインストール
- tar.gzでダウンロード
- ファイルを解凍
としています。
あとhtmlディレクトリに配置して、所有権もapacheにしています。
- name: download wordpress get_url: url="https://wordpress.org/latest.tar.gz" dest=/tmp/wordpress.tar.gz - name: unarchive wordpress unarchive: src=/tmp/wordpress.tar.gz dest=/var/www/html/ copy=no - name: change owner to apache file: path=/var/www/html/wordpress/ owner=apache group=apache recurse=yes - name: restart httpd service: name: httpd state: restarted
MariaDBをインストール
MySQLと書いていましたけど、CentOS7はMariaDBが推奨らしいので、こっちをインストール
手順は以下の通り。
- MariaDBをインストール
- MariaDBを起動
- MariaDBのrootユーザを作成
- rootユーザでWordPress用のDB作成
- WordPressDB用のユーザ(wp)を作成
5-1. IPはWordPressサーバに届くようにサブネット範囲設定
- name: install mariadb yum: name={{ item }} state=installed with_items: - MySQL-python - mariadb - mariadb-server - libselinux-python - name: start mariadb service: name: mariadb state: started enabled: yes - name: create root user mysql_user: name: root host: localhost password: "{{ mysql_root_password }}" login_user: root login_password: "{{ mysql_root_password }}" check_implicit_admin: yes - name: create database for wordpress mysql_db: login_user: root login_password: "{{ mysql_root_password }}" name: wordpress state: present - name: create user for wordpress database and attach previlage mysql_user: login_user: root login_password: "{{ mysql_root_password }}" name: wordpress password: "{{ mysql_db_password }}" priv: "wordpress.*:ALL" host: 192.168.0.0/255.255.0.0 state: present
playbookの作成
各タスクを実行するplaybookを作成
- hosts: wp become: yes become_user: root tasks: roles: - httpd - php - wordpress - hosts: mysql become: yes become_user: root tasks: roles: - mysql
Playbookの実行
ansible-playbook -i inventory/hosts playbook.yml
WordPressを入れたサーバにアクセス。
うまくいきました。
(初期設定の画像を取り忘れた・・・)
とりあえず、問題なさそう。
ただAWSに乗せるにはもうちょっと設定をカスタマイズしたいので、いろいろ触ってみます。
参考URL: