01c. 開発環境構築(Windows 10+Ubuntu18.04+Ansible)(備忘録)

Ansibleとは

Ansibleはインフラ業務を自動化できるツールです。今回は、Ansibleを使用してLAMP環境構築及びWordPressのテーマ及びプラグインのインストールまでをおこなっていきます。

Ansibleが操作できる対象の一覧
対象 操作の一例
ネットワーク機器 インターフェース設定、VLAN設定などの各種コンフィグの投入など
ストレージ ボリュームの作成や削除、編集など
物理サーバ 電源ON/OFF、IPMI(Intelligent Platform Management Interface)などの操作
仮想化基盤 仮想マシン、仮想ネットワークの作成、削除、編集など
クラウド環境 インスタンスやセキュリティグループなどの作成、削除、編集など
LinuxやWindowsなどのOS パッケージのインストール、設定ファイルの配布、再起動など
特徴
項目 内容
エージェント不要 自動化の対象にエージェントソフトウェアをインストールする必要がない(要Python)
yaml形式 学習コストが低い
冪統制(べきとうせい) 既に成功している処理はスキップされ、まだ成功していない処理のみが実行されるので、Ansibleを繰り返し実行することができる

Ubuntuのリセット

Ubuntuを初期化する場合、最初に思い浮かぶのはUbuntuをアンインストール後に再度インストールすることですが、Microsoft Store経由でインストールしたUbuntuは、「リセット」という操作を行うことで設定を初期化できます。

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
	:

参考
Windows 10のWSL環境を初期化してクリーンな状態に戻す

ssh接続設定

Teratermから接続できるように、SSHサーバの設定をします。

$ ssh -V						# open-sshがインストールされていることを確認
OpenSSH_7.6p1 Ubuntu-4, OpenSSL 1.0.2n  7 Dec 2017

$ vi /etc/ssh/sshd_config
変更前:PasswordAuthentication no
変更後:PasswordAuthentication yes	# パスワード認証を許可

# sudoコマンド実施時、serviceコマンドについてはパスワード入力を省略できるよう追記
$ sudo visudo
	:
# Allow sudo without a password
user01  ALL=(ALL)       NOPASSWD: /usr/sbin/service

# ログイン時にsshが起動するよう追記
$ vi ~/.profile
	:
# ssh start
if ! service ssh status > /dev/null 2>&1 ; then
	sudo service ssh start > /dev/null 2>&1
fi

$ . ~/.profile					# .profile読み込み

以降、Teratermから作業

環境設定

$ sudo apt update			# パッケージを管理しているDBを最新の状態に更新
$ sudo apt dist-upgrade		# インストールされているパッケージを全更新。追加でパッケージが必要になった場合もインストールしてくれる
$ sudo apt install build-essential		# gcc, gdb ...などの開発ツールをインストール

$ git --version				# gitがインストールされていることを確認
git version 2.17.1

# gitの初期設定(後でGitHubにPlaybookを保存したい場合)
$ git config --global user.name "ユーザ名"
$ git config --global user.email "メールアドレス"

$ python --version			# pythonがインストールされていることを確認
Python 2.7.15rc1

$ sudo apt -y install python-pip	# Pythonのパッケージ管理ツールであるpipをインストール
$ sudo apt -y install libssl-dev	# OpenSSLのライブラリをインストール

Ansibleのインストール

$ sudo apt install software-properties-common					# リポジトリの追加用のapt-add-repositoryパッケージをインストール
$ sudo apt-add-repository --yes --update ppa:ansible/ansible	# AnsibleのPPA(Personal Package Archive)をリポジトリに追加
$ sudo apt install ansible										# Ansibleのインストール
$ ansible --version
ansible 2.7.5
	:
$ ansible localhost -m ping -o -u user01
127.0.0.1 | SUCCESS => {"changed": false, "ping": "pong"}		# pingモジュールがpongと応答を返すことを確認

Ansibleの自動化に必要な要素

Ansibleは、4つのインプットを動作時に必要とします。

モジュールとPlaybook

・モジュール
モジュールはAnsibleが「よくある作業を部品化」したもので、標準で2,000近くのモジュールを持っています。このモジュールにパラメータを与え、様々な作用をサーバやネットワーク機器に対して起こしていきます。新たなモジュールを作成することもできます。

