AnsibleでGhostアプリをデプロイ

VPSにGhostを, Ansibleでデプロイしている話.

サーバー側で使っているソフトウェアは, supervisor, nodeです.

GitHubでソース管理

CSS, HTMLを少し弄りたいので, Ghostをforkし, それを編集してデプロイしています.(https://github.com/satoshun/ghost)

このリポジトリを, デプロイしていきます.

デプロイ時の手順

サーバで以下のタスクを行います.

Playbookは以下になります.

---
- hosts: all
  user: "{{ user }}"
  tasks:
    - include: update_source.yml
    - include: update_package.yml
    - include: restart.yml

各タスクについて説明していきます.

Git pullする

Gitモジュールがあるので, それを使います.

- name: Update Git repository
  git: repo=<git url> dest=<path to project>

npm moduleの更新

npmモジュールがあるので, それを使います.

- name: Update npm module
  npm: path=<path to project>

gruntの実行

commandモジュールを使います.

- name: Run grunt init
  command: "grunt init chdir=<path to project>"

- name: Run grunt prod
  command: "grunt prod chdir=<path to project>"

Ghost再起動

supervisorで管理しているので, supervisorctlモジュールを使い再起動を行います.

- name: Restart Ghost
  sudo: yes
  supervisorctl: name=ghost state=restarted

Written by