summaryrefslogtreecommitdiffstats
path: root/roles/openshift_node/tasks/main.yml
blob: 67c6387a3db0eb8f68c21f13af172fe600a498a6 (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
---
# TODO: allow for overriding default ports where possible
- fail:
    msg: "SELinux is disabled, This deployment type requires that SELinux is enabled."
  when: (not ansible_selinux or ansible_selinux.status != 'enabled') and deployment_type in ['enterprise', 'online', 'atomic-enterprise', 'openshift-enterprise']

- name: Set node facts
  openshift_facts:
    role: "{{ item.role }}"
    local_facts: "{{ item.local_facts }}"
  with_items:
  - role: common
    local_facts:
      hostname: "{{ openshift_hostname | default(none) }}"
      public_hostname: "{{ openshift_public_hostname | default(none) }}"
      deployment_type: "{{ openshift_deployment_type }}"
      # TODO: Replace this with a lookup or filter plugin.
      dns_ip: "{{ openshift_dns_ip
                  | default(openshift_master_cluster_vip
                  | default(None if openshift.common.version_greater_than_3_1_or_1_1 | bool else openshift_node_first_master_ip | default(None, true), true), true) }}"
  - role: node
    local_facts:
      annotations: "{{ openshift_node_annotations | default(none) }}"
      debug_level: "{{ openshift_node_debug_level | default(openshift.common.debug_level) }}"
      docker_log_driver:  "{{ lookup( 'oo_option' , 'docker_log_driver'  )  | default('',True) }}"
      docker_log_options: "{{ lookup( 'oo_option' , 'docker_log_options' )  | default('',True) }}"
      iptables_sync_period: "{{ openshift_node_iptables_sync_period | default(None) }}"
      kubelet_args: "{{ openshift_node_kubelet_args | default(None) }}"
      labels: "{{ lookup('oo_option', 'openshift_node_labels') | default( openshift_node_labels | default(none), true) }}"
      portal_net: "{{ openshift_master_portal_net | default(None) }}"
      registry_url: "{{ oreg_url | default(none) }}"
      schedulable: "{{ openshift_schedulable | default(openshift_scheduleable) | default(None) }}"
      sdn_mtu: "{{ openshift_node_sdn_mtu | default(None) }}"
      storage_plugin_deps: "{{ osn_storage_plugin_deps | default(None) }}"
      set_node_ip: "{{ openshift_set_node_ip | default(None) }}"
      node_image: "{{ osn_image | default(None) }}"
      ovs_image: "{{ osn_ovs_image | default(None) }}"

# We have to add tuned-profiles in the same transaction otherwise we run into depsolving
# problems because the rpms don't pin the version properly. This was fixed in 3.1 packaging.
- name: Install Node package
  action: "{{ ansible_pkg_mgr }} name={{ openshift.common.service_type }}-node{{ openshift_version  }},tuned-profiles-{{ openshift.common.service_type }}-node{{ openshift_version  }} state=present"
  when: not openshift.common.is_containerized | bool

- name: Install sdn-ovs package
  action: "{{ ansible_pkg_mgr }} name={{ openshift.common.service_type }}-sdn-ovs{{ openshift_version }} state=present"
  when: openshift.common.use_openshift_sdn and not openshift.common.is_containerized | bool

- name: Install Node docker service file
  template:
    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-node.service"
    src: openshift.docker.node.service
  register: install_node_result
  when: openshift.common.is_containerized | bool
  
- name: Create openshift.common.data_dir
  file: 
    path: openshift.common.data_dir
    state: directory
    mode: 0755
    owner: root
    group: root
  when: openshift.common.is_containerized | bool

- name: Install OpenvSwitch docker service file
  template:
    dest: "/etc/systemd/system/openvswitch.service"
    src: openvswitch.docker.service
  register: install_ovs_result
  when: openshift.common.is_containerized | bool and openshift.common.use_openshift_sdn | bool

- name: Reload systemd units
  command: systemctl daemon-reload
  when: openshift.common.is_containerized and ( ( install_node_result  | changed )
    or ( install_ovs_result | changed ) )

- name: Start and enable openvswitch docker service
  service: name=openvswitch.service enabled=yes state=started
  when: openshift.common.is_containerized | bool and openshift.common.use_openshift_sdn | bool

# TODO: add the validate parameter when there is a validation command to run
- name: Create the Node config
  template:
    dest: "{{ openshift_node_config_file }}"
    src: node.yaml.v1.j2
    backup: true
  notify:
  - restart node

- name: Configure Node settings
  lineinfile:
    dest: /etc/sysconfig/{{ openshift.common.service_type }}-node
    regexp: "{{ item.regex }}"
    line: "{{ item.line }}"
    create: true
  with_items:
    - regex: '^OPTIONS='
      line: "OPTIONS=--loglevel={{ openshift.node.debug_level }}"
    - regex: '^CONFIG_FILE='
      line: "CONFIG_FILE={{ openshift_node_config_file }}"
  notify:
  - restart node

- name: Additional storage plugin configuration
  include: storage_plugins/main.yml

- name: Start and enable node
  service: name={{ openshift.common.service_type }}-node enabled=yes state=started
  register: start_result

- set_fact:
    node_service_status_changed: start_result | changed