モジュールの例
モジュール名 機能
ios_config Cisco社のネットワーク機器にコンフィグを投入
bigip_config F5ネットワーク社のロードバランサにコンフィグを投入
vmware_guest VMware上で仮想サーバを作成、削除
ec2_instance Amazon EC2上でインスタンスを作成、削除
yum OSにパッケージをインストール、アンインストール
service/systemd OSのサービスを起動、停止、再起動
shell 任意のコマンドをLinux OS上で実行
ping 自動化の対象となるサーバに対して「Ansibleで自動化可能な状態であるか」をチェックする

・Playbook
AnsibleではPlaybookを書くことで、「何をするか」を指示できます。Playbookにモジュールを並べて「何をするか」を指示していきます。

モジュールを単体で呼び出すと、モジュールの挙動を確認できます。

# localhostにshellモジュールを実行
$ ansible localhost -m shell -a 'hostname' -u user01
127.0.0.1 | CHANGED | rc=0 >>
dev01						# ホスト名が表示される

インベントリ

Ansibleでは対象ノードを管理するために、インベントリという情報を使用します。先のコマンドでは、インベントリ中のlocalhostを使用するように指定していました。これはインベントリが定義されていない状態で唯一使用できる、自ホストを表すインベントリの情報になります。

インベントリファイルを以下のように作成します。

$ vi inventory						# 以下のように作成
[localhost]
127.0.0.1 ansible_connection=local

[dev]
dev01

[web]
web01
web02

[db]
db01
db02

# devグループに対してpingモジュールを実行
$ ansible dev -i ./inventory -m ping -o -u user01 -k
SSH password:
dev01 | SUCCESS => {"changed": false, "ping": "pong"}

ホストに与えられているansible_connectionオプションは、対象ノードへ接続する際の接続方法に関する情報を与えます。Ansibleが起動する管理ノードのローカルホスト上で処理を実行する際は、localと指定します。デフォルトはsshです。

デフォルトのインベントリファイルは /etc/ansible/hosts です。こちらに記載しておけば、コマンドラインでインベントリファイルを指定する必要はありません。

$ sudo cat inventory >> /etc/ansible/hosts
$ rm inventory

$ ansible dev -m ping -o -u user01 -k		# devグループに対してpingモジュールを実行

クレデンシャル

クレデンシャルはAnsibleが対象ノードへ接続する際に使用する認証情報です。インベントリファイルに記述したり、コマンドラインの引数として記述することで、認証情報を渡せます。

$ ansible dev -m ping -o -u user01 -k		# 接続ユーザを付与
SSH password:								# パスワードを入力

変数

モジュールには様々なパラメータを付与できますが、これらの値を変数化しておき、実行に上書きできます。

簡単なPlaybookを作成する

PlaybookはYAML形式で記述する必要があります。YAMLはインデント(段下げ)が意味を持つ形式なので、スペースの数に注意が必要です(タブは使用できない)。

・Playbookのサンプル

$ vi sample_playbook.yml						# playbookの作成
- hosts: localhost
  vars:
    sample_vars: software_design_2018
  tasks:
    - shell: uptime
      register: result

    - debug:
        msg: "{{ result.stdout }}"

    - debug:
        msg: "{{ sample_vars }}"

・Playbookの実行

$ ansible-playbook sample_playbook.yml -u user01 -k
SSH password:

PLAY [localhost] ****************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************
ok: [127.0.0.1]

TASK  ********************************************************************************************************************
changed: [127.0.0.1]

TASK [debug] ********************************************************************************************************************
ok: [127.0.0.1] => {
    "msg": " 16:15:18 up  2:24,  0 users,  load average: 0.52, 0.58, 0.59"
}

TASK [debug] ********************************************************************************************************************
ok: [127.0.0.1] => {
    "msg": "software_design_2018"
}

PLAY RECAP **********************************************************************************************************************
127.0.0.1                  : ok=4    changed=1    unreachable=0    failed=0

LAMP環境構築のPlaybook

