使用nvm的Ansible安装节点

时间:2018-12-03 15:08:13

标签: node.js ansible nvm

我正在寻找一种通过ansible和nvm安装给定版本的节点的方法,nvm的安装按预期工作,因为如果我与root用户连接,则可以执行命令nvm install 8.11.3,但是相同的命令不适用于Ansible,我不明白为什么。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.Data.SqlClient" Version="4.5.1" />
  </ItemGroup>

</Project>

错误日志

---
- name: Install nvm
  git: repo=https://github.com/creationix/nvm.git dest=~/.nvm version=v0.33.11
  tags: nvm

- name: Source nvm in ~/.{{ item }}
  lineinfile: >
      dest=~/.{{ item }}
      line="source ~/.nvm/nvm.sh"
      create=yes
  tags: nvm
  with_items:
    - bashrc
    - profile

- name: Install node and set version
  become: yes
  become_user: root
  shell: nvm install 8.11.3
...

3 个答案:

答案 0 :(得分:1)

我认为您需要的输出中的线索是:

  

“ / bin / sh:1:nvm:找不到”

要运行命令而不包含该命令的完整路径(即nvm而不是/the/dir/nvm/is/installed/in/nvm),则包含该命令的目录必须位于外壳程序的$ PATH环境变量中运行命令。

在这种情况下,与运行交互式命令的外壳相比,Ansible生成的外壳似乎不存在。更改:

- name: Install node and set version
  become: yes
  become_user: root
  shell: nvm install 8.11.3

- name: Install node and set version
  become: yes
  become_user: root
  shell: /full/path/to/nvm install 8.11.3

如果您不知道要用什么替换'/ full / path / to',请尝试以下任一方法:

which nvm

find / -name nvm

答案 1 :(得分:0)

没关系,这是有效的配置

- name: Install node and set version
  become: yes
  become_user: root
  shell: "source /root/.nvm/nvm.sh && nvm install 8.11.3" 
  args:
    executable: /bin/bash

答案 2 :(得分:0)

我只会在这里发帖,因为有数百个这样的帖子。


- name: Install node
    become: true
    become_user: root
    shell: "source /root/.nvm/nvm.sh && nvm install {{ personal_node_version }} && nvm alias default {{ personal_node_version }}"                                 
    args:
      executable: /bin/bash

为我工作。

相关问题