ブログ移住計画その5~wp-cliでWordPressをインストール~
前回までは普通に、WordPressのファイルを解凍して、それを置くだけだったのですが、これをするとDBの設定とかはGUI上で設定しないといけないので面倒。。。
なので、これを解決するために、wp-cli(WordPressのコマンドラインツール)経由でインストールするように、Ansibleを書き換えます。
設定後のディレクトリ構成はこんな感じ
# tree -F
.
├── group_vars/
│ ├── all.yml
│ └── mysql.yml
├── inventory/
│ └── hosts
├── playbook.yml
├── roles/
│ ├── httpd/
│ │ ├── handlers/
│ │ │ └── main.yml
│ │ ├── tasks/
│ │ │ └── main.yml
│ │ └── templates/
│ ├── mysql/
│ │ ├── handlers/
│ │ │ └── main.yml
│ │ └── tasks/
│ │ └── main.yml
│ ├── php/
│ │ └── tasks/
│ │ └── main.yml
│ ├── wordpress/
│ │ ├── tasks/
│ │ │ └── main.yml
│ │ └── templates/
│ │ └── index.php.j2
│ ├── wordpress.backup/
│ │ ├── tasks/
│ │ │ ├── main.yml
│ │ │ └── main.yml.backup
│ │ └── templates/
│ │ └── wp-config.php.j2
│ └── wp-cli/
│ ├── tasks/
│ │ └── main.yml
│ └── templates/
│ └── wp-config.php.j2
└── templates/
相変わらず無駄なディレクトリがありますが、そこはご愛嬌ということで。。。
Playbookの書き換え
まず、Playbookはwordpressの代わりに、wp-cliロールを実行するように設定
- hosts: mysql become: yes become_user: root tasks: roles: - mysql - hosts: wp become: yes become_user: root tasks: roles: - httpd - php - wp-cli
繰り返しの項目を変数化
設定をいじっていると、同じ設定を加える箇所がいくつか出てきたので、その部分を変数化
# group_vars/all.yml db: host: localhost # DB側ホスト name: "hogehoge" #DB名 user: "foobar" #DBユーザ名 password: wordpress: "hogehoge" #WordPress用DBのパスワード root: "foobar" #DBのルートユーザパスワード httpd: document_root_directory: /var/www/html #wordpressのディレクトリ wordpress: name: wordpress title: "blog title" locale: "ja" admin: name: "nyaonyao" #WordPressのAdminユーザ名 password: "passw@rd" #WordPressのAdmin用パスワード mail: "huga@gmail.com" wp_cli_path: /usr/local/bin/wp #wp-cliのパス # パスワードとかユーザー名等その時々によって設定は変更 # 適当な名前にしないように
wp-cliでのインストール
# roles/wp-cli/tasks/main.yml #最新版のwp-cliをbin/wpに入れる - name: get wp-cli get_url: url: "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" dest: /usr/local/bin/wp mode: 0755 #WordPressをインストールする先のディレクトリを作成 - name: create directory file: dest={{ httpd.document_root_directory }}/{{ wordpress.name }} owner=apache group=apache state=directory mode=0755 # WordPressのファイルをダウンロード - name: install wordpress core shell: | sudo -u apache {{ wp_cli_path }} core download \ --locale={{ wordpress.locale }} args: chdir: "{{ httpd.document_root_directory }}/{{ wordpress.name }}" # 変数で指定したディレクトリにダウンロードさせている # DB情報の設定ファイルをWordPressディレクトリに配布 # wp core configでも設定できるみたいだけど、sudo実行するとパス関係でややこしくなるので、事前に設定したphpを配布するほうが楽かも # 外からいじられるのはかなり危ないのでパーミッションは400 - name: setup wp-config.php template: src: wp-config.php.j2 dest: "{{ httpd.document_root_directory }}/{{ wordpress.name }}/wp-config.php" owner: apache group: apache mode: 0400 # WordPressをインストール - name: install wordpress shell: | sudo -u apache {{ wp_cli_path }} core install \ --title={{ wordpress.title }} \ --admin_user={{ wordpress.admin.name }} \ --admin_password={{ wordpress.admin.password }} \ --admin_email={{ wordpress.admin.mail }}\ --url="http://{{ inventory_hostname }}/{{ wordpress.name }}" args: chdir: "{{ httpd.document_root_directory }}/{{ wordpress.name }}"
ちなみに事前にDB設定を記載しているwp-config.php.j2ファイルをroles/wp-cli/templatesに入れておきます。
これを実行します。
ansible-playbook -i inventory/hosts playbook.yml
こうすると、設定なしでそのままWordPressにログインして日記が書けるはず。
そろそろ本番にデプロイしたいのですが、いろいろ他にも手を出しているので、月末までにはあげたい。。。