在尝试forever在Ansible节点上启动进程时,我遇到了Anisble挂起的问题.我有一个非常简单的API服务器,我正在使用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"
Run Code Online (Sandbox Code Playgroud)
但即使Ansible表现得像一切都很好,也没有永远的过程开始.当我改变了几行删除when:的语句,并迫使它运行,Ansible只是手中,可能会在运行过程中永远(永远的,我相信),但不启动虚拟机,我可以与它进行交互.
小智 0
正如评论中所述,变量内容需要包含在您的问题中,以便任何人提供正确的答案,但为了克服这个问题,我建议您可以这样做:
- name: "Check list of Node.js apps running."
command: /usr/bin/forever list|grep '/vagrant/server.js'|wc -l
register: forever_list
changed_when: false
- name: "Start example Node.js app."
command: /usr/bin/forever start /vagrant/server.js
when: forever_list.stdout == "0"
Run Code Online (Sandbox Code Playgroud)
如果 JS 应用程序已经在运行,这应该会阻止 ansible 启动它。
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |