Ansible 初心者がplaybook~roleを学ぶ ④ (wordpress環境構築)-単体playbook編-


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 [email protected] 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(ベストプラクティス)編-