我对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部分,我需要。
答案 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(' ') }}"