summaryrefslogtreecommitdiffstats
path: root/roles/openshift_management/tasks/add_container_provider.yml
blob: 24b2ce6ac4cc1146d967d49c4a29ff421db4779e (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
---
- name: Ensure OpenShift facts module is available
  include_role:
    role: openshift_facts

- name: Ensure OpenShift facts are loaded
  openshift_facts:

- name: Ensure we use openshift_master_cluster_public_hostname if it is available
  set_fact:
    l_cluster_hostname: "{{ openshift.master.cluster_public_hostname }}"
  when:
    - openshift.master.cluster_public_hostname is defined

- name: Ensure we default to the first master if openshift_master_cluster_public_hostname is unavailable
  set_fact:
    l_cluster_hostname: "{{ openshift.master.cluster_hostname }}"
  when:
    - l_cluster_hostname is not defined

- name: Ensure the management SA Secrets are read
  oc_serviceaccount_secret:
    state: list
    service_account: management-admin
    namespace: management-infra
  register: sa

- name: Ensure the management SA bearer token is identified
  set_fact:
    management_token: "{{ sa.results | oo_filter_sa_secrets }}"

- name: Ensure the SA bearer token value is read
  oc_secret:
    state: list
    name: "{{ management_token }}"
    namespace: management-infra
    decode: true
  no_log: True
  register: sa_secret

- name: Ensure the SA bearer token value is saved
  set_fact:
    management_bearer_token: "{{ sa_secret.results.decoded.token }}"

- name: Ensure we have the public route to the management service
  oc_route:
    state: list
    name: httpd
    namespace: openshift-management
  register: route

- name: Ensure the management service route is saved
  set_fact:
    management_route: "{{ route.results.0.spec.host }}"

- name: Ensure this cluster is a container provider
  uri:
    url: "https://{{ management_route }}/api/providers"
    body_format: json
    method: POST
    user: "{{ openshift_management_username }}"
    password: "{{ openshift_management_password }}"
    validate_certs: no
    # Docs on formatting the BODY of the POST request:
    # http://manageiq.org/docs/reference/latest/api/reference/providers.html#specifying-connection-configurations
    body:
      connection_configurations:
        - authentication: {auth_key: "{{ management_bearer_token }}", authtype: bearer, type: AuthToken}
          endpoint: {role: default, security_protocol: ssl-without-validation, verify_ssl: 0}
      hostname: "{{ l_cluster_hostname }}"
      name: "{{ openshift_management_project }}"
      port: "{{ openshift.master.api_port }}"
      type: "ManageIQ::Providers::Openshift::ContainerManager"