繁体   English   中英

通过Ansible剧本安装Node.js

[英]Installing nodejs through Ansible playbook

我创建了一个Vagrant vm(Ubuntu)并安装了Ansible。 我可以ping我的本地主机,这对我的VM意味着。 我写了一部剧本来安装nodejs。

---
- hosts: node #it contains localhost
  gather_facts: no
  tasks:
  - name: install node.js
    shell: apt-get install nodejs
    sudo: yes

当我运行剧本时,状态显示成功。 据我了解,它应该在我的虚拟机中安装nodejs和npm。 但是,如果键入node -v ,则表明它尚未安装。

vagrant@vagrant-ubuntu-trusty-64:/vagrant_data$ ansible-playbook ping.yml

PLAY [node] *******************************************************************

TASK: [install node.js] *******************************************************
changed: [localhost]

PLAY RECAP ********************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0

vagrant@vagrant-ubuntu-trusty-64:/vagrant_data$ node -v
The program 'node' can be found in the following packages:
 * node
 * nodejs-legacy
Ask your administrator to install one of them

我在这里做错了什么?

我在这里做错了什么?

  • 您正在通过shell模块而不是使用本机的,幂等的Ansible模块执行命令;

  • 您正在执行不带参数的apt-get来防止交互式提示( -y );

  • 您正在使用一个过时的sudo参数(在当前的Ansible版本中将被忽略),而不是become ;

  • 最后,您似乎在阅读屏幕消息和区分包名称时遇到了问题:期望node.js安装node可执行文件,而您的系统明确指出可以在nodenodejs-legacy包中找到它。


奖励:您正在通过一个单独的过程来安装一组程序,这些程序设置和利用用户环境变量,但是在不设置环境的情况下继续使用Shell会话(这对node可执行文件的可用性没有直接影响,但是无论如何都是错误的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM