summaryrefslogtreecommitdiffstats
path: root/roles/openshift_metrics/tasks/import_jks_certs.yaml
blob: f6bf6c1a637c7b00c4f8f98b416a31eeb6be45df (plain)
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
---
- name: Check for jks-generator service account
  command: >
    {{ openshift.common.client_binary }}
    --config={{ mktemp.stdout }}/admin.kubeconfig
    -n {{openshift_metrics_project}}
    get serviceaccount/jks-generator --no-headers
  register: serviceaccount_result
  ignore_errors: yes
  when: not ansible_check_mode
  changed_when: no

- name: Create jks-generator service account
  command: >
    {{ openshift.common.client_binary }}
    --config={{ mktemp.stdout }}/admin.kubeconfig
    -n {{openshift_metrics_project}}
    create serviceaccount jks-generator
  when: not ansible_check_mode and "not found" in serviceaccount_result.stderr

- name: Check for hostmount-anyuid scc entry
  command: >
    {{ openshift.common.client_binary }}
    --config={{ mktemp.stdout }}/admin.kubeconfig
    get scc hostmount-anyuid
    -o jsonpath='{.users}'
  register: scc_result
  when: not ansible_check_mode
  changed_when: no

- name: Add to hostmount-anyuid scc
  command: >
    {{ openshift.common.admin_binary }}
    --config={{ mktemp.stdout }}/admin.kubeconfig
    -n {{openshift_metrics_project}}
    policy add-scc-to-user hostmount-anyuid
    -z jks-generator
  when:
    - not ansible_check_mode
    - scc_result.stdout.find("system:serviceaccount:{{openshift_metrics_project}}:jks-generator") == -1

- name: Copy JKS generation script
  copy:
    src: import_jks_certs.sh
    dest: "{{openshift_metrics_certs_dir}}/import_jks_certs.sh"
  check_mode: no

- slurp: src={{ openshift_metrics_certs_dir }}/hawkular-metrics-keystore.pwd
  register: metrics_keystore_password

- slurp: src={{ openshift_metrics_certs_dir }}/hawkular-cassandra-keystore.pwd
  register: cassandra_keystore_password

- slurp: src={{ openshift_metrics_certs_dir }}/hawkular-jgroups-keystore.pwd
  register: jgroups_keystore_password

- name: Generate JKS pod template
  template:
    src: jks_pod.j2
    dest: "{{mktemp.stdout}}/jks_pod.yaml"
  vars:
    metrics_keystore_passwd: "{{metrics_keystore_password.content}}"
    cassandra_keystore_passwd: "{{cassandra_keystore_password.content}}"
    metrics_truststore_passwd: "{{hawkular_truststore_password.content}}"
    cassandra_truststore_passwd: "{{cassandra_truststore_password.content}}"
    jgroups_passwd: "{{jgroups_keystore_password.content}}"
  check_mode: no
  changed_when: no

- stat: path="{{openshift_metrics_certs_dir}}/hawkular-metrics.keystore"
  register: metrics_keystore
  check_mode: no

- stat: path="{{openshift_metrics_certs_dir}}/hawkular-cassandra.keystore"
  register: cassandra_keystore
  check_mode: no

- stat: path="{{openshift_metrics_certs_dir}}/hawkular-cassandra.truststore"
  register: cassandra_truststore
  check_mode: no

- stat: path="{{openshift_metrics_certs_dir}}/hawkular-metrics.truststore"
  register: metrics_truststore
  check_mode: no

- stat: path="{{openshift_metrics_certs_dir}}/hawkular-jgroups.keystore"
  register: jgroups_keystore
  check_mode: no

- name: create JKS pod
  command: >
    {{ openshift.common.client_binary }}
    --config={{ mktemp.stdout }}/admin.kubeconfig
    -n {{openshift_metrics_project}}
    create -f {{mktemp.stdout}}/jks_pod.yaml
    -o name
  register: podoutput
  check_mode: no
  when: not metrics_keystore.stat.exists or
        not metrics_truststore.stat.exists or
        not cassandra_keystore.stat.exists or
        not cassandra_truststore.stat.exists or
        not jgroups_keystore.stat.exists

- command: >
    {{ openshift.common.client_binary }}
    --config={{ mktemp.stdout }}/admin.kubeconfig
    -n {{openshift_metrics_project}}
    get {{podoutput.stdout}}
    -o jsonpath='{.status.phase}'
  register: result
  until: result.stdout.find("Succeeded") != -1
  retries: 5
  delay: 10
  changed_when: no
  when: not metrics_keystore.stat.exists or
        not metrics_truststore.stat.exists or
        not cassandra_keystore.stat.exists or
        not cassandra_truststore.stat.exists or
        not jgroups_keystore.stat.exists