Container Native Storage (CNS) is implemented in OpenShift as pods. These pods are created from a template that is built into OpenShift. After an automated install, we want to make sure we have the latest template, and the latest containers when using the Advanced Installer. While typically this is a multi-step manual process, an Ansible Script makes this a lot simpler.
Let's walk through the update using an Ansible script. First, we add the gluster channel on one of the CNS nodes. Next, we will update the herketi client and the CNS deployer. During this update, the gluster OpenShift templates are updated. We need that in order to update the template inside OpenShift. The fetch, with the flat, copies it from the CNS node.
In the next step, we make sure we are in the right project, and we delete the daemon set. As this is designed to run before a workload is on CNS, we delete the pods and the daemon set.
The following step deletes the template for Gluster inside of OpenShift.
In the new version, the nodes are labeled differently. This uses a local_action to run it directly on the bastion host. You will note the command will run multiple times locally with the node names changing.
At this point, we load the new template and recreate the CNS daemon set.
The original instructions for this are here in Chapter 13.3. And a gist of the code is here.
- hosts: cns01 vars: description: "get updated templates for cns" tasks: - name: add cns channel shell: subscription-manager repos --enable=rh-gluster-3-for-rhel-7-server-rpms - name: install latest cns-deploy package yum: name="cns-deploy" state=latest - name: install latest herketi packages yum: name="heketi-client" state=latest - name: remove cns channel shell: subscription-manager repos --disable=rh-gluster-3-for-rhel-7-server-rpms - name: Copy templates from cns01 to bastion for /usr/share/heketi/templates fetch: src: /usr/share/heketi/templates/glusterfs-template.yaml dest: glusterfs-template.yaml flat: yes - hosts: master1 tasks: - name: use gluster project shell: oc project glusterfs - name: delete daemon set command: oc delete ds glusterfs ignore_errors: yes - name: Delete Old Templates shell: oc delete templates glusterfs ignore_errors: yes - hosts: glusterfs tasks: - name: relabel nodes local_action: command oc label nodes {{ansible_hostname}} storagenode=glusterfs --overwrite - hosts: localhost tasks: - name: Use new template local_action: command oc create -f glusterfs-template.yaml - name: Wait for distribution of template pause: seconds: 10 - name: Deploy the template local_action: shell oc process glusterfs | oc create -f -
Take advantage of your Red Hat Developers membership and download RHEL today at no cost.
Last updated: September 3, 2019