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