wordpress構築用のAnsible playbookの作成を行います。
wordpress環境
-動作要件-
・PHP バージョン7.4以上
・MariaDB バージョン10.1以上
参考wordpress公式:https://ja.wordpress.org/download/
-playbook要件-
・PHP,MariaDBのバージョン指定が出来るようにして、流用性の配慮。
・ansibleのチェックモード実行(--check)でエラーによりTask停止しないように配慮。
-サーバ構成-
・webサーバ (IP address:192.168.16.12)
・dbサーバ (IP address:192.168.16.13)
#playbookを起こす前に、手動構築手順を作成。
#####web server構築
① epel,phpのrepositoryをインストール
yum install epel-release http://rpms.famillecollet.com/enterprise/remi-release-7.rpm -y
②ahapcheのインストール
yum install httpd --enablerepo=epel -y
③wordpress パッケージのダウンロード
wget http://wordpress.org/latest.tar.gz -P /tmp/
④wordpress パッケージの解凍(解凍先指定)
tar -zxvf /tmp/latest.tar.gz -C /var/www/html/
⑤wordpressディレクトリ(配下含む)のオーナー、グループをapacheへ変更
chown -R apache:apache /var/www/html/wordpress
⑥phpインストール(バージョン7.4指定)
yum install php php-cli php-pdo php-fpm php-json php-mysqlnd --enablerepo remi-php74 -y
⑦ apache起動、有効化
systemctl restart httpd
systemctl enable httpd
#####DB server構築
①mariadb repository(version10.1用)をダウンロード
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=mariadb-10.1
②mariadb-server,MySQL-pythonをインストール
yum install mariadb-server MySQL-python -y
③mariadb起動
systemctl start mariadb
④mariadb有効化
systemctl enable mariadb
⑤DB:wordpress作成
mysqladmin create wordpress
⑥DB:wordpressにユーザ:web_user作成(接続元:webサーバ:192.168.16.12、パスワード:password)
mysql -e "grant all privileges on wordpress.* to web_user@192.168.16.12 identified by 'password'"
#####wordpressのsetup ※インストール手順ではない、参考として記す。
http://192.168.16.13/wordpress/wp-admin/install.php
## ansible playbook作成(web,db手動構築手順を元に作成する)
playbookの主な記述方法 ※大まかな記述ルール
---
- name: {Play name}
hosts: {target server} … ターゲットサーバ(ターゲットグループ)
become: yes … sudo有効化(ターゲットサーバでroot権限を持った変更が必要な場合、記述)
tasks:
- name: {task name} … task 名を付ける、実行時にどのタスクが動いているか確認する目印となる。
{modle}: …使用したいモジュールを記述ルールに従い記述。
#####playbookで利用したansibleモジュール
modlue name | 概要 |
---|---|
yum | yumを用いたインストール |
get_url | wget変わりにpkg DL |
stat | ファイル情報取得 |
shell | Linxコマンド実行、commandと違ってパイプ等が使える |
unarchive | 圧縮ファイル解凍 |
file | ファイル操作(権限変更など) |
service | サービス操作 |
mysql_db | DB作成 |
mysql_user | DBユーザ作成 |
手動手順を元に
要件であるチェックモードでTask停止しないよう配慮(statとwhenによる条件分岐)したplaybookを作成。
git habに公開しています。
https://github.com/hiro0413ike/ansible_study/blob/main/ansible/web.yml
https://github.com/hiro0413ike/ansible_study/blob/main/ansible/db.yml
次回で、本当の目的であったroles理解をすすめます。
-追伸- <version指定インストール手順作成は、なんだかんだで苦労しました。>
####次回Link>>Ansible 初心者がplaybook~roleを学ぶ ⑤ (wordpress環境構築)-roles(ベストプラクティス)編-