使用 linux 命令的 Ansible jinja2 模板

Ansible jinja2 template with linux command

我正在学习ansible。我写了一个 jinja2 模板来循环多个值。但是,我从 linux 命令中获取这些值。

- name: fetching port ranges 
  command: ls /apache |grep redis|grep ".pid"  | awk -F"_" '{ print }'| awk -F"." '{print }'

上述命令的输出将是:

10001
10002
10003
10004
10005

下面是jinja2模板

 [{% for range in port  %}
    "127.0.0.1:{{ range }}",
  {% endfor %}]

在 jinja2 模板中使用 "for loop",我正在尝试迭代 linux 命令生成的值,但我不确定如何保存这些值并在 jinja2 模板中使用它。任何帮助将不胜感激。

您需要注册结果,然后使用 stdout_lines 的输出。

尝试这样的事情:

- name: fetching port ranges 
  command: ls /apache |grep redis|grep ".pid"  | awk -F"_" '{ print }'| awk -F"." '{print }'
  register: result

- name: my template task
  template:
    src: <src>
    dest: <dest>
  vars:
    port: "{{ result.stdout_lines }}"