The current apb-1.0.4-1.el7.noarch in OpenShift 3.7 enterprise from the rhel-7-server-ose-3.7-rpms channel is currently broken. When you try to list apb’s you will get the following error:
apb push Exception occurred! unsupported operand type(s) for +: 'NoneType' and 'str'
Now I will show you how you can fix this. It is important to follow the steps in the order. If not you will get another “missing configuration error if you install the apb directly from the repo I am adding below. Please also check if there is a new package downstream before you follow the fix instructions.
FIX apb
Step 1. Enable the rhel-7-server-ose-3.7-rpms
[root@host82]# subscription-manager repos --enable=rhel-7-server-ose-3.7-rpms
Step 2. Install the apb package. This will also pull in some dependencies which you need!
[root@host82]# yum -y install apb
Step 3. disable the rhel-7-server-ose-3.7-rpms repo
[root@host82]# subscription-manager repos --disable=rhel-7-server-ose-3.7-rpms
Step 4. remove the apb you just installed. This will not remove the dependencies.
[root@host82]# yum -y remove apb
Step 5. Add the following repo to /etc/yum.repos.d/
[root@host82]# wget https://copr.fedorainfracloud.org/coprs/g/ansible-service-broker/ansible-service-broker-latest/repo/epel-7/group_ansible-service-broker-ansible-service-broker-latest-epel-7.repo -O /etc/yum.repos.d/ansible-service-broker.repo
Step 6. Install the update apb
[root@host82]# yum -y install apb
Fix Done
Step 7. Go read this awesome blog post by Dylan Murray Rocket Chat Ansible Playbook Bundle . We will not use the configs of it. Instead we will go and checkout the following git repository:
[root@host82] https://github.com/RocketChat/Rocket.Chat.AnsiblePlaybookBundle.git rocketchat-apb
Make sure you are logged in as a user with cluster admin rights. In my case I created user during install called admin. This is how you can give admin rights to the user:
[root@host82] oc adm policy add-cluster-role-to-user cluster-admin admin
Step 8. cd into the /dockerhub directory
[root@host82 ]# cd rocketchat-apb/dockerhub
Step 9. Edit the apb.yml file as described in the tutorial I linked to.
Step 10. After you edited the roles deprovision-rocketchat-apb provision-rocketchat-apb you can now build the apb
[root@host82 rocketchat-apb]# apb build Finished writing dockerfile. Building APB using tag: [rocketchat-apb] Successfully built APB image: rocket-apb
Step 11. next push the image
[root@host82 rocketchat-apb]# apb push Didn't find OpenShift Ansible Broker route in namespace: ansible-service-broker. Trying openshift-ansible-service-broker version: 1.0 name: rocketchat-apb description: This APB deploys RocketChat backed by MongoDB bindable: False async: optional metadata: documentationUrl: https://rocket.chat imageUrl: https://github.com/RocketChat/Rocket.Chat.Artwork/blob/master/Logos/rocketcat.png?raw=true dependencies: ['registry.connect.redhat.com/rocketchat/rocketchat:latest', 'registry.access.redhat.com/rhscl/mongodb-32-rhel7'] displayName: RocketChat (APB) longDescription: An APB that deploys RocketChat to OpenShift backed by MongoDB plans: - name: default description: This plan deploys a single RocketChat application backed by MongoDB free: True metadata: displayName: Default longDescription: This plan provides a RocketChat application backed by MongoDB cost: $0.00 parameters: - name: mongodb_user default: rocketchat type: string title: MongoDB Username required: True - name: mongodb_pass default: changeme type: string title: MongoDB Password required: True - name: mongodb_name default: rocketchat type: string title: MongoDB Database Name required: True - name: mongodb_admin_pass default: changeme type: string title: MongoDB Admin Password required: True Found registry IP at: 172.30.224.145:5000 Building image with the tag: 172.30.224.145:5000/openshift/rocketchatldo-apb Successfully pushed image: 172.30.224.145:5000/openshift/rocketchatldo-apb Contacting the ansible-service-broker at: https://asb-1338-openshift-ansible-service-broker.apps.local.redhat-demo.com/ansible-service-broker/v2/bootstrap Successfully bootstrapped Ansible Service Broker Successfully relisted the Service Catalog
Step 11. list the apb to make sure its there
[root@host82 rocketchat-apb]# apb list Didn't find OpenShift Ansible Broker route in namespace: ansible-service-broker. Trying openshift-ansible-service-broker Contacting the ansible-service-broker at: https://asb-1338-openshift-ansible-service-broker.apps.local.redhat-demo.com/ansible-service-broker/v2/catalog ID NAME DESCRIPTION 9fd4268e4b33d8d09292755f1945727c localregistry-rocketchat-apb This APB deploys RocketChat backed by MongoDB 2c259ddd8059b9bc65081e07bf20058f rh-mariadb-apb Mariadb apb implementation 03b69500305d9859bb9440d9f9023784 rh-mediawiki-apb Mediawiki123 apb implementation 73ead67495322cc462794387fa9884f5 rh-mysql-apb Software Collections MySQL APB d5915e05b253df421efe6e41fb6a66ba rh-postgresql-apb SCL PostgreSQL apb implementation
Step 12. Login to OpenShift. Please do NOT launch it yet if you do not have dynamic storage provisioning enabled as the mongo-db needs a persistent volume and you need to adjust the broker-config yet to pull from the correct registry. Go to the openshift-ansible-service-broker project.
The installation for the ansible_service_broker in 3.7 OCP pulls the wrong image so your broker will not run. I submitted a fix here:
https://github.com/openshift/openshift-ansible/pull/6823/files
Make sure the broker is running and has the correct image.
Step 13. Edit the broker config of the apb
Step 14. Add the following to it and save.
Step 15. Re deploy the service broker. You should see a second pod coming up
Step 16. If everything os ok you should see this:
Step 17. If you have dynamic storage provisioning enabled you can now go ahead and build the rocketchat app. If you don’t and you have NFS storage like me, go create the pv
apiVersion: v1 kind: PersistentVolume metadata: name: pv0001 spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce - ReadWriteMany persistentVolumeReclaimPolicy: Recycle nfs: server: 192.168.1.10 path: /volume1/ocpnfs/pv0001
Step 18. Go and create the pv
[root@host82 rocketchat-apb]# oc create -f pv.yml persistentvolume "pv0001" created
Step 19. You are now officially ready to build the rocket chat app. Go to the service catalog and click on it
Step 20. Fill out all information needed. I would recommend to create a new project. Hit create.
Step 21. Go to your project and sit back and enjoy. If everything is build ok you will see the following screen.
Step 22. Click on the link to use the application
Step 23. If you want to remove the apb run apb list and use the uuid with oc delete as shown below.
[root@host82 rocketchat-apb]# oc delete clusterserviceclass 244aa7f02f2b63398eaa055372d64824
A video of the entire process can be seen here: