Ansible从源二进制文件安装npm包名称(.tgz)

时间:2017-06-15 04:03:44

标签: node.js ansible

我需要使用ansible安装npm。我在提到Ansible 2.3:http://docs.ansible.com/ansible/npm_module.html

我使用npm pack coffee-script打包了npm模块并拥有coffee-script.tgz。现在我想使用该文件使用npm安装它。

我能找到的最接近的是:

- name: Install "coffee-script" node.js package from custom registry.
  npm:
    name: coffee-script
    registry: 'http://registry.mysite.com'

但是如何从本地文件安装,因为我的服务器没有互联网连接,因此我需要从二进制文件打包和安装。

我想做这样的事情

- name: Install "coffee-script" node.js package from custom registry.
      npm:
        name: coffee-script
        global : yes
        source: '/usr/local/coffee-script.tgz'

3 个答案:

答案 0 :(得分:0)

请使用此:

- name: Install "coffee-script" node.js package from custom registry.
  npm: 
    name: /usr/local/coffee-script.tgz
    path: /app/location
    global: yes 

答案 1 :(得分:0)

我最终使用npmbox来完美地解决了我的问题。

从我的机器

运行命令npmbox coffee-script,它给我coffee-script.npmbox

然后我粘贴到我的离线服务器并运行npmunbox -g coffee-script.npmbox

但您也需要在离线服务器上安装npmunbox。

  1. 在您的在线计算机上运行npmbox npmbox
  2. npmbox.npmbox粘贴到离线服务器
  3. 运行:tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox(或在ansible中使用unarhieve命令)
  4. 运行:npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox
  5. 现在您可以使用npmunbox <package_name>.npmbox离线安装任何npm软件包(例如:npmunbox pm2.npmboxnpmunbox coffee-script.npmbox

答案 2 :(得分:0)

您可以使用模块npm进行脱机安装。

- name: Install node.js package from custom registry.
  npm:
    name: "/tmp/pm2-3.5.1.tgz"
    global: yes

要进行多次安装,您可以使用loop

示例任务:

- name: Find all tgz files in temporary directory
  find:
    paths: "{{ tmp_node.path }}"
    patterns: "*.tgz"
  register: node_files

- set_fact:
    node_list: "{{ node_files.files | map(attribute='path') | list }}"

- name: Install node.js package from custom registry.
  npm:
    name: "{{ item }}"
    global: yes
  loop: "{{ node_list | flatten(1) }}"

node_list是在目录files中角色放置的.tgz npm软件包的列表。