-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Swapnil Bobade <[email protected]>
- Loading branch information
1 parent
71a5ef7
commit 6f44f08
Showing
7 changed files
with
196 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
- name: Start cronjob | ||
hosts: bastion | ||
roles: | ||
- ocp-cronjob |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
OCP Cronjob creation | ||
======================================= | ||
|
||
The role *"roles/ocp-cronjob"* provides automated creation of cronjobs. User can add cronjob value in the role variables for creation **Role Variables** section. | ||
This role will create the cronjob and we can monitor the jobs usig oc commands | ||
|
||
|
||
Requirements | ||
------------ | ||
|
||
- Running OCP 4.x cluster. | ||
|
||
|
||
Role Variables | ||
-------------- | ||
|
||
| Variable | Required | Default |Comments | | ||
|--------------------------------|----------|---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| enable_cronjob | no | false | Flag to be set to true to enable cronjob | | ||
| cronJob_schedule | no | * * * * * | can be updated as needed | | | ||
| cronJob_concurrencyPolicy | no | Allow | Value can be anything from ["Allow","forbid","replace"] | | ||
| cronJob_startingDeadlineSeconds | no | 200 | Can be updated as needed | | ||
| cronJob_suspend | no | false | can be true or false | | ||
| cronJob_successfulJobsHistoryLimit | no | 3 | can be updated as needed | | ||
| cronJob_failedJobsHistoryLimit | no | 2 | can be updated as needed | | ||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||
|
||
|
||
Dependencies | ||
------------ | ||
|
||
- None | ||
|
||
|
||
Example Playbook | ||
---------------- | ||
|
||
- name: Start cronjob | ||
hosts: bastion | ||
roles: | ||
- ocp-cronjob | ||
|
||
|
||
Steps to run playbook | ||
---------------------- | ||
|
||
- Copy the ocp4-playbooks-extras/examples/inventory to the home/working directory | ||
- To execute the playbook run the below sample command | ||
|
||
|
||
Sample Command | ||
--------------- | ||
|
||
ansible-playbook -i inventory -e @examples/all.yaml ~/ocp4-playbooks-extras/playbooks/ocp-cronjob.yml | ||
|
||
|
||
License | ||
------- | ||
|
||
See LICENCE.txt | ||
|
||
|
||
Author Information | ||
------------------ | ||
|
||
Swapnil Bobade ([email protected]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
--- | ||
# defaults file for playbooks/roles/ocp-cronjob | ||
# all these values can be updated as needed | ||
container_name: "busybox" | ||
container_image: "busybox" | ||
cronjob_namespace: "openshift-cronjob" | ||
delete_cronjob: false | ||
job_name: "cronjob" | ||
enable_cronjob: false | ||
cronJob_schedule: "*/1 * * * *" | ||
cronJob_concurrencyPolicy: "Allow" | ||
cronJob_startingDeadlineSeconds: 200 | ||
cronJob_suspend: false | ||
cronJob_successfulJobsHistoryLimit: 4 | ||
cronJob_failedJobsHistoryLimit: 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
--- | ||
# Creating namespace for cronjob | ||
- name: Create namespace for cronjob | ||
k8s: | ||
state: present | ||
definition: | ||
apiVersion: v1 | ||
kind: Namespace | ||
metadata: | ||
name: "{{ cronjob_namespace }}" | ||
|
||
# create cronjobs | ||
- name: Create Cronjobs | ||
block: | ||
- name: Create Cronjob | ||
template: | ||
src: "{{ role_path }}/templates/cron-job.yml.j2" | ||
dest: "{{ role_path }}/files/cronjob.yml" | ||
|
||
- name: Apply the cronjob | ||
shell: oc apply -f "{{ role_path }}/files/cronjob.yml" | ||
|
||
- name: Check if pods are created | ||
shell: oc get pods -n {{ cronjob_namespace }} --no-headers | wc -l | ||
register: pod_count | ||
until: pod_count.stdout|int > 0 | ||
retries: 3 | ||
delay: 30 | ||
|
||
- name: Check pod status | ||
shell: oc wait -l parent=cronjobpi --for=condition=Ready pods | ||
register: pod_status | ||
|
||
- debug: | ||
msg: "{{ pod_status.stdout_lines }}" | ||
|
||
- name: Check if jobs are getting created | ||
shell: oc get jobs -n {{ cronjob_namespace }} --no-headers | wc -l | ||
register: job_count | ||
until: job_count.stdout|int > 0 | ||
retries: 3 | ||
delay: 30 | ||
|
||
- name: Check if jobs are running | ||
shell: oc get jobs -n {{ cronjob_namespace }} | ||
register: output_jobs | ||
|
||
- name: Check if pods are running | ||
shell: oc get pods -n {{ cronjob_namespace }} | grep "Completed\|Running" | ||
register: output_pods | ||
|
||
- name: Fail if pods are not getting created | ||
fail: | ||
msg: "Pods are not getting created !" | ||
when: pod_count.stdout|int == 0 | ||
|
||
- name: Fail if jobs are not getting created | ||
fail: | ||
msg: "Jobs are not getting created !" | ||
when: job_count.stdout|int == 0 | ||
|
||
- debug: | ||
msg: "{{ output_jobs.stdout_lines }}" | ||
|
||
- debug: | ||
msg: "{{ output_pods.stdout_lines }}" | ||
|
||
- name: Delete cronjob if requested | ||
shell: oc delete -f "{{ role_path }}/files/cronjob.yml" | ||
when: delete_cronjob |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
--- | ||
apiVersion: batch/v1 | ||
kind: CronJob | ||
metadata: | ||
name: {{ job_name }} | ||
namespace: "{{ cronjob_namespace }}" | ||
spec: | ||
schedule: "{{ cronJob_schedule }}" | ||
concurrencyPolicy: "{{ cronJob_concurrencyPolicy }}" | ||
startingDeadlineSeconds: {{ cronJob_startingDeadlineSeconds }} | ||
suspend: {{ cronJob_suspend }} | ||
successfulJobsHistoryLimit: {{ cronJob_successfulJobsHistoryLimit }} | ||
failedJobsHistoryLimit: {{ cronJob_failedJobsHistoryLimit }} | ||
jobTemplate: | ||
spec: | ||
template: | ||
metadata: | ||
labels: | ||
parent: "cronjobpi" | ||
spec: | ||
containers: | ||
- name: {{ container_name }} | ||
image: {{ container_image }} | ||
{% if cronJob_concurrencyPolicy or cronJob_startingDeadlineSeconds %} | ||
command: ["sleep", "80"] | ||
{% else %} | ||
command: ["echo", "Hello Openshift !!"] | ||
{% endif %} | ||
restartPolicy: Never |