是否有用于迭代多个文件的模块/方式?
用例:
有多个.conf
文件
/opt/a1.conf
/opt/a2.conf
/var/app1/conf/a3.conf
/etc/a4.conf
是否存在用于遍历多个文件并搜索这些文件中是否存在特定字符串的模块或方法。字符串将保持不变。
“ lineinfile”模块可帮助您搜索单个文件,但我想知道是否有一种方法可以遍历多个文件并搜索此字符串并将其替换为其他值
单个文件的我当前的剧本内容:
- name: Modify line to include Timeout
become: yes
become_method: sudo
lineinfile:
path: /tmp/httpd.conf
regexp: 'http\s+Timeout\s+\='
line: 'http Timeout = 10'
backup: yes
以上内容只能用于单个文件。
或者,我们可以使用某种shell命令来执行此操作,但是有没有Ansible的方法来实现此目的?
谢谢
答案 0 :(得分:2)
您是否尝试过通过loop
参数进行迭代?
- name: Modify line to include Timeout
become: yes
become_method: sudo
lineinfile:
path: "{{ item }}"
regexp: 'http\s+Timeout\s+\='
line: 'http Timeout = 10'
backup: yes
loop:
- /opt/a1.conf
- /opt/a2.conf
- /var/app1/conf/a3.conf
- /etc/a4.conf
答案 1 :(得分:1)
您可以使用with_items指令来传输文件,或者您可以使用Jinja脚本查找类似于以下内容的字符串:
v8js
files:
- /opt/a1.conf
- /opt/a2.conf
- /var/app1/conf/a3.conf
- /etc/a4.conf