有没有办法grep或解析ansible变量

时间:2017-08-28 21:41:32

标签: parsing grep ansible

我有一个变量,我需要解析它来取出一个版本字符串,有没有办法做到这一点?以下是ansible变量的示例。

--xxx 1.2.3-102 --yyy 2.5.10-47 --zzz 10.4.2-193

更新:添加ansible任务格式

---

- hosts: localhost
  tasks:
  - name: Get Version
    shell: echo '{{ version }}'
    register: results
  - set_fact:
      value: "{{ results.stdout | regex_search(regexp,'') }}"
    vars:
      regexp: ''
  - debug:
      var: value

2 个答案:

答案 0 :(得分:1)

在" - yyy"之后获取版本号,根据您的任务需要更改正则表达式:

- hosts: localhost
  tasks:
  - name: Get Version
    shell: echo '--xxx 1.2.3-102 --yyy 2.5.10-47 --zzz 10.4.2-193'
    register: results
  - name: set regex
    set_fact:
      re: '--yyy\s+(?P<digit>\d+\.\d+\.\d+-\d+)'
  - set_fact:
      value: "{{ results.stdout | regex_search(re, '\\g<digit>') }}" 
  - debug:
      var: value[0]

答案 1 :(得分:0)

| m-p解决方案适用于最新版本的ansible,不幸的是我必须使用ansible pre 2.0(1.9.6),因为某些奇怪的原因似乎不支持regex_search。

在这种情况下,我将使用以下

"{{ results | regex_replace ('((xxx|yyy)\\s[\\S]+)|(--|zzz|\\s)','') | join }}"