从带有ansible的文件中获取grep变量,以便稍后在具有for循环的任务中使用

时间:2017-07-28 07:03:51

标签: shell ansible

我对ansible相对较新。

我有parameters.yml这样的事情:

parameters: 
  stuff: bullshit
  otherstuff: otherbullshit
  domain_locale: domain.locale.test
  domain_differentlocale1: domain.differentlocale1.test
  domain_differentlocale2: domain.differentlocale2.test
  domain_differentlocale3: domain.differentlocale3.test
  uninteresting_stuff: uninteresting_bullshit

此文件位于另一个目录中,但我也可以将其符号链接为defaults / main.yml。无所谓。

我想要完成的是在一个ansible任务中以某种方式grep这些domain.*.test值并在另一个任务中使用它作为变量。另一项任务是在127.0.0.1 localhost之后的/etc/hosts中直接写入include_vars

我甚至不确定在ansible中使用哪个模块。我看到set_fact没有额外的grep。 lineinfile不读取其他文件(我可以将它与shell命令结合使用吗?如何?)。 function smallestCommons(arr) { arr = arr.sort(function (a, b) { return a - b; }); var count = 1; for (var i = arr[0]; i <= arr[1]; i++) { if (count % i !== 0) { i = arr[0]; count++; } } return count; } smallestCommons([23,18]); 没有source和dest,因此它也仅限于一个文件。

我还认为这篇文章可以帮助我:Ansible read multiple variables with same name from vars_file 但它不需要grep部分,我需要。

1 个答案:

答案 0 :(得分:1)

你走了:

---
- hosts: localhost
  gather_facts: no
  vars:
    parameters:
      stuff: bullshit
      otherstuff: otherbullshit
      domain_locale: domain.locale.test
      domain_differentlocale1: domain.differentlocale1.test
      domain_differentlocale2: domain.differentlocale2.test
      domain_differentlocale3: domain.differentlocale3.test
      uninteresting_stuff: uninteresting_bullshit
  tasks:
    - lineinfile:
        dest: /tmp/test.txt
        regexp: ^127.0.0.1
        line: "127.0.0.1 localhost {{ parameters.values() | select('match','domain.*test') | list | join(' ') }}"