想用詹金斯参数参数化ansible playbook中的值
want to parametrize the value in ansible playbook with jenkins parameters
我正在尝试删除一个多月前的服务器日志文件。我可以使用这组 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
因为我想允许控制这个年龄,下面的 days
变量必须作为来自 jenkins 参数部分的用户输入输入。它是一个字符串参数,我给它一个默认值 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
在jenkins的执行命令中我已经通过了命令
ansible-playbook main.yml --tags serverlog
这是从服务器中删除完整的日志。
如何参数化方便用户保留20天的日志文件并删除旧的日志文件?
您可以在管道中传递天数参数,并通过给出命令 运行 剧本
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 }
我在 github
中添加了示例 ansible 剧本角色
Jenkins 管道配置
输出:
我正在尝试删除一个多月前的服务器日志文件。我可以使用这组 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
因为我想允许控制这个年龄,下面的 days
变量必须作为来自 jenkins 参数部分的用户输入输入。它是一个字符串参数,我给它一个默认值 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
在jenkins的执行命令中我已经通过了命令
ansible-playbook main.yml --tags serverlog
这是从服务器中删除完整的日志。 如何参数化方便用户保留20天的日志文件并删除旧的日志文件?
您可以在管道中传递天数参数,并通过给出命令 运行 剧本
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 }
我在 github
中添加了示例 ansible 剧本角色Jenkins 管道配置
输出: