Solution Recipe: Deploy all IBM Open Enterprise Languages with the easy button …
./run-deploy-oel-dev-env.sh --tags=oel-dev
Welcome to the Sweet Solutions blog. In my first post, I provide a solution-recipe
to introduce the Solution Enablement Ansible Automation (SEAA) framework and use it to deploy IBM Open Enterprise Languages as a Service. Let’s get started.
Deploy Open Enterprise Languages-aaS
Ingredients
- IBM Open Enterprise Languages
- IBM Z and Cloud Modernization Stack
- IBM z/OS Cloud Broker
- Wazi Sandbox (or other IBM z/OS endpoint)
- IBM z/OS Package Manager
- RedHat Ansible
- RedHat OpenShift
- Solution Enablement Ansible Automation (SEAA) framework
Setting the Table
Introduction
IBM Z and Cloud Modernization Stack is a relatively new and exciting offering from IBM that provides multiple components that clients can use as a part of their z/OS modernization journey. The stack has components that assist with modernizing existing and new z/OS application development scenarios. For more information on the stack components see the overview here.
Solution Overview
In this post, I will dive into a specific scenario using IBM z/OS Cloud Broker and the SEAA framework to automate the deployment of IBM Open Enterprise Languages, with a single command. The framework leverages native Kubernetes, OpenShift, and IBM z/OS Cloud Broker’s API’s and Ansible to deploy resources. The SEAA framework provides a prescriptive model based on tags and configuration variables provided. These values determine how the automation interacts with the underlying systems and the user. In the following sections, I will outline steps that can be used to deploy the IBM Open Enterprise Languages using the SEAA framework.
Gather Target Hosts Information
Before jumping in, let’s gather some information about your target environments. Make a note of the following information as it will be used later to create an Ansible inventory file used by the framework to deploy resources.
Step 1: Get OpenShift host and resource information
- Determine API server for OpenShift cluster.
-
Get API Server from OpenShift UI (click for video)
- OR - from Command line
-
- Decide on the login method to use.
-
Get login Auth Token from OpenShift UI. (click for video)
If you use this method, copy the token provided, which will be used as the `cluster_auth_token` in the inventory.yaml file created later in this post.
- OR - use 1Password Integration
-
- Determine PVC resource usage.
- If you are planning on using persistent volume storage when deploying IBM z/OS Cloud Broker (recommend)
- Determine the
storage class
to use on OpenShift cluster, volumeMode must be aFileSystem
. See the persistent volumes and storage class documentation for more information. - Option 1: The default storage class used by the SEAA framework is
rook-cephfs
and can be changed here. - Option 2: Override per
ocphost
in theinventory
file or by passing inpvc_storage_class_name
as an Ansible extra-vars.
- Determine the
- Not planning on using persistent volume storage when deploying IBM z/OS Cloud Broker
- Set broker PVC
broker_instance_storage_configure
andbroker_instance_storage_enabled
variable tofalse
here.
- Set broker PVC
- If you are planning on using persistent volume storage when deploying IBM z/OS Cloud Broker (recommend)
Step 2: Get z/OS endpoint information.
- Create or Select an existing z/OS Endpoint user ID and SSH credentials that will be used to connect from OpenShift to the z/OS Endpoint, make sure userid has appropriate authorization on the z/OS Endpoint to install the desired languages:
- Userid for z/OS Endpoint with SSH public key deployed
- SSH private key file for user ID
- Passphrase for user ID (if required)
- Allocated or select a directory that has at least 8G capacity for the ZPM Install and one that has 4G capacity for the ZPM state directory, see storage requirements topic for more info:
- Default ZPM install directory:
/usr/lpp/zpm
- Default ZPM state directory:
/var/zpm
- Default ZPM install directory:
Directions
Okay! So as you can see, I am really taking this solutions recipe
thing seriously. Now that the table is set, let’s get the code and deploy some open enterprise languages.
Step 1: Clone, set up, and configure.
- Clone the zmodstack-solution repo.
- Setup workstation.
- Configure SEAA framework on your workstation.
Step 2: Create an inventory file.
- Copy the sample-inventory.yaml file and create a
inventory.yaml
file in your configured SEAA inventory directory.- default directory location:
${SEAA_CONFIG_PATH_TO_SE_ANSIBLE_ARTIFACTS}/playbooks/inventory
- default directory location:
- Update the newly copied
inventory.yaml
file based on the values decided on from Gather Target Hosts Information section above.
Creating and updating an inventory file. (click for videos)
Part I: Copying sample inventory and updating 'ocphosts' hosts.
Part II: Updating 'zosendpoints' hosts.
Step 3: Run Deploy Playbook script
- By default, the SEAA framework deploys the current GA versions of stack components. So, there’s no need to change any default variables if that is the desired installations of IBM z/OS Cloud Broker, IBM Z/OS Package Manager, and IBM Open Enterprise Languages.
- Open the terminal to the run_scripts directory and run the following command:
./run-deploy-oel-dev-env.sh --tags=oel-dev
Watch Videos for Deploying IBM Open Enterprise Languages-aaS
Part I: Smart deploying z/OS Cloud Broker and z/OS Package Manager
Part II: View continuation of deploying IBM Open Enterprise Languages
Wrap Up Next Steps
And with that, you are all set!!!
You’ve successfully used the SEAA framework to deploy IBM Open Enterprise Languages. Thanks for following along with my first solution recipe
. If you stop by for a moment, you will see that by now you have the following deployed resources:
- On OpenShift
- OpenShift Project
- OpenShift secrets for the z/OS Endpoint user
- IBM z/OS Cloud Broker Operator and custom resources
- IBM z/OS Package Manager Sub-Operator
- Custom resources for z/OS Products and Validations
- OpenShift Project
- On z/OS endpoint
- IBM z/OS Package Manager
- IBM Open Enterprise Languages
- IBM z/OS Package Manager
The steps outlined in this post provided an introduction to how to use the SEAA framework to deploy components of the stack with this single command. There are several other ways the framework can be used to deploy resources to OpenShift and z/OS endpoints. For example, the SEAA framework could be used to ‘generate’ YAML files that can be deployed, managed, and shared from a source control management (SCM) system. Please visit the zmodstack-solutions repo for more info.
Okay! So full disclosure, I did not show an “easy button”. However, the command used here can easily be added as part of a CI/CD pipeline to deploy open enterprise languages-aaS. Keep an eye out for future solutions posts or send any suggested topics for consideration to sweet-solutions@gmail.com
. Here are some potential future topics …
- Generating YAML for resource deployment
- Deploying with SEAA framework in OpenShift pipelines
- Purging IBM Z and Cloud Modernization Stack resources
Special Thanks
I would like to thank Mike Fulton for the motivation and wisdom to create the ability to Deploy IBM Open Enterprise Languages-aaS, Igor Todorovski for his assistance in getting this blog site up and running, and Sri Ram Pisupati for his post reviews and edits.