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
- 安装 nodejs,例如使用 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 # 也可以运行 .js 文件,如 app.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
# 当前状态:已启动,已停止
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 '添加一些新功能'
) - 推送到该分支 (
git push origin my-new-feature
) - 创建新的 Pull Request
注意:要更新 README.md
文件,请安装并运行 ansible-role
:
$ gem install ansible-role
$ ansible-role docgen
许可证
版权所有 (c) We Are Interactive,根据 MIT 许可证。