Ansible bash命令作为可解变量的求值

Ansible bash命令作为可解变量的求值,ansible,Ansible,我要创建命令的ansible等效项: apt-get install linux-headers-$(uname -r) 要求:必须通过Ansible变量配置linux头文件-$(uname-r)包 在外部文件中,配置了一个大的包列表。现在,必须通过shell任务单独处理名称像linuxheaders-$(uname-r)一样缓慢计算的包 我正在寻找一种方法来消除这些异常,并将它们与其他异常一样存储在变量列表中。使用插件。比如说 - set_fact: linux_headers_pk

我要创建命令的ansible等效项:

apt-get install linux-headers-$(uname -r)
要求:必须通过Ansible变量配置
linux头文件-$(uname-r)

在外部文件中,配置了一个大的包列表。现在,必须通过shell任务单独处理名称像
linuxheaders-$(uname-r)
一样缓慢计算的包

我正在寻找一种方法来消除这些异常,并将它们与其他异常一样存储在变量列表中。

使用插件。比如说

- set_fact:
    linux_headers_pkg: "{{ 'linux-headers-' ~ lookup('pipe', 'uname -r') }}"
- debug:
    var: linux_headers_pkg
给予


谢谢@Vladimir Botka的烟斗。下面是我基于变量实施的解决方案,
pipe
replace

该包在外部文件中描述为:

---
- packages:
    - name: Some Package Description,
      package: linux-headers-${pipe}
      pipe: uname -r
Playbook,我们得到
管道的结果
,并在
包中进行替换

- name: test pipe
  debug:
    msg: "key: {{ item.package | replace('${pipe}', lookup('pipe', item.pipe)) }}"
  when: item.pipe is defined
  with_items: "{{ packages }}"
输出:

- name: test pipe
  debug:
    msg: "key: {{ item.package | replace('${pipe}', lookup('pipe', item.pipe)) }}"
  when: item.pipe is defined
  with_items: "{{ packages }}"
TASK [pipe] ********************************************************************
skipping: [default] => (item={u'packageList': [u'package1,', u'package2,', u'package3'], u'name': u'Some description 1,'}) 
ok: [default] => (item={u'pipe': u'uname -r', u'name': u'Some description 1,', u'package': u'linux-headers-${pipe}'}) => {
    "msg": "key: linux-headers-4.15.0-65-generic"
}