在ansible.builtin.shell时使用delta-in-loop_控件标签

在ansible.builtin.shell时使用delta-in-loop_控件标签,ansible,Ansible,我有如下简单的ansible脚本 我想知道我们是否可以在循环控制中使用ansible.builtin.shell的delta - hosts: localhost gather_facts: false tasks: - shell: echo {{ item[0] }} {{ item[1] }} {{ item[2] }} with_nested: - ['700', '600'] - ['./5.csv', '5.xlsx']

我有如下简单的ansible脚本

我想知道我们是否可以在
循环控制中使用
ansible.builtin.shell
delta

- hosts: localhost
  gather_facts: false
  tasks:
    - shell: echo {{ item[0] }} {{ item[1] }} {{ item[2] }}
      with_nested:
        - ['700', '600']
        - ['./5.csv', '5.xlsx']
        - [1, 2, 3, 4]
      loop_control:
        label: cmd-{{ item[0] }}-{{ item[1] }}-{{ item[2] }}-{{ the_delta_variable_produced_by_builtin_shell }}
比如说

-命令:“回送值{{{item}”
寄存器:结果
循环:[A、B、C]
回路控制:
标签:“{result.stdout}”
给予

任务[命令]***************************************************************
已更改:[localhost]=>(项=值\u A)
已更改:[localhost]=>(项=值)
已更改:[localhost]=>(项=值\u C)
例如

-命令:“回送值{{{item}”
寄存器:结果
循环:[A、B、C]
回路控制:
标签:“{result.stdout}”
给予

任务[命令]***************************************************************
已更改:[localhost]=>(项=值\u A)
已更改:[localhost]=>(项=值)
已更改:[localhost]=>(项=值\u C)

代码中的微小更改。注册var并在循环控制中使用:

- hosts: localhost
  gather_facts: false
  tasks:
    - shell: echo {{ item[0] }} {{ item[1] }} {{ item[2] }}
      register: result
      with_nested:
        - ['700', '600']
        - ['./5.csv', '5.xlsx']
        - [1, 2, 3, 4]
      loop_control:
        label: cmd-{{ item[0] }}-{{ item[1] }}-{{ item[2] }}-{{ result.delta }}
这将产生您想要的:

TASK [shell] ***************************************************************
changed: [localhost] => (item=cmd-700-./5.csv-1-0:00:00.009238)
changed: [localhost] => (item=cmd-700-./5.csv-2-0:00:00.007542)
changed: [localhost] => (item=cmd-700-./5.csv-3-0:00:00.009125)
changed: [localhost] => (item=cmd-700-./5.csv-4-0:00:00.009306)
changed: [localhost] => (item=cmd-700-5.xlsx-1-0:00:00.007829)
changed: [localhost] => (item=cmd-700-5.xlsx-2-0:00:00.008872)
changed: [localhost] => (item=cmd-700-5.xlsx-3-0:00:00.007578)
changed: [localhost] => (item=cmd-700-5.xlsx-4-0:00:00.007544)
changed: [localhost] => (item=cmd-600-./5.csv-1-0:00:00.007417)
changed: [localhost] => (item=cmd-600-./5.csv-2-0:00:00.008429)
changed: [localhost] => (item=cmd-600-./5.csv-3-0:00:00.007245)
changed: [localhost] => (item=cmd-600-./5.csv-4-0:00:00.007486)
changed: [localhost] => (item=cmd-600-5.xlsx-1-0:00:00.009141)
changed: [localhost] => (item=cmd-600-5.xlsx-2-0:00:00.008052)
changed: [localhost] => (item=cmd-600-5.xlsx-3-0:00:00.008761)
changed: [localhost] => (item=cmd-600-5.xlsx-4-0:00:00.007917)

代码中的微小更改。注册var并在循环控制中使用:

- hosts: localhost
  gather_facts: false
  tasks:
    - shell: echo {{ item[0] }} {{ item[1] }} {{ item[2] }}
      register: result
      with_nested:
        - ['700', '600']
        - ['./5.csv', '5.xlsx']
        - [1, 2, 3, 4]
      loop_control:
        label: cmd-{{ item[0] }}-{{ item[1] }}-{{ item[2] }}-{{ result.delta }}
这将产生您想要的:

TASK [shell] ***************************************************************
changed: [localhost] => (item=cmd-700-./5.csv-1-0:00:00.009238)
changed: [localhost] => (item=cmd-700-./5.csv-2-0:00:00.007542)
changed: [localhost] => (item=cmd-700-./5.csv-3-0:00:00.009125)
changed: [localhost] => (item=cmd-700-./5.csv-4-0:00:00.009306)
changed: [localhost] => (item=cmd-700-5.xlsx-1-0:00:00.007829)
changed: [localhost] => (item=cmd-700-5.xlsx-2-0:00:00.008872)
changed: [localhost] => (item=cmd-700-5.xlsx-3-0:00:00.007578)
changed: [localhost] => (item=cmd-700-5.xlsx-4-0:00:00.007544)
changed: [localhost] => (item=cmd-600-./5.csv-1-0:00:00.007417)
changed: [localhost] => (item=cmd-600-./5.csv-2-0:00:00.008429)
changed: [localhost] => (item=cmd-600-./5.csv-3-0:00:00.007245)
changed: [localhost] => (item=cmd-600-./5.csv-4-0:00:00.007486)
changed: [localhost] => (item=cmd-600-5.xlsx-1-0:00:00.009141)
changed: [localhost] => (item=cmd-600-5.xlsx-2-0:00:00.008052)
changed: [localhost] => (item=cmd-600-5.xlsx-3-0:00:00.008761)
changed: [localhost] => (item=cmd-600-5.xlsx-4-0:00:00.007917)

谢谢,它起作用了。更重要的是

- hosts: localhost
  gather_facts: false
  tasks:
    - shell: echo zongzw
      register: z

    - debug: "msg={{z}}"
    - shell: echo {{ item[0] }} {{ item[1] }} {{ item[2] }}
      with_nested:
        - ['700', '600']
        - ['./5.csv', '5.xlsx']
        - [1, 2, 3, 4]
      loop_control:
        label: cmd-{{ item[0] }}-{{ item[1] }}-{{ item[2] }}-{{ result.delta }}
      register: result

    - debug: "msg={{ result }}"
通过添加
-debug:“msg={{result}}”
,它收集并输出从上一步生成的整个
结果

TASK [debug] *****************************************************
ok: [localhost] => {
    "msg": {
        "changed": true,
        "msg": "All items completed",
        "results": [
            {
                "ansible_loop_var": "item",
                "changed": true,
                "cmd": "echo 700 ./5.csv 1",
                "delta": "0:00:00.006048",
                ...
                "stderr": "",
                "stderr_lines": [],
                "stdout": "700 ./5.csv 1",
                "stdout_lines": [
                    "700 ./5.csv 1"
                ]
            },
            ...

谢谢,它起作用了。更重要的是

- hosts: localhost
  gather_facts: false
  tasks:
    - shell: echo zongzw
      register: z

    - debug: "msg={{z}}"
    - shell: echo {{ item[0] }} {{ item[1] }} {{ item[2] }}
      with_nested:
        - ['700', '600']
        - ['./5.csv', '5.xlsx']
        - [1, 2, 3, 4]
      loop_control:
        label: cmd-{{ item[0] }}-{{ item[1] }}-{{ item[2] }}-{{ result.delta }}
      register: result

    - debug: "msg={{ result }}"
通过添加
-debug:“msg={{result}}”
,它收集并输出从上一步生成的整个
结果

TASK [debug] *****************************************************
ok: [localhost] => {
    "msg": {
        "changed": true,
        "msg": "All items completed",
        "results": [
            {
                "ansible_loop_var": "item",
                "changed": true,
                "cmd": "echo 700 ./5.csv 1",
                "delta": "0:00:00.006048",
                ...
                "stderr": "",
                "stderr_lines": [],
                "stdout": "700 ./5.csv 1",
                "stdout_lines": [
                    "700 ./5.csv 1"
                ]
            },
            ...
看看答案。如果这不是你想要的,不要评论!取而代之的,是你的问题,并提出它。例如,
delta\u var…
来自哪里?嵌套循环对于重现问题是多余的。命令的标签和参数的复杂性也是如此。请参见答案。如果这不是你想要的,不要评论!取而代之的,是你的问题,并提出它。例如,
delta\u var…
来自哪里?嵌套循环对于重现问题是多余的。命令的标签和参数的复杂性也是如此。