$ vi ubuntu_lamp_playbook.yml
- name: LAMP環境構築
  hosts: "{{hostname}}"
  become: true
  vars:
    hostname: localhost
    database_name: wp
    db_username: wpadmin
    db_password: wpadmin
  tasks:
          - name: 必要パッケージのaptインストール
            apt:
              name: ['apache2', 'php7.2', 'php7.2-mysql', 'mariadb-server-10.1', 'mariadb-client-10.1', 'php7.2-mbstring', 'python-mysqldb', 'python3.6', 'ruby2.5']
              state: present

          - name: install ruby gems
            gem:
              name: "{{item}}"
              state: present
              user_install: no
              executable: /usr/bin/gem
            with_items:
                    - rake
                    - serverspec
                    - bundler
                    - highline

          - name: apache2設定ファイル編集
            lineinfile:
              dest: /etc/apache2/apache2.conf
              line: "{{item}}"
            with_items:
                    - 'AcceptFilter http none'
                    - 'AcceptFilter https none'

          - name: phpテストページの作成
            copy:
              src=phpinfo.php
              dest=/var/www/html/phpinfo.php

          - name: 各種サービスを再起動し、自動起動を有効化
            service:
              name: "{{item}}"
              state: started
              enabled: yes
            with_items:
                    - mysql
                    - apache2

          - name: MySQL DB作成
            mysql_db:
              name: "{{database_name}}"
              state: present

          - name: MySQLユーザの作成
            mysql_user:
              name: "{{db_username}}"
              host: "{{hostname}}"
              password: "{{db_password}}"
              priv: "{{database_name}}.*:ALL,GRANT"
              state: present

・Playbookの実行

# sudo実行時のパスワード入力プロンプトを表示
$ ansible-playbook ubuntu_lamp_playbook.yml -u user01 -k --ask-become-pass
SSH password:
SUDO password[defaults to SSH password]:	# sudo実行時のパスワードを入力

PLAY [LAMP環境構築] *****************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************
ok: [127.0.0.1]

TASK [必要パッケージのaptインストール] ********************************************************************************************************
ok: [127.0.0.1]

TASK [install ruby gems] ********************************************************************************************************
ok: [127.0.0.1] => (item=rake)
ok: [127.0.0.1] => (item=serverspec)
ok: [127.0.0.1] => (item=bundler)
ok: [127.0.0.1] => (item=highline)

TASK [apache2設定ファイル編集] **********************************************************************************************************
ok: [127.0.0.1] => (item=AcceptFilter http none)
ok: [127.0.0.1] => (item=AcceptFilter https none)

TASK [phpテストページの作成] *************************************************************************************************************
ok: [127.0.0.1]

TASK [各種サービスを再起動し、自動起動を有効化] *****************************************************************************************************
ok: [127.0.0.1] => (item=mysql)
ok: [127.0.0.1] => (item=apache2)

TASK [MySQL DB作成] ***************************************************************************************************************
ok: [127.0.0.1]

TASK [MySQLユーザの作成] **************************************************************************************************************
ok: [127.0.0.1]

PLAY RECAP **********************************************************************************************************************
127.0.0.1                  : ok=8    changed=0    unreachable=0    failed=0

・チェックスクリプト作成
ServerSpecで確認するのが良さそうですが、まだ使い方理解していないので、下記シェルスクリプトで確認

$ vi ubuntu_lamp_check.sh
#!/bin/sh

echo "### version ###"
apache2 -v;        echo
php -v;            echo
mysql --version;   echo
python --version
python3 --version; echo
ansible --version; echo
ruby -v;           echo
rspec -v;          echo
rake --version
bundle -v

echo "\n### auto start ###"
echo -n "apache2: " ; systemctl is-enabled apache2
echo -n "mysql:   " ; systemctl is-enabled mysql

echo "\n### service status ###"
service apache2 status; echo
sudo service mysql status

echo "\n### apache設定ファイル編集確認 ###"
tail -3 /etc/apache2/apache2.conf

echo "\n### WordPress所有者の確認(www-data) ###"
ls -ld /var/www/wordpress
echo "\n# ls -l /var/www/wordpress"
ls -l /var/www/wordpress

echo "\n### Webサーバ確認 ###"
echo http://localhost
echo http://localhost/phpinfo.php

・チェックスクリプト実行

$ ./ubuntu_lamp_check.sh
### version ###
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2018-10-10T18:59:25

PHP 7.2.15-0ubuntu0.18.04.2 (cli) (built: Mar 22 2019 17:05:14) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.15-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies

mysql  Ver 15.1 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Python 2.7.15rc1
Python 3.6.7

ansible 2.7.9
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/user01/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]

RSpec 3.8
  - rspec-core 3.8.0
  - rspec-expectations 3.8.2
  - rspec-mocks 3.8.0
  - rspec-support 3.8.0

rake, version 12.3.2
Bundler version 2.0.1

### auto start ###
apache2: enabled
mysql:   enabled

