weareinteractive.pm2

Ansible weareinteractive.pm2 角色

构建状态 Galaxy GitHub 标签 GitHub 星星

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 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

贡献

在没有正式风格指南的情况下,请注意保持现有的编码风格。为任何新的或更改的功能添加单元测试和示例。

  1. 派生一个副本
  2. 创建你的特性分支 (git checkout -b my-new-feature)
  3. 提交你的更改 (git commit -am '添加一些新功能')
  4. 推送到该分支 (git push origin my-new-feature)
  5. 创建新的 Pull Request

注意:要更新 README.md 文件,请安装并运行 ansible-role:

$ gem install ansible-role
$ ansible-role docgen

许可证

版权所有 (c) We Are Interactive,根据 MIT 许可证。

关于项目

Installs pm2 and manages apps

安装
ansible-galaxy install weareinteractive.pm2
许可证
mit
下载
30.6k