Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Ansible使用with_项将项分配给变量_List_Loops_Dictionary_Ansible_Variable Assignment - Fatal编程技术网

List Ansible使用with_项将项分配给变量

List Ansible使用with_项将项分配给变量,list,loops,dictionary,ansible,variable-assignment,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: "{{ projec

我在使用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_应用程序下,我可以分配多个要运行的模块。如何使用以下项目填充此结构:

app_modules:
- { module: "auth", "run": 1 }, 
- { module: "graphql", "run": 2 }, 
- { module: "upload", "run": 3 }
我只想将pm2_应用程序的路径更改为:

path: "{{ project_root }}/{{ item.module }}"
在许多事情中,我尝试了:

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

因为它是一个角色,我不想重写它的任务。

因为
pm2_应用程序
是一个变量,而不是一个动作,我非常确定您只需要使用
for
循环或一些jinja的
映射和
组合
玩具来生成该结构:

vars:
  app_modules:
  - { module: "auth", "run": 1 }
  # **definitely** don't put the trailing comma like you have in your question

  pm2_apps: |
    {% set results = [] %}
    {% for am in app_modules %}
    {%   set it = am | combine({"cmd": "startOrGracefulReload"}) %}
    {%   set _ = it.update({"path": project_root + "/" + it.module}) %}
    {%   set _ = results.append(it) %}
    {% endfor %}
    {{ results }}