### service status ###
 * apache2 is running

 * /usr/bin/mysqladmin  Ver 9.1 Distrib 10.1.38-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.1.38-MariaDB-0ubuntu0.18.04.1
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 3 hours 3 min 40 sec

Threads: 1  Questions: 434  Slow queries: 0  Opens: 46  Flush tables: 3  Open tables: 14  Queries per second avg: 0.039

### apache設定ファイル編集確認 ###
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
AcceptFilter http none
AcceptFilter https none

### WordPress所有者の確認(www-data) ###
drwxr-xr-x 1 www-data www-data 4096 Apr 14 23:37 /var/www/wordpress

# ls -l /var/www/wordpress
total 180
-rw-r--r-- 1 www-data www-data   420 Dec  1  2017 index.php
-rw-r--r-- 1 www-data www-data 19935 Mar 13 15:03 license.txt
-rw-r--r-- 1 www-data www-data 10318 Mar 13 15:04 readme.html
-rw-r--r-- 1 www-data www-data  6919 Jan 12 15:41 wp-activate.php
drwxr-xr-x 1 www-data www-data  4096 Mar 13 15:00 wp-admin
-rw-r--r-- 1 www-data www-data   369 Dec  1  2017 wp-blog-header.php
-rw-r--r-- 1 www-data www-data  2283 Jan 21 10:34 wp-comments-post.php
-rw-r--r-- 1 www-data www-data  3807 Mar 13 15:04 wp-config-sample.php
-rw-r--r-- 1 www-data www-data  2689 Apr 14 23:37 wp-config.php
drwxr-xr-x 1 www-data www-data  4096 Apr 21 16:05 wp-content
-rw-r--r-- 1 www-data www-data  3847 Jan  9 17:37 wp-cron.php
drwxr-xr-x 1 www-data www-data  4096 Mar 13 15:03 wp-includes
-rw-r--r-- 1 www-data www-data  2502 Jan 16 14:29 wp-links-opml.php
-rw-r--r-- 1 www-data www-data  3306 Dec  1  2017 wp-load.php
-rw-r--r-- 1 www-data www-data 38883 Jan 12 15:41 wp-login.php
-rw-r--r-- 1 www-data www-data  8403 Dec  1  2017 wp-mail.php
-rw-r--r-- 1 www-data www-data 17947 Jan 30 20:01 wp-settings.php
-rw-r--r-- 1 www-data www-data 31085 Jan 17 01:51 wp-signup.php
-rw-r--r-- 1 www-data www-data  4764 Dec  1  2017 wp-trackback.php
-rw-r--r-- 1 www-data www-data  3068 Aug 17  2018 xmlrpc.php

### Webサーバ確認 ###
#http://localhost			# リンクをクリックして、apacheの画面が表示されることを確認
#http://localhost/phpinfo.php	# リンクをクリックして、php設定内容が表示されることを確認

WordPress設定のPlaybook

今まではWordPressのテーマ/プラグインのインストールはGUIから実施していましたが、WP-CLIコマンドを使用することで、コマンドでインストールできるようになりました!プラグインを一つづつインストールするのは結構大変だったので、だいぶ楽になりましたね。

