代码之家  ›  专栏  ›  技术社区  ›  eth3rnit3

使用nvm的Ansible安装节点

  •  0
  • eth3rnit3  · 技术社区  · 7 年前

    我正在寻找一种方法,通过ansible和nvm安装给定版本的node,nvm的安装工作正常,因为如果我与root用户连接,我可以执行命令nvm install 8.11.3,但这个命令不适用于ansible,我不明白为什么。

    ---
    - 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
    ...
    

    错误日志

    TASK [node : Install node and set version] *************************************************************************************
        fatal: [51.15.128.164]: FAILED! => {"changed": true, "cmd": "nvm install 8.11.3", "delta": "0:00:00.005883", "end": "2018-12-03 15:05:10.394433", "msg": "non-zero return code", "rc": 127, "start": "2018-12-03 15:05:10.388550", "stderr": "/bin/sh: 1: nvm: not found", "stderr_lines": ["/bin/sh: 1: nvm: not found"], "stdout": "", "stdout_lines": []}
            to retry, use: --limit .../.../ansible/stater-debian/playbook.retry
    
    2 回复  |  直到 7 年前
        1
  •  10
  •   eth3rnit3    7 年前

    没关系,这是有效的配置

    - 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
  •  1
  •   clockworknet    7 年前

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

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

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

    - 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
    
        3
  •  0
  •   Taavi Ansper    5 年前

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

    
    - 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
    

    为我工作。

    推荐文章