【发布时间】:2015-02-06 22:23:54
【问题描述】:
尝试在 Ansible 节点上启动 forever 进程时,我遇到了 Anisble 挂起的问题。我有一个非常简单的 API 服务器,我正在 vagrant 中创建并使用 Ansible 进行配置,如下所示:
---
- hosts: all
sudo: yes
roles:
- Stouts.nodejs
- Stouts.mongodb
tasks:
- name: Install Make Dependencies
apt: name={{ item }} state=present
with_items:
- gcc
- make
- build-essential
- name: Run NPM Update
shell: /usr/bin/npm update
- name: Create MongoDB Database Folder
shell: /bin/mkdir -p /data/db
notify:
- mongodb restart
- name: Generate Dummy Data
command: /usr/bin/node /vagrant/dataGen.js
- name: "Install forever (to run Node.js app)."
npm: name=forever global=yes state=latest
- name: "Check list of Node.js apps running."
command: /usr/bin/forever list
register: forever_list
changed_when: false
- name: "Start example Node.js app."
command: /usr/bin/forever start /vagrant/server.js
when: "forever_list.stdout.find('/vagrant/server.js') == -1"
但即使 Ansible 表现得好像一切都很好,但也不会永远启动进程。当我更改几行以删除 when: 语句并强制它运行时,Ansible 只是动手,可能会运行永远的进程(我想永远),但不会将 VM 启动到我可以与之交互的地方。
【问题讨论】:
-
您是否尝试在虚拟机中手动运行它?只是想知道这是
ansible还是forever本身的问题 -
你的问题错过了变量
forever_list.stdout的输出有用 -
我会输入
- debug: var= forever_list.stdout来检查