因此,我正在使用ansible剧本在超过100台服务器上固定我的logrotate,每台服务器都有5-7个logrotate.d项需要更改。我知道如何只用1个项目来解决它,但我似乎无法弄清楚如何将1个以上的东西放进剧本中进行更改,逻辑告诉我只列出对方,但随后它开始跳过除第一个之外的所有内容代替。所以请在这里包括2本单独的剧本,有人可以告诉我如何将它们变成1本剧本吗?
我尝试列出-名称部分,但确实有用。
---
- hosts: '{{ server }}'
remote_user: ansip
become: yes
become_method: sudo
vars_prompt:
- name: "server"
prompt: "Enter server name or all"
private: no
tasks:
roles:
- role: ansible-role-logrotate
logrotate:
compress: true
create: true
weekly: true
dateext: true
include: /etc/logrotate.d
rotate: 3
shred: true
logrotate_d:
- name: samba
files:
- /var/log/samba/*
options:
compress: true
dateext: true
rotate: 3
- hosts: '{{ server }}'
remote_user: ansip
become: yes
become_method: sudo
tasks:
roles:
- role: ansible-role-logrotate
logrotate:
compress: true
create: true
weekly: true
dateext: true
include: /etc/logrotate.d
rotate: 3
shred: true
logrotate_d:
- name: httpd
files:
- /var/log/httpd/*log
options:
compress: true
dateext: true
rotate: 3
...
因此,在Appu的帮助下,我已经做到了:
logrotate_d:
- name: "{{ item.name }}"
files:
- "{{ item.logpath }}" / "{{ item.name }}"/*log
options:
compress: true
dateext: true
rotate: 3
with_items:
- { name: 'samba', logpath: '/log/var' }
- { name: 'httpd', logpath: '/log/var' }
但是,它似乎很喜欢对数路径和名称之间的“ /”。认为它也缺少引号,如果我添加配额,它仍然会认为相同。我只在两边都加了空格,否则引号会变得疯狂甚至停止,使整个剧本变成红色。
答案 0 :(得分:1)
我尚未对其进行测试,但是您可以通过在其下面指定必填字段列表来使用“ with_items”。
tasks:
roles:
- role: ansible-role-logrotate
logrotate:
compress: true
create: true
weekly: true
dateext: true
include: /etc/logrotate.d
rotate: 3
shred: true
logrotate_d:
- name: "{{ item.o }}"
file: /"{{ item.l }}"/"{{ item.o }}"/*
options:
compress: true
dateext: true
rotate: 3
with_items:
- { o: 'samba', l: 'var/log' }
- { o: 'httpd', l: '/tmp' }
...
答案 1 :(得分:0)
您可以尝试使用import_playbook功能。
答案 2 :(得分:0)
Okei,所以我做到了,谢谢大家的帮助。我无法使用with_items来工作,所以我回到了列出所有事物的原始想法,现在不知何故它开始起作用了,而我早些时候无法使它起作用。
- hosts: '{{ server }}'
remote_user: ansip
become: yes
become_method: sudo
vars_prompt:
- name: "server"
prompt: "Enter server name or all"
private: no
tasks:
roles:
- role: ansible-role-logrotate
logrotate:
compress: true
create: true
weekly: true
dateext: true
include: /etc/logrotate.d
rotate: 3
shred: true
logrotate_d:
- name: samba
files:
- /var/log/samba/*
options:
compress: true
dateext: true
rotate: 3
- name: httpd
files:
- /var/log/httpd/*
options:
compress: true
dateext: true
rotate: 3
- name: syslog
files:
- /var/log/cron/*
- /var/log/maillog/*
- /var/log/messages/*
- /var/log/secure/*
- /var/log/spooler/'
options:
compress: true
dateext: true
rotate: 3