Ansible npm在单个会话中安装列表

时间:2017-10-19 20:41:59

标签: npm ansible

我有一长串Ansible npm安装项目,并使用" with_items"非常慢我想在单个会话中使用列表,例如:

- name: "define list for npm install"
  set_fact:
    npm_install_list:
      - 'mkdirp'
      - 'request'
      - 'extend'
      ... lots more ...

- name: "npm install a list at once"
  npm:
    name: "{{ npm_install_list | join(' ') }}"
    registry: 'http://path.to.private.registry'
    global: yes
    state: present

我收到此错误:

no JSON object could be decoded  

这可以与npm一起使用吗?如果是这样,我做错了什么?

2 个答案:

答案 0 :(得分:0)

  

这可以与npm一起使用吗?

没有

尝试使用name: package1 package2,您会看到原因:

cmd: /bin/npm install --global 'package1 package2'

name参数需要一个字符串,并将给定值视为字符串,从而转义/引用它。

-

作为旁注,Ansible中的一些其他包管理模块会自动将项(包)组合到一个执行调用中(尽管主要是为了避免依赖性问题,而不是优化)。 npm模块没有。

答案 1 :(得分:-1)

group_vats / all 下的

将您的数组定义为顶级

npm_install_list:
  - 'mkdirp'
  - 'request'
  - 'extend'
  ... lots more ...

现在在角色中使用此数组

- name: "npm install a list at once"
  npm:
    name: "{{ npm_install_list | join(' ') }}"
    registry: 'http://path.to.private.registry'
    global: yes
    state: present