--- - name: Gather and set facts for node hosts hosts: oo_nodes_to_config roles: - openshift_facts tasks: # Since the master is registering the nodes before they are configured, we # need to make sure to set the node properties beforehand if we do not want # the defaults - 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 }}" - role: node local_facts: external_id: "{{ openshift_node_external_id | default(None) }}" resources_cpu: "{{ openshift_node_resources_cpu | default(None) }}" resources_memory: "{{ openshift_node_resources_memory | default(None) }}" pod_cidr: "{{ openshift_node_pod_cidr | default(None) }}" labels: "{{ openshift_node_labels | default(None) }}" annotations: "{{ openshift_node_annotations | default(None) }}" - name: Create temp directory for syncing certs hosts: localhost connection: local sudo: false gather_facts: no tasks: - name: Create local temp directory for syncing certs local_action: command mktemp -d /tmp/openshift-ansible-XXXXXXX register: mktemp changed_when: False - name: Register nodes hosts: oo_first_master vars: openshift_nodes: "{{ hostvars | oo_select_keys(groups['oo_nodes_to_config']) }}" sync_tmpdir: "{{ hostvars.localhost.mktemp.stdout }}" roles: - openshift_register_nodes tasks: # TODO: update so that we only sync necessary configs/directories, currently # we sync for all nodes in oo_nodes_to_config. We will need to inspect the # configs on the nodes to make the determination on whether to sync or not. - name: Create the temp directory on the master file: path: "{{ sync_tmpdir }}" owner: "{{ ansible_ssh_user }}" mode: 0700 state: directory changed_when: False - name: Create a tarball of the node config directories command: tar -czvf {{ sync_tmpdir }}/{{ item.openshift.common.hostname }}.tgz ./ args: chdir: "{{ openshift_cert_dir }}/node-{{ item.openshift.common.hostname }}" with_items: openshift_nodes changed_when: False - name: Retrieve the node config tarballs from the master fetch: src: "{{ sync_tmpdir }}/{{ item.openshift.common.hostname }}.tgz" dest: "{{ sync_tmpdir }}/" fail_on_missing: yes validate_checksum: yes with_items: openshift_nodes changed_when: False - name: Configure node instances hosts: oo_nodes_to_config gather_facts: no vars: sync_tmpdir: "{{ hostvars.localhost.mktemp.stdout }}/{{ groups['oo_first_master'][0] }}/{{ hostvars.localhost.mktemp.stdout }}" openshift_sdn_master_url: "https://{{ hostvars[groups['oo_first_master'][0]].openshift.common.hostname }}:4001" pre_tasks: - name: Ensure certificate directory exists file: path: "{{ openshift_node_cert_dir }}" state: directory # TODO: notify restart openshift-node and/or restart openshift-sdn-node, # possibly test service started time against certificate/config file # timestamps in openshift-node or openshift-sdn-node to trigger notify - name: Unarchive the tarball on the node unarchive: src: "{{ sync_tmpdir }}/{{ openshift.common.hostname }}.tgz" dest: "{{ openshift_node_cert_dir }}" roles: - openshift_node - { role: openshift_sdn_node, when: openshift.common.use_openshift_sdn | bool } - { role: fluentd_node, when: openshift.common.use_fluentd | bool } tasks: - name: Create group for deployment type group_by: key=oo_nodes_deployment_type_{{ openshift.common.deployment_type }} changed_when: False - name: Delete the temporary directory on the master hosts: oo_first_master gather_facts: no vars: sync_tmpdir: "{{ hostvars.localhost.mktemp.stdout }}" tasks: - file: name={{ sync_tmpdir }} state=absent changed_when: False - name: Delete temporary directory on localhost hosts: localhost connection: local sudo: false gather_facts: no tasks: - file: name={{ mktemp.stdout }} state=absent changed_when: False # Additional config for online type deployments - name: Additional instance config hosts: oo_nodes_deployment_type_online gather_facts: no roles: - os_env_extras - os_env_extras_node