Ansible使用with_items将项目分配给变量

时间:2018-12-09 07:47:05

标签: list loops dictionary ansible variable-assignment

我正在使用Ansible Galaxy的PM2角色。角色看起来像这样:

roles:
  - role: weareinteractive.pm2
    vars:
      pm2_apps:
        - run: pm2.json
          path: "{{ project_root }}/auth"
          cmd: startOrGracefulReload
        - run: pm2.json
          path: "{{ project_root }}/graphql"
          cmd ...

          etc..

在pm2_apps下,我可以分配多个要运行的模块。如何用以下项目填充此结构:

app_modules:
- { module: "auth", "run": 1 }, 
- { module: "graphql", "run": 2 }, 
- { module: "upload", "run": 3 }

我只想将pm2_apps的路径更改为:

path: "{{ project_root }}/{{ item.module }}"

在许多事情中,我尝试过:

pm2_apps:
  - run: pm2.json
    path: "{{ project_root }}/{{ item.module }}"
    cmd: startOrGracefulReload
    with_items: "{{ app_modules }}"

由于它是角色,所以我不想重写其任务。

1 个答案:

答案 0 :(得分:1)

由于pm2_apps是一个变量,而不是一个动作,所以我很确定您只需要使用for循环或jinja的map和{{ 1}}玩具:

combine