-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheckRelease.yaml
102 lines (93 loc) · 4.73 KB
/
checkRelease.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
- hosts: localhost
vars:
vars:
uucloud: "{{ lookup('file', ('ansible/playbooks/config/standard.json') }}"
output_file_path: "/ansible/prdel.json"
tasks:
- set_fact:
apps:
- name: "rancher"
url: "https://api.github.com/repos/rancher/rancher/releases/latest"
# currentVersion: "{{ uucloud.services.rancher.versions.rancherImage }}"
- name: "rke2"
url: "https://api.github.com/repos/rancher/rancher/releases/latest"
# currentVersion: "{{ uucloud.services.kubernetes.rke2_version }}"
- name: "openebs_localpvImage"
url: "https://api.github.com/repos/openebs/dynamic-localpv-provisioner/releases/latest"
# currentVersion: "{{ uucloud.services.openebs.versions.localpvImage }}"
- name: "openebs_linuxUtils"
url: "https://api.github.com/repos/openebs/linux-utils/releases/latest"
# currentVersion: "{{ uucloud.services.openebs.versions.linuxUtilsImage }}"
- name: "cert-manager"
url: "https://api.github.com/repos/cert-manager/cert-manager/releases/latest"
# currentVersion: "{{ uucloud.services.certman.versions.wekhookImage }}"
- name: "ingress-nginx"
url: "https://api.github.com/repos/kubernetes/ingress-nginx/releases/latest"
# currentVersion: "{{ uucloud.services.ingress.versions.controllerImage }}"
- name: "harbor"
url: "https://api.github.com/repos/goharbor/harbor/releases/latest"
# currentVersion: "{{ uucloud.services.harbor.versions.harborPortalImage }}"
- name: "grafana"
url: "https://api.github.com/repos/grafana/grafana/releases/latest"
# currentVersion: "{{ uucloud.services.grafana.versions.grafanaImage }}"
- set_fact:
docker_images:
- name: "mongo"
repo: "percona/percona-server-mongodb"
# currentVersion: "{{ uucloud.services.mongo.versions.mongoImage }}"
- name: "nexus"
repo: "sonatype/nexus3"
# currentVersion: "{{ uucloud.services.nexus.versions.nexusImage }}"
- name: "opensearch-dashboards"
repo: "opensearchproject/opensearch-dashboards"
# currentVersion: "{{ uucloud.services.opensearch.versions.dashboardImage }}"
- name: "downloadDashboardsImage"
repo: "curlimages/curl"
# currentVersion: "{{ uucloud.services.grafana.versions.downloadDashboardsImage }}"
- name: "prometheus"
repo: "bitnami/prometheus"
# currentVersion: "{{ uucloud.services.prometheus.versions.prometheusImage }}"
- name: "graylog"
repo: "graylog/graylog"
# currentVersion: "{{ uucloud.services.graylog.versions.graylogImage }}"
- name: "rabbit"
repo: "bitnami/rabbitmq"
# currentVersion: "{{ uucloud.services.rabbit.versions.rabbitImage }}"
- name: "minioImage"
repo: "minio/minio"
# currentVersion: "{{ uucloud.services.minio.versions.minioImage }}"
- name: "mcImage"
repo: "minio/mc"
# currentVersion: "{{ uucloud.services.minio.versions.mcImage }}"
- name: Check versions
uri:
url: "{{ item.url }}"
method: GET
return_content: yes
register: latest_releases
loop: "{{ apps }}"
- name: Check latest Docker Hub versions
uri:
url: "https://registry.hub.docker.com/v2/repositories/{{ item.repo }}/tags?page_size=4"
method: GET
return_content: yes
register: docker_tags
loop: "{{ docker_images }}"
- name: Set Docker image suitable tags
set_fact:
suitable_tags: "{{ suitable_tags | default({}) | combine({ item.item.name: (item.json.results | selectattr('name', 'search', '^(?!latest$)(?!sha256-)(?!.*debian.*)(?!.*java.*)(?!.*rc.*).*$') | map(attribute='name') | list | first | default('No suitable tag found')) }) }}"
loop: "{{ docker_tags.results }}"
- name: Combine all information into a list
set_fact:
version_info: "{{ version_info | default([]) + [{'name': item.item.name, 'new_version': item.json.tag_name, 'url': item.item.url}] }}"
loop: "{{ latest_releases.results }}"
- name: Add docker images to version info
set_fact:
version_info: "{{ version_info | default([]) + [{'name': item.item.name, 'new_version': suitable_tags[item.item.name], 'url': 'https://registry.hub.docker.com/v2/repositories/' + item.item.repo + '/tags'}] }}"
loop: "{{ docker_tags.results }}"
- name: Write version info to a file
vars:
output_file_path: ./prdel.json
copy:
content: "{{ version_info | to_nice_json }}"
dest: "{{ output_file_path }}"