通过 Ansible playbook 安装 nodejs

Nas*_*Ohi -2 ubuntu node.js ansible

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

---
- hosts: node #it contains localhost
  gather_facts: no
  tasks:
  - name: install node.js
    shell: apt-get install nodejs
    sudo: yes
Run Code Online (Sandbox Code Playgroud)

当我运行剧本时,状态显示成功。据我了解,它应该在我的虚拟机中安装 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
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

tec*_*raf 5

我在这里做错了什么?

  • 您正在通过shell模块执行命令,而不是使用原生的、幂等的Ansible 模块

  • 您在apt-get不带参数的情况下执行以防止出现交互式提示 ( -y);

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

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


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