$ vi ubuntu_wp_playbook.yml
- name: WordPress環境構築
  hosts: "{{hostname}}"
  become: true
  vars:
    hostname: localhost
    database_name: wp
    db_username: wpadmin
    db_password: wpadmin
    wordpress_ver: wordpress-5.1.1-ja.tar.gz
    wp_path: /var/www/wordpress
    wp_owner: www-data
    wp_group: www-data
  tasks:
          - name: WordPressのダウンロード
            get_url:
              url: "https://ja.wordpress.org/{{wordpress_ver}}"
              dest: "/tmp/{{wordpress_ver}}"

          - name: WordPressが展開済みなら実施しない
            stat:
              path: "{{wp_path}}"
            register: wordpress

          - name: WordPressの展開
            unarchive:
              src: "/tmp/{{wordpress_ver}}"
              dest: /var/www/
            when: not wordpress.stat.exists

          - name: WordPressの所有権をwww-dataに変更
            file:
              path: "{{wp_path}}"
              owner: "{{wp_owner}}"
              group: "{{wp_group}}"
              recurse: yes

          - name: WP-CLIコマンドのダウンロード
            get_url:
              url: https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
              dest: /usr/local/bin/wp
              owner: "{{wp_owner}}"
              group: "{{wp_group}}"
              mode: 0755

          - name: configファイル設定済みなら実施しない
            stat:
              path: "{{wp_path}}/wp-config.php"
            register: wpconfig

          - name: WordPressのconfigファイル設定(DB設定情報)
            become_user: "{{wp_owner}}"
            shell: wp core config --dbhost="{{hostname}}" --dbname="{{database_name}}"  --dbuser="{{db_username}}" --dbpass="{{db_password}}" --path="{{wp_path}}"
            when: not wpconfig.stat.exists

          - name: パイプラインを有効にする(/var/tmp 下にファイルを配置しないのでエラーを回避できる)
            lineinfile:
              dest: /etc/ansible/ansible.cfg
              regexp: pipelining
              line: pipelining = True

          - name: WordPressのインストール
            become_user: "{{wp_owner}}"
            shell: wp core install --url="{{hostname}}" --title="ボツワナに恵みの雨を" --admin_user=admin --admin_password=admin --admin_email="hamezawa3@gmail.com" --path="{{wp_path}}"
            when: not wpconfig.stat.exists

          - name: DocumentRootの変更
            lineinfile:
              dest: /etc/apache2/sites-available/000-default.conf
              regexp: DocumentRoot /var/www/html
              line: DocumentRoot /var/www/wordpress

          - name: apache2サービスの再起動
            service:
              name: apache2
              state: restarted

          - name: theme(habakiri)がインストール済みなら実施しない
            stat:
              path: "{{wp_path}}/wp-content/themes/habakiri"
            register: habakiri

          - name: WordPress Theme Install(habakiri)
            become_user: "{{wp_owner}}"
            shell: wp theme install habakiri --path="{{wp_path}}" --activate
            when: not habakiri.stat.exists

          - name: Theme(cocoon-master)のダウンロード
            get_url:
              url: https://wp-cocoon.com/download/791/
              dest: /tmp/cocoon-master-1.7.4.9.zip

          - name: Theme(cocoon子テーマ)のダウンロード
            get_url:
              url: https://wp-cocoon.com/download/726/
              dest: /tmp/cocoon-child-master-1.0.6.zip

          - name: Theme(cocoon-master)が展開済みなら実施しない
            stat:
              path: "{{wp_path}}/wp-content/themes/cocoon-master"
            register: cocoon

          - name: Theme(cocoon-master)の展開
            unarchive:
              src: /tmp/cocoon-master-1.7.4.9.zip
              dest: "{{wp_path}}/wp-content/themes/"
            when: not cocoon.stat.exists

          - name: Theme(cocoon子テーマ)が展開済みなら実施しない
            stat:
              path: "{{wp_path}}/wp-content/themes/cocoon-child-master"
            register: cocoonchild

          - name: Theme(cocoon子テーマ)の展開
            unarchive:
              src: /tmp/cocoon-child-master-1.0.6.zip
              dest: "{{wp_path}}/wp-content/themes/"
            when: not cocoonchild.stat.exists

          - name: themes配下の所有権をwww-dataに変更
            file:
              path: /var/www/html/wordpress/wp-content/themes
              owner: "{{wp_owner}}"
              group: "{{wp_group}}"
              recurse: yes

          - name: Theme(cocoon) Activate
            become_user: "{{wp_owner}}"
            shell: wp theme activate cocoon-master --path="{{wp_path}}"

          - name: plugin install
            become_user: "{{wp_owner}}"
            shell: wp plugin install "{{item}}" --path="{{wp_path}}" --activate
            with_items:
                    - all-in-one-seo-pack
                    - backwpup
                    - broken-link-checker
                    - contact-form-7
                    - favicon-rotator
                    - gmail-smtp
                    - google-analytics-dashboard-for-wp
                    - google-sitemap-generator
                    - ml-slider
                    - pixabay-images
                    - polylang
                    - quick-adsense-reloaded
                    - syntaxhighlighter
                    - table-of-contents-plus
                    - wordpress-23-related-posts-plugin
                    - wordpress-importer
                    - wordpress-popular-posts
                    - wpcore
                    - wp-multibyte-patch
                    - wp-scroll-depth
                    - wp-social-bookmarking-light

・Playbook実行

# 2回目なので、テーマが既にあるものなどはスキップされています。
$ ansible-playbook ubuntu_wp_playbook.yml -u user01 -k --ask-become-pass
SSH password:
SUDO password[defaults to SSH password]:

