问题描述
我正在尝试删除超过一个月的服务器日志文件。我可以使用这套Ansible任务:
- name: Remove JBOSS Log Files
find:
path: /u01/jboss/server
patterns: "server.log.*"
age: "30d"
register: deleted
tags: serverlog
- name: Ansible remove File
file:
path: "{{ item.path }}"
state: absent
with_items: "{{ deleted.files }}"
tags: serverlog
由于我希望控制该年龄,因此必须从jenkins参数部分输入以下days
变量作为用户输入。这是一个字符串参数,我给它提供了默认值20d
,以便可以保留20天的日志文件,而其余的可以删除。
- name: Remove JBOSS Log Files
find:
path: /u01/jboss/server
patterns: "server.log.*"
age: "{{ days }}"
register: deleted
tags: serverlog
- name: Ansible remove File
file:
path: "{{ item.path }}"
state: absent
with_items: "{{ deleted.files }}"
tags: serverlog
在詹金斯执行命令中,我已经传递了命令
ansible-playbook main.yml --tags serverlog
这将从服务器中删除完整的日志。 为了方便用户,如何设置参数以保留20天的日志文件并删除较旧的日志文件?
解决方法
您可以在管道中传递days参数,并通过给出命令来运行剧本
ansible-playbook --extra-vars '{"days":"${params.days}"}' main.yml
我正在共享一个示例管道作业,它将在ansible剧本中使用jenkins参数。
管道作业:
pipeline {
agent any
stages {
stage ('Git Pull') {
steps {
git changelog: false,poll: false,url: '/var/lib/jenkins/ansible-workspace'
}
}
stage ('Run PLaybook') {
steps {
sh """ansible-playbook --extra-vars '{"name":"${params.first_name}"}' deploy.yml"""
}
}
}
}
Ansible剧本:(deploy.yml)
---
- hosts: localhost
connection: local
vars:
- firstname: "John"
roles:
- { role: helloworld }
我在https://github.com/intuit/karate/tree/master/karate-core#scriptall
中添加了示例ansible剧本角色Jenkins管道配置
输出: