Contents
Ansibleとは
Ansibleはインフラ業務を自動化できるツールです。今回は、Ansibleを使用してLAMP環境構築及びWordPressのテーマ及びプラグインのインストールまでをおこなっていきます。
対象 | 操作の一例 |
---|---|
ネットワーク機器 | インターフェース設定、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
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.9 :
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で自動化可能な状態であるか」をチェック |
debug | 任意のメッセージを表示したり、変数に代入された値を確認 |
・Playbook
AnsibleではPlaybookを書くことで、「何をするか」を指示できます。Playbookにモジュールを並べて「何をするか」を指示していきます。
モジュールを単体で呼び出すと、モジュールの挙動を確認できます。
# localhostにpingモジュールを実行 $ ansible localhost -m ping -o -u user01 -k SSH password: 127.0.0.1 | SUCCESS => {"changed": false, "ping": "pong"} # pingモジュールがpongと応答を返すことを確認
インベントリ
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: "Hello Ansible!!" 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": " 12:38:13 up 5 min, 0 users, load average: 0.52, 0.58, 0.59" } TASK [debug] ******************************************************************************************************************** ok: [127.0.0.1] => { "msg": "Hello Ansible!!" } PLAY RECAP ********************************************************************************************************************** 127.0.0.1 : ok=4 changed=1 unreachable=0 failed=0
YAMLの書式が裏覚えな人は、ドットインストールで確認できます。
YAML入門 (全11回:無料)
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="XXXX@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の画面が表示されることを確認
WebProgramming入門
- IT起業家のスピーチ(IT entrepreneur speech)
- 01a. 開発環境構築(Windows8.1+VMware Player+CentOS)
- 01b. 開発環境構築(Windows 10+Ubuntu)
- 01c. 開発環境構築(Windows 10+Ubuntu18.04+Ansible)
- 01d. 開発環境構築(WSL2+Ubuntu18.04+Docker)(作成中)
- 02a. AWS環境構築(CentOS6)
- 02b. AWS環境構築(CentOS6+LAMP環境+WordPress)
- 02c. AWS環境構築(CentOS7+Django)
- 02z. さくらのクラウド環境構築(CentOS7+Ansible+Serverspec)
- 03a. WordPress制作入門
- 03b. WordPress制作入門
- 04. トラブルシューティング
- 11. HTML/CSS入門
- 11a. ProgateでHTML&CSS初級
- 11b. ProgateでHTML&CSS中級(ランディングページ)
- 11c. ProgateでHTML&CSS上級(レスポンシブデザイン)
- 11d. ProgateでSass(CSSをより便利に効果的に操作する言語)
- 11e. ドットインストールでBootstrap4入門(CSSフレームワーク)
- 12. MySQL入門
- 12a. ProgateでSQL Ⅰ~Ⅲ
- 12b. ドットインストールでmongoDB入門
- 13. PHP入門
- 14. ProgateでRubyⅠ~Ⅴ
- 15a. ProgateでRuby on RailsⅠ~Ⅴ
- 15b. ProgateでRuby on RailsⅥ~Ⅷ
- 15c. ProgateでRuby on RailsⅨ~Ⅺ
- 16. ProgateでPythonⅠ~Ⅴ
- 17. paizaラーニングでFlask入門
- 18a. Django入門1(Djangoの基本の理解)
- 18b. Django入門2(Djangoの動作の理解)
- 18c. Django入門3(Djangoのテンプレートとフォームを理解)
- 18d. Django入門4(お勧め店を投稿できるランチマップアプリの作成)
- 18e. Django入門5(Djangoでユーザー管理)
- 19a. ProgateでjQuery初級編
- 19b. ProgateでjQuery中級編
- 19c. ProgateでjQuery上級編
- 20a. ProgateでJavascript(ES6)Ⅰ~Ⅲ
- 20b. ProgateでJavaScript Ⅳ~Ⅴ
- 20c. ProgateでJavaScript Ⅵ~Ⅶ
- 8. ICTレクチャラへの講習