PLAY [WordPress環境構築] ************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************
ok: [127.0.0.1]

TASK [WordPressのダウンロード] *********************************************************************************************************
ok: [127.0.0.1]

TASK [WordPressが展開済みなら実施しない] ****************************************************************************************************
ok: [127.0.0.1]

TASK [WordPressの展開] *************************************************************************************************************
skipping: [127.0.0.1]

TASK [WordPressの所有権をwww-dataに変更] ************************************************************************************************
ok: [127.0.0.1]

TASK [WP-CLIコマンドのダウンロード] ********************************************************************************************************
ok: [127.0.0.1]

TASK [configファイル設定済みなら実施しない] ****************************************************************************************************
ok: [127.0.0.1]

TASK [WordPressのconfigファイル設定(DB設定情報)] *******************************************************************************************
skipping: [127.0.0.1]

TASK [パイプラインを有効にする(/var/tmp 下にファイルを配置しないのでエラーを回避できる)] ***************************************************************************
ok: [127.0.0.1]

TASK [WordPressのインストール] *********************************************************************************************************
skipping: [127.0.0.1]

TASK [DocumentRootの変更] **********************************************************************************************************
changed: [127.0.0.1]

TASK [apache2サービスの再起動] **********************************************************************************************************
changed: [127.0.0.1]

TASK [theme(habakiri)がインストール済みなら実施しない] ******************************************************************************************
ok: [127.0.0.1]

TASK [WordPress Theme Install(habakiri)] ****************************************************************************************
skipping: [127.0.0.1]

TASK [Theme(cocoon-master)のダウンロード] **********************************************************************************************
ok: [127.0.0.1]

TASK [Theme(cocoon子テーマ)のダウンロード] *************************************************************************************************
ok: [127.0.0.1]

TASK [Theme(cocoon-master)が展開済みなら実施しない] *****************************************************************************************
ok: [127.0.0.1]

TASK [Theme(cocoon-master)の展開] **************************************************************************************************
skipping: [127.0.0.1]

TASK [Theme(cocoon子テーマ)が展開済みなら実施しない] ********************************************************************************************
ok: [127.0.0.1]

TASK [Theme(cocoon子テーマ)の展開] *****************************************************************************************************
skipping: [127.0.0.1]

TASK [themes配下の所有権をwww-dataに変更] *************************************************************************************************
changed: [127.0.0.1]

TASK [Theme(cocoon) Activate] ***************************************************************************************************
changed: [127.0.0.1]

TASK [plugin install] ***********************************************************************************************************
changed: [127.0.0.1] => (item=all-in-one-seo-pack)
changed: [127.0.0.1] => (item=backwpup)
changed: [127.0.0.1] => (item=broken-link-checker)
changed: [127.0.0.1] => (item=contact-form-7)
changed: [127.0.0.1] => (item=favicon-rotator)
changed: [127.0.0.1] => (item=gmail-smtp)
changed: [127.0.0.1] => (item=google-analytics-dashboard-for-wp)
changed: [127.0.0.1] => (item=google-sitemap-generator)
changed: [127.0.0.1] => (item=ml-slider)
changed: [127.0.0.1] => (item=pixabay-images)
changed: [127.0.0.1] => (item=polylang)
changed: [127.0.0.1] => (item=quick-adsense-reloaded)
changed: [127.0.0.1] => (item=syntaxhighlighter)
changed: [127.0.0.1] => (item=table-of-contents-plus)
changed: [127.0.0.1] => (item=wordpress-23-related-posts-plugin)
changed: [127.0.0.1] => (item=wordpress-importer)
changed: [127.0.0.1] => (item=wordpress-popular-posts)
changed: [127.0.0.1] => (item=wpcore)
changed: [127.0.0.1] => (item=wp-multibyte-patch)
changed: [127.0.0.1] => (item=wp-scroll-depth)
changed: [127.0.0.1] => (item=wp-social-bookmarking-light)

PLAY RECAP **********************************************************************************************************************
127.0.0.1                  : ok=17   changed=5    unreachable=0    failed=0

・チェックスクリプト作成

$ vi ubuntu_wp_check.sh
#!/bin/sh

echo "\n### wp --info ###"
wp --info
echo "\n### theme status ###"
wp theme status --path=/var/www/wordpress
wp theme list --path=/var/www/wordpress
echo "\n### plugin status ###"
wp plugin status --path=/var/www/wordpress
wp plugin list --path=/var/www/wordpress

