summaryrefslogtreecommitdiffstats
path: root/deployment/playbooks/cns-setup.yaml
blob: 74e58e8f6ca3d24668048e106e8c6424d6f41573 (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
121
---
- hosts: cns
  tasks:
  - name: Install required kernel modules on CNS nodes
    import_role:
      name: openshift_storage_glusterfs
      tasks_from: kernel_modules.yml

- name: Restart dnsmasq to make our custom configs take effect
  hosts: allnodes
  tasks:
  - service:
      name: dnsmasq
      state: restarted

- hosts: single_master
  tasks:
  - name: Perform actions on master node which are required to install CNS
    import_role:
      name: openshift_storage_glusterfs
    vars:
      openshift_storage_glusterfs_name: 'storage'
      openshift_storage_glusterfs_namespace: 'storage'
      openshift_storage_glusterfs_is_native: true
      openshift_storage_glusterfs_storageclass: true
      openshift_storage_glusterfs_block_storageclass: true
      openshift_storage_glusterfs_s3_deploy: false
      openshift_storage_glusterfs_heketi_admin_key: "{{
          (dp_tool_heketi_admin_key.strip() != '') |
              ternary(dp_tool_heketi_admin_key.strip(), omit) }}"
      openshift_storage_glusterfs_heketi_user_key: "{{
          (dp_tool_heketi_user_key.strip() != '') |
              ternary(dp_tool_heketi_user_key.strip(), omit) }}"
      openshift_storage_glusterfs_heketi_topology_load: true
  - name: Allow to expand PVCs using 'glusterfs' storageclass.
    oc_edit:
      kind: sc
      name: glusterfs-{{ glusterfs_name }}
      content:
        allowVolumeExpansion: true

- name: Get IP address of the node with router
  hosts: single_master
  tasks:
  - command: "oc get endpoints router -o=custom-columns=:.subsets[*].addresses[0].ip -n default"
    register: router_get
  - set_fact:
      router_ip: "{{ router_get.stdout_lines[1].strip() }}"
    delegate_to: "{{ item }}"
    delegate_facts: True
    with_items: "{{ groups['allnodes'] }}"

- name: Update dnsmasq config with custom domain zone for apps
  hosts: allnodes
  tasks:
  - lineinfile:
      path: /etc/dnsmasq.conf
      line: "address=/.{{ app_dns_prefix }}.{{ dns_zone }}/{{ router_ip }}"
  - service:
      name: dnsmasq
      state: restarted

- name: Set External IP address for heketi service
  hosts: single_master
  tasks:
  - command: "python -c \"import yaml ;
        config = yaml.load(open('/etc/origin/master/master-config.yaml', 'r'));
        print(config['kubernetesMasterConfig']['masterIP'])
    \""
    register: master_ipv4
  - set_fact:
      master_ipv4: "{{ master_ipv4.stdout_lines[0] }}"
  - command: "oc patch svc heketi-storage
                  --namespace storage
                  -p '{\"spec\":{\"externalIPs\":[\"{{ master_ipv4 }}\"]}}'"
    run_once: true

# Following updates config file
# which is required for automated tests from 'cns-automation' repo

- name: Update 'cns-automation' config file
  hosts: localhost
  tasks:
  - set_fact:
      master_ipv4: "{{ hostvars[groups['single_master'][0]].master_ipv4 }}"
  - yedit:
      src: "{{ cns_automation_config_file_path }}"
      state: present
      edits:
      - key: openshift.storage_project_name
        value: "storage"
      - key: openshift.heketi_config.heketi_dc_name
        value: "heketi-storage"
      - key: openshift.heketi_config.heketi_service_name
        value: "heketi-storage"
      - key: openshift.heketi_config.heketi_client_node
        value: "{{ master_ipv4 }}"
      - key: openshift.heketi_config.heketi_server_url
        value: "http://{{ master_ipv4 }}:8080"
      - key: openshift.heketi_config.heketi_cli_user
        value: 'admin'
      - key: openshift.heketi_config.heketi_cli_key
        value: "{{ dp_tool_heketi_admin_key }}"
      - key: openshift.dynamic_provisioning.storage_classes
        value:
          file_storage_class:
            provisioner: "kubernetes.io/glusterfs"
            resturl: "http://{{ master_ipv4 }}:8080"
            restuser: "admin"
            secretnamespace: "storage"
            volumenameprefix: "autotests-file"
          block_storage_class:
            provisioner: "gluster.org/glusterblock"
            resturl: "http://{{ master_ipv4 }}:8080"
            restuser: "admin"
            restsecretnamespace: "storage"
            volumenameprefix: "autotests-block"
            hacount: "3"
            chapauthenabled: "true"
    when: cns_automation_config_file_path | length > 0
    run_once: true