weareinteractive.pm2
Ansible weareinteractive.pm2 ロール
weareinteractive.pm2
は Ansible ロールで、以下の機能があります:
- pm2のインストール
- JSONアプリの管理
- サービスの設定
インストール
ansible-galaxy
を使う場合:
$ ansible-galaxy install weareinteractive.pm2
requirements.yml
を使う場合:
- src: weareinteractive.pm2
git
を使う場合:
$ git clone https://github.com/weareinteractive/ansible-pm2.git weareinteractive.pm2
依存関係
- Ansible >= 2.4
- インストール済みのNode.js(例:weareinteractive.nodejs)
注意:
Ansible Galaxyは現在、組織をサポートしています。このロールは
franklinkim.pm2
からweareinteractive.pm2
に移行しました!
変数
このロールのすべてのデフォルト変数のリストは defaults/main.yml
にもあります。
---
# pm2_cmds:
# - run: sendSignal # pm2 コマンド名
# args: SIGUSR2 my-app # オプションの引数
# path: /var/www/myapp # オプションの作業ディレクトリ
# ignore_errors: yes # オプションです。pm2エラーで失敗しない
# env: # オプションの環境設定
# NODE_ENV: production
# pm2_apps:
# - run: pm2.json # app.jsのような.jsファイルも実行できます
# cmd: start # アプリで実行するオプションのコマンド
# args: --name console_error # アプリに渡すオプションの引数
# path: /var/www/myapp # オプションの作業ディレクトリ
# env: # オプションの環境設定
# NODE_ENV: production
# pm2_post_cmds:
# - run: save # pm2 コマンド名
# args: # オプションの引数
# path: /var/www/myapp # オプションの作業ディレクトリ
# ignore_errors: yes # オプションです。pm2エラーで失敗しない
# env: # オプションの環境設定
# NODE_ENV: production
#
# 実行するコマンドのリスト
# 注意:これらはアプリを管理する前に実行されます
pm2_cmds:
# 注意:すべてのアプリを初めに削除して、設定されたアプリだけが存在します
- run: delete all
# コマンドを実行するデフォルトの環境
pm2_cmds_default_env: {}
# 実行する後処理コマンドのリスト
# 注意:これらはアプリを管理した後に実行されます
pm2_post_cmds: []
# 後処理コマンドを実行するデフォルトの環境
pm2_post_cmds_default_env: {}
# JSONアプリの宣言のパスのリスト
pm2_apps: []
# アプリを実行するデフォルトの環境
pm2_apps_default_env: {}
# アプリで実行するデフォルトのコマンド
pm2_apps_default_cmd: start
# 毎回の実行時に初めにすべてを削除
pm2_apps_delete_all: yes
# upstartをインストール
pm2_upstart: yes
# ブート時に開始
pm2_service_enabled: yes
# スタートアップシステム用のサービス名
pm2_service_name: pm2-init.sh
# 現在の状態: started, stopped
pm2_service_state: started
# バージョン
pm2_version:
# pm2コマンドを実行するユーザー
pm2_user: "{{ ansible_user_id }}"
# スタートアッププラットフォーム
pm2_platform:
ハンドラー
これらは handlers/main.yml
で定義されたハンドラーです。
---
- name: pm2を再起動
service:
name: "{{ pm2_service_name }}"
state: restarted
when: pm2_upstart and pm2_service_state != 'stopped'
- name: pm2を再読み込み
service:
name: "{{ pm2_service_name }}"
state: reloaded
when: pm2_upstart and pm2_service_state != 'stopped'
- name: pm2を更新
shell: pm2 update
when: pm2_upstart and pm2_service_state != 'stopped'
使用方法
以下は例のプレイブックです:
---
- hosts: all
become: yes
roles:
- weareinteractive.pm2
vars:
# Vagrantの場合
#pm2_upstart: yes
#pm2_user: vagrant
#pm2_service_name: pm2-vagrant
# Dockerの場合
pm2_user: root
pm2_upstart: no # docker内でサービスサポートなし
# 共通設定
pm2_cmds:
- run: delete
args: console_error
ignore_errors: yes
pm2_apps:
- run: apps.json
path: "/etc/ansible/roles/weareinteractive.pm2/tests"
cmd: startOrGracefulReload
- run: console_error.js
args: --name console_error
path: "/etc/ansible/roles/weareinteractive.pm2/tests/apps"
cmd: start
env:
NODE_ENV: dev
pm2_apps_default_env:
NODE_ENV: production
テスト
$ git clone https://github.com/weareinteractive/ansible-pm2.git
$ cd ansible-pm2
$ make test
貢献
正式なスタイルガイドはありませんが、既存のコーディングスタイルを守ってください。新しい機能や変更された機能にはユニットテストと例を追加してください。
- フォークします
- フィーチャーブランチを作成 (
git checkout -b my-new-feature
) - 変更をコミットします (
git commit -am 'Add some feature'
) - ブランチにプッシュします (
git push origin my-new-feature
) - 新しいプルリクエストを作成します
注意:README.md
ファイルを更新するには、ansible-role
をインストールして実行してください:
$ gem install ansible-role
$ ansible-role docgen
ライセンス
著作権 (c) We Are Interactive MITライセンスのもとで。