echo "\n### Webサーバ確認 ###"
echo http://localhost

・チェックスクリプト実行

$ ./ubuntu_wp_check.sh

### wp --info ###
OS:     Linux 4.4.0-17134-Microsoft #706-Microsoft Mon Apr 01 18:13:00 PST 2019 x86_64
Shell:  /bin/bash
PHP binary:     /usr/bin/php7.2
PHP version:    7.2.15-0ubuntu0.18.04.2
php.ini used:   /etc/php/7.2/cli/php.ini
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       /home/user01/ansible
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.1.0

### theme status ###
6 installed themes:
  I cocoon-child-master 1.0.6
 UA cocoon-master       1.7.4.9
  I habakiri            2.5.2
 UI twentynineteen      1.3
 UI twentyseventeen     2.1
 UI twentysixteen       1.9

Legend: I = Inactive, A = Active, U = Update Available
+---------------------+----------+-----------+---------+
| name                | status   | update    | version |
+---------------------+----------+-----------+---------+
| cocoon-child-master | inactive | none      | 1.0.6   |
| cocoon-master       | active   | available | 1.7.4.9 |
| habakiri            | inactive | none      | 2.5.2   |
| twentynineteen      | inactive | available | 1.3     |
| twentyseventeen     | inactive | available | 2.1     |
| twentysixteen       | inactive | available | 1.9     |
+---------------------+----------+-----------+---------+

### plugin status ###
22 installed plugins:
  A quick-adsense-reloaded            1.8.5
  I akismet                           4.1.1
 UA all-in-one-seo-pack               2.12
 UA backwpup                          3.6.8
  A broken-link-checker               1.11.8
  A contact-form-7                    5.1.1
  A favicon-rotator                   1.2.7
  A gmail-smtp                        1.1.8
 UA google-analytics-dashboard-for-wp 5.3.7
  A google-sitemap-generator          4.1.0
 UA ml-slider                         3.12.1
  A pixabay-images                    3.4
  A polylang                          2.5.3
  A syntaxhighlighter                 3.5.0
  A table-of-contents-plus            1601
  A wordpress-importer                0.6.4
  A wordpress-popular-posts           4.2.2
  A wordpress-23-related-posts-plugin 3.6.4
  A wpcore                            1.9.0
  A wp-multibyte-patch                2.8.2
  A wp-scroll-depth                   1.5.1
  A wp-social-bookmarking-light       2.0.7

Legend: A = Active, I = Inactive, U = Update Available
+-----------------------------------+----------+-----------+---------+
| name                              | status   | update    | version |
+-----------------------------------+----------+-----------+---------+
| quick-adsense-reloaded            | active   | none      | 1.8.5   |
| akismet                           | inactive | none      | 4.1.1   |
| all-in-one-seo-pack               | active   | available | 2.12    |
| backwpup                          | active   | available | 3.6.8   |
| broken-link-checker               | active   | none      | 1.11.8  |
| contact-form-7                    | active   | none      | 5.1.1   |
| favicon-rotator                   | active   | none      | 1.2.7   |
| gmail-smtp                        | active   | none      | 1.1.8   |
| google-analytics-dashboard-for-wp | active   | available | 5.3.7   |
| google-sitemap-generator          | active   | none      | 4.1.0   |
| ml-slider                         | active   | available | 3.12.1  |
| pixabay-images                    | active   | none      | 3.4     |
| polylang                          | active   | none      | 2.5.3   |
| syntaxhighlighter                 | active   | none      | 3.5.0   |
| table-of-contents-plus            | active   | none      | 1601    |
| wordpress-importer                | active   | none      | 0.6.4   |
| wordpress-popular-posts           | active   | none      | 4.2.2   |
| wordpress-23-related-posts-plugin | active   | none      | 3.6.4   |
| wpcore                            | active   | none      | 1.9.0   |
| wp-multibyte-patch                | active   | none      | 2.8.2   |
| wp-scroll-depth                   | active   | none      | 1.5.1   |
| wp-social-bookmarking-light       | active   | none      | 2.0.7   |
+-----------------------------------+----------+-----------+---------+

### Webサーバ確認 ###
#http://localhost			# リンクをクリックして、WordPressの画面が表示されることを確認
ヒデをフォローする
☂☂☂ボツワナに恵みの雨を☂☂☂
タイトルとURLをコピーしました