Merlin 1.0 Documentation
Merlin 1.0 Documentation
IBM
© Copyright IBM Corp. 2022.
US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
Tables of Contents
Welcome 1
Overview 1
Architecture Introduction 1
Known limitations 2
Security considerations 3
Accessibility 9
Administrator Guide 9
OpenShift Administrator Guide 10
Install IBM i Modernization Engine for Lifecycle Integration 10
Install IBM i Modernization Engine for Lifecycle Integration online 11
Install IBM i Modernization Engine for Lifecycle Integration in airgap environment 17
Manage browser certificates 25
Upgrade MERLIN platform and tools 26
Backup and restore 27
Data Storage for Merlin 35
Tracking license consumption of Merlin 36
Merlin Administrator Guide 37
Manage connections 37
Manage Inventory 37
Manage Credentials 39
Manage Templates 41
Manage MERLIN users and authorities 43
Manage Rest APIs on IBM i 50
Monitor resources for MERLIN tools 50
Manage Vault 52
Enable Forgot Password 53
User guide 59
Manage browser certificates 25
Manage connections 37
Manage Inventory 37
Manage Credentials 39
Manage Templates 41
Manage IBM i Servers 66
Manage the lifecycle of MERLIN tools 69
Update Password 75
Tools 77
IBM i Developer Integrated Development Environment 77
Getting Started 78
Overview 79
Git Integration 89
IBM i Projects 91
Editing 100
Editing RPG 100
Editing SQL 105
Developer build 107
Settings 112
CI/CD 114
Access IBM i CICD 114
Deploy and initialize IBM i CICD 115
Work with IBM i CICD profiles 118
Work with Jenkins 121
Resources 125
IBM i Modernization Engine for Lifecycle Integration
IBM i Modernization Engine for Lifecycle Integration is a set of tools run in OpenShift containers which guide
and assist software developers in the modernization of IBM i applications, allowing them to realize the value
of a hybrid cloud, multi-platform
DevOps implementation.
IBM i Modernization Engine for Lifecycle Integration (Merlin) is a set of tools run in OpenShift containers
which guide and assist software developers
in the modernization of IBM i applications, allowing them to
realize the value of a hybrid cloud, multi-platform DevOps implementation.
After the installation of IBM i CI/CD finished, wait some more time and try again if meets 504 or
Application not found error when launching IBM i CI/CD.
Only Admin user can Initialize Jenkins and Enable ARCAD Integration.
Security considerations
There are several aspects that need to be considered to ensure operating in a secure environment.
This topic provides security recommendations for setting up Data In Motion Encryption (DIME), Data At Rest
Encryption (DARE), Network Policies and Certificates. It is intended to help you create a secure
implementation of the application.
Data at rest
All user sensitive data at rest is stored in Hashicorp Vault. Hashicorp Vault is used to secure, store and tightly
control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive
data using a UI, CLI,
or HTTP API. Merlin leverages HashiCorp Vault as the Active Encryption solution to store
sensitive data such as credentials. Users do not need to directly work with HashiCorp Vault. Vault encrypts
Data in motion
Data in motion is encrypted using transport layer security (TLS 1.2) to secure all inbound and outbound
requests from MERLIN.
Network Policies
Network Policies are an application-centric construct which allow Merlin to specify how a pod is allowed to
communicate with various network "entities" over the network. NetworkPolicies apply to a connection with a
pod on one or both ends,
and are not relevant to other connections.
engine - defines that 'engine-0' pod is only allowed to be accessed by other pods, which are in the
same namespace and owned by same MERLIN instance, and the workspaces created by the same
MERLIN instance.
postgres - defines that the 'postgres-0' can only be accessed by engine, vault, keycloak pods in the
same namespace.
keycloak - defines that the 'keycloak-0' can only be accessed by engine, vault pods in the same
namespace.
vault - defines that the 'vault-0' can only be accessed by engine pod in the same namespace.
Merlin first creates a SelfSigned issuer resource, the SelfSigned issuer is for initially bootstrapping a CA issuer.
Then issue a root certificate and use that root as a CA issuer. The CA issuer will sign Merlin services certificate
based on the
private key.
The CA certificate stored in secret merlin-ca-secret, and the Merlin services certificate stored in secret
merlin-https-cert.
There 2 steps to do if you want to use custom certificate both for Merlin services and routes:
To use a custom certificate for Merlin services, manually create the merlin-ca-secret which contains
the TLS key and certificate under the same namespace within Merlin before installing the Merlin.
When installing Merlin, Merlin will not create the root CA but use the custom one as the root CA to sign the
Merlin services certificate.
Note: You should prepare the tls.crt and tls.key before run the command.
merlin-ca-secret
merlin-credential-secret
merlin-https-cert
merlin-jks-pkcs12-secret
merlin-third-party-cert
After the customer downloads the images to their Bastion server, they must do image signature verification
before they transfer the downloaded images to their disconnected network. Customers have the option to
disable image signature verification,
but this is a customer specific setting. There are a few different options
that can be used to verify the image signature, depending on the tooling the customer has, and this section
will provide some examples and guidance around verifying the
image signature. For more detailed signature
verification documentation visit the IBM CISO Code Sign Service Documentation.
Portieris
Portieris is the open source version of CISE, which is an admission controller for Kubernetes. Portieris is being
enhanced to support Red Hat signed image verification, and this will work out of the box on Red Hat
OpenShift. The admission controller
will be installed to the cluster, and only allow images it can verify to be
spun up and ran inside your cluster.
In OCP 4, signature validation for Red Hat signed images comes automatically when the image is pulled to the
platform. The /etc/containers/policy.json file is what drives the verification of image signatures in OCP. Follow
these steps to configure
automatic signature verification on OCP 4:
Note: If the customer wants to take advantage of this feature for oc image, then the public key for your offering
must be imported to the disk of the machines for the cluster
a. /etc/containers/policy.json
b. Any connection info files for the registry pulling images from ex: us.icr.io.yaml
4. Create a machine config that will write those files to disk on the worker nodes
5. Apply the machine config yaml to the cluster
6. Repeat for the master nodes
7. Verify the changes took place by describing themachine configs, refer to
https://docs.openshift.com/container-platform/4.9/security/container_security/security-container-
signature.html
variant: openshift
version: 4.9.0
metadata:
name: 99-master-trust
labels:
machineconfiguration.openshift.io/role: master
storage:
files:
- path: /etc/pki/rpm-gpg/public.gpg
mode: 0644
overwrite: true
contents:
inline: |
mQINBGJzE4ABEADKNTEbo7Ki1BjcaK8tU9TEA1ce8oracBAp3Z8JKbf+VPLtU5yK
972DkRSAxSohPNQZWuDgdmdxuamtEnXcVZLHpx6YM1YfGTP+DLoo2Cv42tXssZsU
TYDuSVlvpiKZHhpWgt/oPpkIWkd81QSO60iEZq9UdVEdaNGYJ321v8uFnC/sJPWJ
FTrEvTH4Veyt8XUJpE20rpNedwB4uVnSaMrkrxgGzG0HPPndQ6cpU8lgWsqicSk2
NhCqqHsVoGpaxQDkPyhOzM1P47TwREQ2NluwzizaNJiuWqouJH69pKIBhqxIWz6h
0J02EH5A6o0nrYbrX20TSiQX0Z/zQMyG+qHt85ijgXtilv0NUe3eTormeMi4YdpL
QsMbSkq1FUVv3mkR17kmEw+ZwM1rg45biJohwohYpBR8YCM3Z6U5zOawkQ70WVK3
LbsbghJJWJ2J6Hfx9t32ms6LJ8Lfy1Q1WuSqfG7v/bjCcNVYHqhOcmo6+a3O17cv
Vhlfd8ffwsBwn+Q4PizkVKDtJ+T2yydmEAgtVbg5l/X7g8TuLiIh1YZTN3f/+zgh
2GQgjfy/5t3FGiiPMxxTKA4M1q5fMSDeFAEfZ4352uTMp9B54X3cEzrgcRpRWn75
2TzMQBvtDrNp48W3a5uKZomlKNfgvm8aOXVSQ0eTFKFC3v7YyfA12ZkeGwARAQAB
tAZtZXJsaW6JAjkEEwEIACMFAmJzE4ACGy8HCwkIBwMCAQYVCAIJCgsEFgIDAQIe
AQIXgAAKCRB9W6yKcTS3rWLaD/9LwJdiaxJbVH02mAHV4Fz8XQuwR3Nnk6HL4nzi
zcEh1AFT5CqksnSl1NO2OSG3Jq+7b2BIb8m3s7bOqW0wxEi8xgEQEJvM7AnI6uv2
31LN77UlxnmWyM4NhVqqTyln4rRbR8Ot5bH+hk4N4gb/ZKYtp//4yYazzFsJO7Gr
WzqJiMbX9FKhx7c2UfApOxF8ct4V/vk9IdBJtZs/DfPu+eI1OCxuXYDDp5aPUhjG
Rs+yaJIioDkI2ncSgTjPIKyKDLPNm8ZoPjs/vSTLjqX6cJcjVvTslFlaSnqJC3qQ
UmnPweRNCTtoQ3uSopk2pwbBEaAusU+pvc3zaRyYiST80neiQPP5bjHLEWwDzlV2
g6FJdQiap0PpX2owqTZdGK7oMxwWoTWp34ON1VzFyuJlJXCjhbBDyMELYON03Ns6
slsAdJLmW1r+knfpneFnon8srHxMe1ZgtBmVW0QKQN6x/ag/XX5poQyEPoChzzWV
dKWJbIodZkxkbN6dCkq1kCFcwh4n8UlsLuQjc+Kzwi6odFqayRukUwxZV4XdPMIH
UaL23WYfvVjI/S/xbaRYx+EMdGsshqISyc6zRZGvu+eB4CJRMkJ/1Ki7Xd+qoxpi
3a007g==
=RQuM
- path: /etc/containers/policy.json
mode: 0644
overwrite: true
contents:
inline: |
"default": [
"type": "insecureAcceptAnything"
],
"transports": {
"docker": {
"cp.icr.io": [
"type": "signedBy",
"keyType": "GPGKeys",
"keyPath": "/etc/pki/rpm-gpg/public.gpg"
],
"icr.io": [
"type": "signedBy",
"keyType": "GPGKeys",
"keyPath": "/etc/pki/rpm-gpg/public.gpg"
},
"docker-daemon": {
"": [
"type": "insecureAcceptAnything"
Note:If using podmanto do the image pull and verification, then a $podman login to the entitled registry is
all that is required to provide the necessary auth information.
"auths": {
"us.icr.io": {
},
...
/etc/containers/policy.json
"default": [
"type": "insecureAcceptAnything"
],
"transports": {
"docker": {
"cp.icr.io": [
"type": "signedBy",
"keyType": "GPGKeys",
"keyPath": "PATH_TO_PUBLIC_GPG_KEY_ON_MACHINE"
},
"docker-daemon": {
"": [
"type": "insecureAcceptAnything"
"default": [
"type": "insecureAcceptAnything"
],
Accessibility
Accessibility features assist users who have a disability, such as restricted mobility or limited vision, to use
information technology content successfully.
Overview
To take advantage of accessibility features, use the latest release of your screen reader and the latest web
browser that is supported by IBM i Modernization Engine for Lifecycle Integration.
Keyboard navigation
This product uses standard navigation keys.
Interface information
The IBM i Modernization Engine for Lifecycle Integration online product documentation is available in IBM
Knowledge Center, which is viewable from a standard web browser.
To enable your screen reader to accurately read syntax diagrams, source code examples, and text that
contains period or comma symbols, you must set the screen reader to speak all punctuation.
Vendor software
IBM i Modernization Engine for Lifecycle Integration includes certain vendor software that is not covered
under the IBM license agreement. IBM makes no representation about the accessibility features of these
products. Contact the vendor for accessibility
information about its products.
TTY service 800-IBM-3383 (800-426-3383) (within North America) For more information about the
commitment that IBM has to accessibility, see IBM Accessibility.
Capabilities:
Tool Lifecycle
Authentication
Certification Management
User Management
Monitoring
Inventory Management
Credential Management
IBM i VM Management
IBM i Software Installer
One of the main inhibitors to installing an Operator more than once to a cluster is the lifecycle of the
CustomResourceDefinition (CRD) API. The CRD is an API interface that the Operator watches on the cluster.
New and emerging requirements will
cause this API to evolve over time. When this API evolves, it can lead to
the need to convert one version of the API to another, or to breaking API changes.
In Kubernetes, this is handled via a conversion webhook, which is a cluster scoped resource. This means that
if more than one version of an Operator is installed on a cluster and they have different conversion webhooks,
there is a leader election
problem. The Kubernetes control plane does not know which conversion webhook
version to pick. This can lead to many problems in an installation/upgrade for an Operator and the resources it
manages. Operators are designed to be extensions of the
control plane and not multi-tenant on the cluster.
The applications they manage can be multi-tenant on the cluster, but the Operator cannot.
The Custom Resource API Versioning page goes into more details on this and this page will call out some high
level topics to be aware of.
Log in to the OpenShift cluster with oc login before performs any steps that use the Red Hat® OpenShift®
Container Platform command-line interface (CLI).
Preparation procedure
Complete these prerequisite tasks to prepare for the IBM i Modernization Engine For Lifecycle Integration
installation.
Install OpenShift
Install the OpenShift CLI
Configure storage
Create a custom project (namespace)
Install OpenShift
IBM i Modernization Engine For Lifecycle Integration requires OpenShift to be installed and running. An
administrative access to the OpenShift cluster is required.
Install OpenShift using the instructions in Installing Red Hat OpenShift Container Platform.
Configure storage
The storage configuration must satisfy the sizing requirements. For more information on the storage classes
that are needed for installing IBM i Modernization Engine For Lifecycle Integration, see Configure a default
storage class.
A project is a Openshift namespace. a custom project (namespace) must be created and not use the default,
kube-system, kube-public, openshift-node, openshift-infra, or openshift projects (namespaces). This is
because IBM i Modernization Engine For
Lifecycle Integration uses Security Context Constraints (SCC), and
SCCs cannot be assigned to pods created in one of the default OpenShift projects (namespaces).
Create the entitlement key secret with either of the following methods:
Obtain the entitlement key that is assigned to the IBMid. Log in to MyIBM Container Software Library Opens in
a new tab with the IBMid and password details that are associated with the entitled software. Then configure
the global image pull secret
on the Openshift environment.
Extract the current global image pull secret from the cluster into a file in the current directory named
.dockerconfigjson:
Create a base64 encoded string with entitled registry userid and password:
Edit the .dockerconfigjson file and ADD a new JSON object to the auths object to it with the credentials
for the staging repository. For example:
"cp.icr.io": {
"auth": "Replace-With-The-Encoded-String-Got-In-Last-Step",
"email": "Replace-With-Your-Email"
Update the global image pull secret with the updated credentials:
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: ibm-operator-catalog
namespace: openshift-marketplace
spec:
displayName: ibm-operator-catalog
sourceType: grpc
image: icr.io/cpopen/ibm-operator-catalog:latest
Go to Administration > Cluster Settings. Under Global Configuration > OperatorHub > Sources, verify
that the ibm-operator-catalog CatalogSource object is present.
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: ibm-operator-catalog
namespace: openshift-marketplace
spec:
displayName: ibm-operator-catalog
sourceType: grpc
image: icr.io/cpopen/ibm-operator-catalog:latest
EOF
Verify that the ibm-operator-catalog CatalogSource object is present, and is returned by the following
command.
Example output:
Create an Operator group in the custom project (namespace), or the Merlin operator will not install. There
might be an Operator group for managing a namespace for given APIs. If there is an Operator group for the
namespace, do not create a second
one.
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: merlin-operator-group
namespace: <namespace>
spec:
targetNamespaces:
- <namespace>
EOF
Where
is the project (namespace created earlier in Create a custom project (namespace).
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: ibmi-merlin-operator
namespace: <namespace>
spec:
channel: v1.0
installPlanApproval: Automatic
source: ibm-operator-catalog
sourceNamespace: openshift-marketplace
EOF
Where
is the project (namespace) created earlier, such as merlin.
After a few minutes, the operator is installed. Verify that the all components are in the Succeeded state by
running the following command:
Where
is openshift-operators if using the AllNamespaces installation mode, or the project (namespace)
created earlier in Create a custom project (namespace) if using the OwnNamespace installation mode. For
more information about installation modes,
see Operator installation mode.
1. Click on 'Installed Operators' under 'Operators' section in the left navigation panel of OCP.
2. Two operators will be shown. Click the link of 'IBM i Modernization Engine for LifeCycle Integration'
operator.
3. Click on 'Details' tab of Operator details page.
4. Click on the link of 'Create Instance' of Merlin.
5. Fill in the following items
* Name
* Pull Policy
* StorageClassName
* ConfigurationProfileName
* License
* Version
Status:
Conditions:
Status: True
Type: DependenciesSatisfied
Status: True
Type: Reconciled
Op Version: 1.0.0
* Application URL: The 'Application URL' status property is a string flag that
stands for the URL of Merlin install.
* Conditions:
The 'Reconciled' condition, for example, will be set 'True' when all of the Pods
are 'Ready'.
1. After Merlin has been deployed, the Merlin URL can be obtained from the Networking->Routes.
* engine
* keycloak
* merlin
* postgres
* vault
* merlin
* keycloak
* rest
oc get networkpolicy
Prerequisites
Prepare a bastion host
Prepare a local Docker registry
Prepare the multi-architecture registry
Configure the registry
Prerequisites
An OpenShift Container Platform cluster must be installed. For the supported OpenShift Container Platform
versions, see Supported OpenShift versions and platforms.
The cluster must meet the resource requirements, see Supported OpenShift versions and platforms.
A bastion server must be configured. For more information, see Prepare a bastion host.
A local Docker registry that is accessible from both the bastion server and the OpenShift Container Platform
cluster nodes must be available. For more information, see Prepare a Docker registry.
yum check-update
Install httpd-tools.
Install the IBM Cloud Pak® CLI. Install the latest version of the binary file for the platform. For more
information, see cloud-pak-cli Opens in a new tab. Download the binary file.
wget https://github.com/IBM/cloud-pak-cli/releases/download/v<version-
number>/<binary-file-name>
mv <file-name> /usr/local/bin/cloudctl
cloudctl --help
Install the oc OpenShift Container Platform CLI tool. For more information, see OpenShift Container
Platform CLI tools.
Create a directory that serves as the offline store. Following is an example directory. This example is
used in the subsequent steps.
mkdir $HOME/offline
Note: This offline store must be persistent to avoid transferring data more than once. The persistence
also helps to run the mirroring process multiple times or on a schedule.
Below are the steps in Prepare the multi-architecture registry to create a multi-architecture registry.
Docker Prerequisites
A Red Hat® Enterprise Linux® (RHEL) server must be used as the registry host.
mkdir -p /opt/registry/{auth,certs,data}
cd /opt/registry/certs
Generate a certificate.
openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -
out domain.crt
Specify the two-letter ISO country code for the location. See the ISO 3166 country
codes standard.
Common Name (for example, the name or the hostname of the server)
Enter the hostname for the registry host. Ensure that the hostname is in DNS and
that it resolves to the expected IP address.
Email Address
Enter the email address. For more information, see the req description in the
OpenSSL documentation.
Note: For the common name, make sure to enter a hostname that can be resolved to an IP address when log
in to the Docker registry.
Generate a username and a password in the bcrpt format for the registry.
-v /opt/registry/data:/var/lib/registry:z \
-v /opt/registry/auth:/auth:z \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v /opt/registry/certs:/certs:z \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \
-d docker.io/library/registry:2
Note: For the_registry_host_port, specify the port that the Docker registry uses to serve content.
If the registry is behind a firewall, open the ports that the registry requires.
firewall-cmd --reload
cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust
curl -u <registry_user_name>:<registry_password> -k
https://<the_registry_host_name>:<the_registry_host_port>/v2/_catalog
the_registry_host_port is the port that the Docker registry uses to serve content.
{"repositories":[]}
Create a Docker certs folder and place the certificate in the folder.
mkdir -p /etc/docker/certs.d/<the_registry_host_name>:<the_registry_host_port>
cp /opt/registry/certs/domain.crt /etc/docker/certs.d/<the_registry_host_name>:
<the_registry_host_port>/ca.crt
export CASE_INVENTORY_SETUP=merlinOperatorSetup
Download the IBM i Modernization Engine for Lifecycle Integration installer and image
inventory to the bastion host.
cloudctl case save \
--case https://github.com/IBM/cloud-pak/raw/master/repo/case/ibm-merlin-
1.0.0.tgz \
--outputdir $HOME/offline/
--case https://github.com/IBM/cloud-pak/raw/master/repo/case/ibm-merlin-cicd-
1.0.0.tgz \
--outputdir $HOME/offline/
--case https://github.com/IBM/cloud-pak/raw/master/repo/case/ibm-merlin-
development-environment-1.0.0.tgz \
--outputdir $HOME/offline/
Create a Kubernetes namespace for the IBM i Modernization Engine for Lifecycle
Integration
export NAMESPACE=merlin
Configure global pull secret with the entitlement key, see Create the entitlement key
secret
Complete these steps to mirror the images and configure the cluster:
Note: Do not use the tilde within double quotation marks in any command. For example, do not use args "--
registry
--user
--pass
--inputDir ~/offline". The tilde does not expand and the commands might fail.
--case $HOME/offline/${CASE_ARCHIVE} \
--inventory ${CASE_INVENTORY_SETUP} \
--action configure-creds-airgap \
--namespace ${NAMESPACE} \
--tolerance 1
The command stores and caches the registry credentials in a file on the file system in the
$HOME/.airgap/secrets location.
export LOCAL_DOCKER_USER=<username>
export LOCAL_DOCKER_PASSWORD=<password>
Note: The Docker registry uses standard ports such as 80 or 443. If the Docker registry uses a non-standard
port, specify the port by using the syntax
:
. For example, export
LOCAL_DOCKER_REGISTRY=myregistry.local:5000.
--case $HOME/offline/${CASE_ARCHIVE} \
--inventory ${CASE_INVENTORY_SETUP} \
--action configure-creds-airgap \
--namespace ${NAMESPACE} \
--tolerance 1
The command stores and caches the registry credentials in a file on the file system in the
$HOME/.airgap/secrets location.
--case $HOME/offline/${CASE_ARCHIVE} \
--inventory ${CASE_INVENTORY_SETUP} \
--action configure-cluster-airgap \
--namespace ${NAMESPACE} \
--tolerance 1
Optional: If an insecure registry is being used, the local registry must be added to the cluster
insecureRegistries list.
oc get nodes
After the imageContentsourcePolicy and global image pull secret are applied, wait until all the nodes show a
Ready status.
--case $HOME/offline/${CASE_ARCHIVE} \
--inventory ${CASE_INVENTORY_SETUP} \
--action mirror-images \
--tolerance 1
--case $HOME/offline/ibm-merlin-cicd-1.0.0.tgz \
--inventory merlinCicdOperatorSetup \
--action mirror-images \
--namespace ${NAMESPACE} \
--tolerance 1
--case $HOME/offline/ibm-merlin-development-environment-1.0.0.tgz \
--inventory merlinDevelopmentEnvironmentOperatorSetup \
--action mirror-images \
--namespace ${NAMESPACE} \
--tolerance 1
Create the IBM i Modernization Engine for Lifecycle Integration catalog source
Create a catalog source for IBM i Modernization Engine for Lifecycle Integration and
common services.
cloudctl case launch \
--case $HOME/offline/${CASE_ARCHIVE} \
--inventory ${CASE_INVENTORY_SETUP} \
--action install-catalog \
--namespace ${NAMESPACE} \
--tolerance 1
--case $HOME/offline/ibm-merlin-cicd-1.0.0.tgz \
--inventory merlinCicdOperatorSetup \
--action install-catalog \
--namespace ${NAMESPACE} \
--tolerance 1
--case $HOME/offline/ibm-merlin-development-environment-1.0.0.tgz \
--inventory merlinDevelopmentEnvironmentOperatorSetup \
--action install-catalog \
--namespace ${NAMESPACE} \
--tolerance 1
Verify that the catalog sources for the IBM i Modernization Engine for Lifecycle Integration installer and
common services are created.
Create an environment variable for the storage class for the IBM i Modernization Engine for Lifecycle
Integration installation. For more information, see Data Storage for Merlin.
export STORAGE_CLASS=<storage_class_name>
--inventory merlinOperator \
--case $HOME/offline/${CASE_ARCHIVE} \
--namespace ${NAMESPACE} \
--action apply-custom-resources \
--tolerance 1
As the Chrome use the system trust store to verify the CA, the ways to adding CA to system store between
Windows and Mac are different, so both Mac and Windows follow the Download MERLIN CA steps to obtain
the Merlin CA, but follow
different steps: Add the CA to trust store with Windows system or Add
the CA to trust store with Mac system to trust CA.
Click the Not Secure button, and then select the Certificate is not valid item.
Click the Certification Path tab, then click the first CA, and click the View Certificate button.
Click the Details tab in the CA certificate and then click the Copy to File button.
In the Certificate Export Wizard, click the Next button.
Select the DER encoded binary X.509(.CER) and then select Next
Enter the path and name which you want to save the certificate. Then click Next.
Click Finish button
2. Add the CA to trust store with Windows system
If the client is a Windows system, open the folder where the certificate is saved. Double click the
certificate.
In Certificate import Wizard, click the Next button.
Select ‘place all certificate in the following store’ and click browse button.
If client is a Mac system, after saved the certificate, paste it to the Keychain Access which is a
Mac application.
Double click the certificate
Change all items to always trust.
Restart the Chrome browser. Enter the MERLIN address and the Merlin GUI will load
successfully.
Versioning
To understand the upgrade and rollback procedures, it is important to understand how components of IBM i
Developer Tool are versioned. There is a distinction between (1) the OLM operator that abstracts the
installation and management of the components
and (2) the operand that is the components themselves. The
operator represents the IBM i Developer Tool installer. The operand is the set of IBM i Developer Tool
components configured by the resource.
The operator and operand are versioned independently: but each version of the operator can install a range of
the operand. The desired version of the operand is set in the spec.version field of the IBM i Developer
Customer Resource resource.
Procedure
The cluster administrator pulls in an update to the OLM catalog of IBM provided
operators, including updates to the catalog for IBM i Developer Tool.
Based on the OLM Subscription, the IBM i Developer Tool operator is upgraded
either automatically or after manual approval.
This will roll out an update to the operator-controller-manager pod, but the
IBM i Developer Customer Resource component will not be changed.
The change to the desired version triggers reconciliation of the IBM i Developer
Customer Resource resource and upgrades the IBM i Developer Tool components.
Rollback
The versions of the operator and operand are decoupled. A given version of the operator may support multiple
versions of the operand. If an issue is encountered after an upgrade, the previous stable state can be restored
by changing the IBM i Developer
Customer Resource resource’s spec.version back to the previous value. OLM
does not support reverting the version of the installed operator, but this should not be necessary to restore a
stable state to the IBM i Developer Tool components. Procedure
The namespace administrator sets the spec.version field on the IBM i Developer
Customer Resource custom resource back to its previous value.
The change to the desired version triggers reconciliation of the IBM i Developer
Tool components.
Overview
The document introduces the detailed steps for backup and restore IBM i Modernization Engine For Lifecycle
Integration with minio, OADP and a customer plugin ‘cpdbr-velero-plugin’.
oc apply -f 00-minio-deployment.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: minio-config-pvc
namespace: velero
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
storageClassName: nfs-storage-provisioner
resources:
requests:
storage: 1Gi
oc apply -f minio-config-pvc.yml
vim minio-storage-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: minio-storage-pvc
namespace: velero
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
storageClassName: nfs-storage-provisioner
resources:
requests:
storage: 100Gi
oc apply -f minio-storage-pvc.yaml
route.route.openshift.io/minio exposed
Wget https://dl.min.io/client/mc/release/linux-ppc64le/mc
Chomd +x mc
./mc --help
Note: minio and minio123 is the default user and password, which should be find
/velero-v1.7.1-linux-ppc64le/examples/minio/ 00-minio-deployment.yaml
env:
- name: MINIO_ACCESS_KEY
value: "minio"
- name: MINIO_SECRET_KEY
value: "minio123"
./mc mb -p minio/velero
./mc ls minio
Prepare OADP
Search OADP or Velero in openshift console and install it.
Note, The version of OADP must be higher than 0.5.6 and install it. Reference to:
https://github.com/openshift/oadp-operator/blob/apiv1/docs/install_olm.md#create-the-
dataprotectionapplication-custom-resource
vim credentials-velero
[default]
aws_access_key_id=minio
aws_secret_access_key=minio123
apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:
name: velero-sample
namespace: oadp-operator
spec:
backupLocations:
- velero:
config:
region: minio
s3ForcePathStyle: 'true'
s3Url: 'http://minio-velero.apps.amp-fb35.9.5.36.92.nip.io'
credential:
key: cloud
name: cloud-credentials
default: true
objectStorage:
bucket: velero
prefix: cpdbackup
provider: aws
configuration:
restic:
enable: true
velero:
customPlugins:
- image: >-
Your-registry/cpdbr-velero-plugin:4.0.0-beta1-1-ppc64le
name: cpdbr-velero-plugin
defaultPlugins:
- openshift
- aws
– csi
And then wait a moment to check all pods status, make sure all of them ready.
service/oadp-velero-sample-1-aws-registry-svc ClusterIP
172.30.19.147 <none> 5000/TCP 2m1s
service/openshift-adp-controller-manager-metrics-service ClusterIP
172.30.55.104 <none> 8443/TCP 25m
service/openshift-adp-velero-metrics-svc ClusterIP
172.30.67.84 <none> 8085/TCP 2m1s
daemonset.apps/restic 3 3 3 3 3
<none> 2m1s
deployment.apps/oadp-velero-sample-1-aws-registry 1/1 1 1
2m1s
deployment.apps/openshift-adp-controller-manager 1/1 1 1
25m
deployment.apps/velero 1/1 1 1
2m1s
replicaset.apps/oadp-velero-sample-1-aws-registry-678ffd4bd9 1 1
1 2m1s
replicaset.apps/openshift-adp-controller-manager-548768c576 1 1
1 25m
replicaset.apps/velero-5fd9d9b5dd 1 1
1 2m1s
NAME HOST/PORT
PATH SERVICES PORT TERMINATION WILDCARD
route.route.openshift.io/oadp-velero-sample-1-aws-registry-route oadp-velero-
sample-1-aws-registry-route-oadp-operator.apps.amp-fb35.9.5.36.56.nip.io
oadp-velero-sample-1-aws-registry-svc <all> None
wget http://icpfs1.svl.ibm.com/zen/cp4d-builds/4.0.0/dev/utils/cpdbr-
oadp/latest/lib/ppc64le/cpdbr-oadp
chmod +x cpdbr-oadp
Note:
nas3 is the MERLIN operator namespace name. Add additional namespaces after nas, separated by
commas.
nas3backup is the backup instance name, which is replaced with users' namespace.
priority=90
priority=90
priority=90
priority=90
priority=90
priority=90
priority=90
status: succeeded
nas3/deployment/merlin-operator: op=<mode=quiesce,type=pod-scale>,
status=succeeded
nas3/deployment/ibm-common-service-operator: op=<mode=quiesce,type=pod-scale>,
status=succeeded
..................................................................................
..................................................................................
..................................................................................
...........................................
priority=90
priority=90
priority=90
priority=90
priority=90
priority=90
priority=90
status: succeeded
nas3/deployment/merlin-operator: op=<mode=unquiesce,type=pod-scale>,
status=succeeded
nas3/deployment/ibm-common-service-operator: op=<mode=unquiesce,type=pod-
scale>, status=succeeded
post-backup hooks are invoked, but applications may take longer to come up.
please use 'oc get po', 'oc get sts', 'oc get deploy' to check workload status.
Delete the Merlin instance, but make sure the namespace still exist.
Use following command to start restore process
.....................................................
priority=90
priority=90
priority=90
priority=90
priority=90
priority=90
priority=90
status: succeeded
nas3/deployment/ibm-common-service-operator: op=<mode=unquiesce,type=pod-
scale>, status=succeeded
nas3/deployment/merlin-operator: op=<mode=unquiesce,type=pod-scale>,
status=succeeded
post-restore hooks are invoked, but applications may take longer to come up.
Wait a moment and check the pods status in the openshift console, all pods will be ready status.
Note: the merlin-operator-XXX maybe not be ready in time, wait a long time and then it will be ready
status.
Note: If the ibm-common-service-operator-XXXX still not ready, delete the pod and operators, then
install a new one “IBM Cloud Pak foundational services” in the namespace.
Data Storage
IBM i Modernization Engine For Lifecycle Integration requires storage, which must be provisioned before IBM i
Modernization Engine For Lifecycle Integration is installed.
Red Hat® OpenShift® Container Platform uses the Kubernetes persistent volume (PV) framework. PVs are
storage resources in the cluster, and persistent volume claims (PVCs) are storage requests that are made on
those PVs by AI Manager. For more information
about persistent storage in OpenShift clusters, see
Understanding persistent storage Opens in a new tab in the Red Hat OpenShift documentation.
IBM i Developer and IBM i CI/CD can use the same storage providers as IBM i Modernization Engine for
Lifecycle Integration platform.
Note: For more information about access modes, see OpenShift documentation.
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: nfs-storage-provisioner
annotations:
storageclass.kubernetes.io/is-default-class: 'true'
provisioner: nfs-storage
parameters:
archiveOnDelete: 'false'
reclaimPolicy: Delete
volumeBindingMode: Immediate
The storage type is shown for each of the PVs, and is either Filesystem or Block. For more information, see
Block volume support in the Red Hat OpenShift documentation.
IBM i Modernization Engine For Lifecycle Integration persists technical data that is related to configuration
and management of the service in any of the follow
Overview
The integrated licensing solution collects and stores the license usage information which can be used for
audit purposes and for tracking license consumption in cloud environments. The solution works in the
background and does not require any configuration.
Only one instance of the License Service is deployed per
cluster regardless of the number of Cloud Paks and containerized products that you have installed on the
cluster.
To validate whether License Service is deployed and running on the cluster, you can, for example, log in to the
cluster and run the following command:
1/1 Running
For more information about the licensing solution, see License Service documentation.
Manage Connections
IBM i Modernization Engine For lifecycle Integration provides manage connections to support manage and
maintain the systems, credentials, and templates for the overall usage within the tools.
Manage Inventory
Manage Templates
Manage Credentials
Manage Inventory
IBM i Modernization Engine for Lifecycle Integration 37
The inventory works for managing the systems info used for MERLIN. It will save the general system
information including hostname, type, and description and some other information. Now MERLIN supports
four types of hosts, IBM i, Power VC, IBM Cloud,
and Jenkins.
Go to MERLIN GUI, Connections -> Inventory, user will turn to the Inventory page.
All the Inventories which created or got permissions will be shown, it includes Name, Hostname, Type,
Description, Owner, Provision, Created Time, and Updated Time. The Provision item is a tag that specifies the
IBM i server deployed by the Power
VC template.
Add Inventory
Click Add button,
enter the Name, Type and Hostname, after the type selected the required info will be
difference, if one of requirements not meet the +Add button will keep disabled status.
File all necessary fields and click +Add button, then the new inventory record will be imported.
remote CA.
For the security connections, Merlin support Test TLS function, that allow customer to accept the
Such as Power VC Inventory.
Note: Please avoid to use those specific characters .,:;/\"*?<>|=+&%'`@" in Name field. And the
Hostname supports IP, Hostname, and URL.
Delete Inventory
The delete button
is disabled by default, select items in the inventory table, and the selected items will
change to highlight and the delete button change to available status, click the delete button, and
click
yes for the confirmation that will delete all selected items.
Edit Inventory
The Edit button
is disabled by default, select one item in the inventory table, and the selected item will
change to highlight and the Edit button change to available status, click the Edit button, the inventory
info will be shown, all fields are able to be edited except the owner.
Refresh Inventory
Click the refresh button, the MERLIN GUI will get a refresh so that to get the latest inventory info.
Manage Credentials
The Credential works for managing the credential info used for MERLIN. It will save the credential info,
including username, password, ssh key, API token, etc. The detailed credential info will be changed according
to the credential type. Now MERLIN
supports four types of credentials same as the inventory host types.
Go to MERLIN GUI, Connections -> Credentials, user will turn to the Credentials page.
Add Credential
Click the Add button, Add the credential name, and select the credential type, the detailed credential
info will be shown. According to the credential type, the credential info is difference.
For credential
of IBM i as an example, user must enter the username and password of
IBM i server, or
the +Add button will keep disabled. Optionally, ssh key information can be specified. If specified, the
ssh key will be used instead of the password to connect
to the IBM i during the IDE developer build
process.
Note: if using ssh key, additional configuration is performed during connection to the IBM i before the
build starts.
Delete Credentials
The delete button is
disabled by default, Select items in the credentials table, and the selected item
will change to highlight and the delete button change to available status, click the delete button and
click yes to confirm that will delete all selected items.
Note: For the security consideration, when editing the credential, the original credential
information will not be shown, and the user should fill all credential information again.
Refresh Credentials
the MERLIN GUI will get a refresh so that to get the latest credentials
Click the refresh button,
information.
Manage Templates
The Templates work for managing the template info used for MERLIN. It will save the template info, including
Name, Inventory, Credential, type, owner, and description. The credential and type info will be changed
according to the Inventory type.
Now MERLIN supports four types of templates same as the inventory host
types.
Go to MERLIN GUI, Connections -> Templates, user will turn to the Templates page.
For the Admin side, all templates will be shown, but the run action only works on own templates, for the user
side, all own templates will be shown, it includes Name, Inventory, Credential, Type, Owner, Created Time,
and Updated Time by default.
Users also could customize the columns by clicking the icon at the right top of
the table.
Add Template
Click the Add button, add the Template name, and select an inventory, the template type is the same
type as inventory, the credential will be filter to the same type. According to the inventory type, the
other
required fields will be difference.
Use Power VC as example, user must enter
the vm info which used in this template, or the +Add button
Fill all necessary fields, the +Add button will be able to click, click the +Add, the new template info will be
imported to Templates table.
Delete Templates
The delete button
is disabled by default, select items in the Templates table, the selected items will
change to highlight and the delete button change to available status, click the delete button, and click
yes to confirm that will delete all selected items.
Edit Template
The Edit button
is disabled by default, select one item in the Templates table, the selected item will
change to highlight and the Edit button change to available status, click the Edit button, the template
info
will be shown, all fields can be edited except the owner.
Run Template
The Run is disabled by default, select one item in the Templates table, the selected item will change to
highlight, and the run button change to available status. According to the different templates type, the
action will be different.
For the Power VC template,
MERLIN supports the Provision actions, that will help the user to deploy a
new IBM VM, the user should make sure all the hardware configurations have been set up on the Power
VC side.
For the IBM i server template, MERLIN supports Enable Ansible environment, Validate the dependent PTFs,
Install Certificate, Enable IBM i developer environment, and Enable ARCAD environment.
Click the refresh button, the MERLIN GUI will get a refresh so that to get the latest Templates info.
Authorization
Manage Roles
The following roles are supported in Merlin:
Admin – user with the role is the administrator of Merlin and is allowed to manage all aspects of Merlin.
Manager – user with the role is allowed to manage all the resources in Merlin but not allowed to do
user management.
Creator – user with the role is allowed to create projects in Merlin. A user can only be assigned one role
in Merlin. When assign a role to a group, all the members of the group inherits the role automatically.
When revoke a role
from a group, all the members of the group loses the role inherited from the group.
On the left panel of navigation, click Authorization -> Manage Roles to launch the Manage Roles panel. All
the users and groups with specific role is listed on the panel as below
Select users and groups from All Users/Groups list on the left panel, then click the button to move to
Selected Users/Groups list.
Select role for each of the Selected User/Group on the dropdown box for role.
Select the role and click the check icon at the end of the row to save the update.
Manage Permissions
In Merlin, only users with Admin role or Manager role are allowed to access all the resources. Owners are
granted all the access to the resources created by themselves. For normal users, need to get permission
before
access the resources. If an authority against a resource is assigned to a group, all the members of the
group have the permission automatically.
Currently, authority is allowed to be granted against projects and inventories. There are two authority
available in Merlin.
On the left navigation panel, click Authorization -> Manage Permissions to launch Manage Permissions
panel. On the panel, the left tab is the resource name. And the right tab is the different view, from user/group
perspective
or from the resource perspective. Below are samples of permissions to Project list from
user/group perspective and from project perspective.
Select the users and groups from All Users/Groups list and click the button to add to the Selected
Users/Groups list. Then click Next button to next step.
The summary page will list all the permission information just added. If all the information is correct, click
Finish button to make the update.
On the dialog, specify the right authority from Authority dropdown box. Finally click Save button to apply the
change.
Revoke Permission
On By User/Group tab or By Project tab, select a row and click Remove button. A confirm dialog will be
popped up. If all the information is correct, click OK button to apply the
change.
On the left navigation panel, click Rest APIs -> Deploy Rest APIs to launch the Deploy Rest APIs panel. Then
select a template from the dropdown box and click Launch button to launch the Rest deployment wizard.
A new browser tab is opened to launch the REST deploy wizard as below.
To deploy a REST service, an Integrated Web Services Server for i instance need to be created on the IBM i
server first. Integrated Web Services Server for i provides a secure and easy way to configure an environment
for hosting REST services that
are based on IBM i objects such as RPG and COBOL programs and SQL
statements.
Then a REST service could be deployed on the instance to externalize an IBM i programs or SQL statements.
Follow the context help document in the wizard to create Integrated Web Services Server for i instance and
deploy REST services.
CPU usage
Memory usage
Receive bandwidth
On the left navigation panel, click Home -> Dashboard to launch dashboard panel. Then select a project from
Project dropdown box on top of the panel to monitor the resource consuming.
By default, the time range of the charts is 30 minutes. It can be changed from 5 minutes to 2 weeks through
Time range dropdown box.
Before
initialization, the vault server status will be Not initialized and users are not able to use Connection in
MERLIN GUI.
Go to the MERLIN GUI, Connection -> Vault, User will turn to Vault Control page.
Initialize Vault
vault button, admin will turn to the initialize page.
Click the initialize
Note: When the vault server status is 'Active' and token status is 'Invalid', the admin is required
to set the token again.
Step 4,
Login
Click the Administration Console.
As the Chrome use the system trust store to verify the CA, the ways to adding CA to system store between
Windows and Mac are different, so both Mac and Windows follow the Download MERLIN CA steps to obtain
the Merlin CA, but follow
different steps: Add the CA to trust store with Windows system or Add
the CA to trust store with Mac system to trust CA.
Click the Not Secure button, and then select the Certificate is not valid item.
Click the Certification Path tab, then click the first CA, and click the View Certificate button.
Click the Details tab in the CA certificate and then click the Copy to File button.
In the Certificate Export Wizard, click the Next button.
Select the DER encoded binary X.509(.CER) and then select Next
Enter the path and name which you want to save the certificate. Then click Next.
Click Finish button
2. Add the CA to trust store with Windows system
If the client is a Windows system, open the folder where the certificate is saved. Double click the
certificate.
In Certificate import Wizard, click the Next button.
Select ‘place all certificate in the following store’ and click browse button.
Select the Trusted Root Certification Authorities item, and then click ok button. In Certificate
Import Wizard, click Next button.
Click Finish button.
Select Yes in the security warning window
Restart the Chrome browser. Enter the MERLIN address and the Merlin GUI will load
successfully.
3. Add the CA to trust store with Mac system
If client is a Mac system, after saved the certificate, paste it to the Keychain Access which is a
Mac application.
Double click the certificate
Change all items to always trust.
Restart the Chrome browser. Enter the MERLIN address and the Merlin GUI will load
successfully.
Manage Connections
Manage Inventory
Manage Templates
Manage Credentials
Manage Inventory
The inventory works for managing the systems info used for MERLIN. It will save the general system
information including hostname, type, and description and some other information. Now MERLIN supports
four types of hosts, IBM i, Power VC, IBM Cloud,
and Jenkins.
Go to MERLIN GUI, Connections -> Inventory, user will turn to
the Inventory page.
All the Inventories which created or got permissions will be shown, it includes Name, Hostname, Type,
Description, Owner, Provision, Created Time, and Updated Time. The Provision item is a tag that specifies the
IBM i server deployed by the Power
VC template.
Add Inventory
Click Add button,
enter the Name, Type and Hostname, after the type selected the required info will be
difference, if one of requirements not meet the +Add button will keep disabled status.
Fill the Hostname and Port, the Test TLS button will be abled to click, and it will catch the Power VC CA, in the
detailed certificate windows, click the Accept button, then this CA be added to Merlin trust store.
Note: Please avoid to use those specific characters .,:;/\"*?<>|=+&%'`@" in Name field. And the
Hostname supports IP, Hostname, and URL.
Delete Inventory
The delete button
is disabled by default, select items in the inventory table, and the selected items will
change to highlight and the delete button change to available status, click the delete button, and
click
yes for the confirmation that will delete all selected items.
Edit Inventory
The Edit button
is disabled by default, select one item in the inventory table, and the selected item will
change to highlight and the Edit button change to available status, click the Edit button, the inventory
info will be shown, all fields are able to be edited except the owner.
Refresh Inventory
Click the refresh button, the MERLIN GUI will get a refresh so that to get the latest inventory info.
For
the Admin side, all credentials will be shown, for the user side, all the own Credentials will be shown, it
includes Name, Type, Description, Owner, Created Time, and Updated Time.
Add Credential
Click the Add button, Add the credential name, and select the credential type, the detailed credential
info will be shown. According to the credential type, the credential info is difference.
For credential
of IBM i as an example, user must enter the username and password of
IBM i server, or
the +Add button will keep disabled. Optionally, ssh key information can be specified. If specified, the
ssh key will be used instead of the password to connect
to the IBM i during the IDE developer build
process.
Note: if using ssh key, additional configuration is performed during connection to the IBM i before the
Delete Credentials
The delete button is
disabled by default, Select items in the credentials table, and the selected item
will change to highlight and the delete button change to available status, click the delete button and
click yes to confirm that will delete all selected items.
Edit Credential
The Edit button
is disabled by default, select one item in the credential table, the selected item will
change to highlight and the Edit button change to available status, click the Edit button, the credential
info will be shown, all fields can be edited except the owner.
Note: For the security consideration, when editing the credential, the original credential
information will not be shown, and the user should fill all credential information again.
Refresh Credentials
Click the refresh button, the MERLIN GUI will get a refresh so that to get the latest credentials
information.
Manage Templates
The Templates work for managing the template info used for MERLIN. It will save the template info, including
Name, Inventory, Credential, type, owner, and description. The credential and type info will be changed
according to the Inventory type.
Now MERLIN supports four types of templates same as the inventory host
types.
For the Admin side, all templates will be shown, but the run action only works on own templates, for the user
side, all own templates will be shown, it includes Name, Inventory, Credential, Type, Owner, Created Time,
and Updated Time by default.
Users also could customize the columns by clicking the icon at the right top of
the table.
Add Template
Click the Add button, add the Template name, and select an inventory, the template type is the same
type as inventory, the credential will be filter to the same type. According to the inventory type, the
other
required fields will be difference.
Use Power VC as example, user must enter
the vm info which used in this template, or the +Add button
will keep disabled.
Fill all necessary fields, the +Add button will be able to click, click the +Add, the new template info will be
imported to Templates table.
For the IBM i server template, MERLIN supports Enable Ansible environment, Validate the dependent PTFs,
Install Certificate, Enable IBM i developer environment, and Enable ARCAD environment.
Refresh Templates
Click the refresh button, the MERLIN GUI will get a refresh so that to get the latest Templates info.
Select
the Provision action and click Run, user will see the Run template window. Before running
this action, please make sure all the hardware configuration has been set up in Power VC side.
In
the Run Template page, it will display the info which you created in the Power VC template,
and select one credential for this new IBM i server, it will create a new user profile with the
username and password in the new IBM i server.
In
the Run CL command field, it allows users to operate simple CL command during the IBM i
deployment. It begins with the system command and the CL command need write into the
following double quotation mark.
The second method to deploy IBM i server, go to the MERLIN GUI Provision->Deploy VM. Select
a Template in the dropdown list, the deployed info will be shown. Select a credential for this new
server.
While the server deploying, MERLIN will create the related inventory, templates.
Manage the IBM i server life cycle
Go to the MERLIN GUI, Provision ->
Virtual Machines, select a template at the Select template
dropdown list, all the VMs deployed by this template will be shown.
Note: delete the IBM i server, the related record will also be deleted.
For the Enable Ansible environment action that will help to initiate the yum, python, and Ansible
packages, etc. If the server is not run any task before, this action should run at the first step.
For the Validate the dependent PTFs action that will help to validate if the dependent PTFs have been
installed in the IBM i server.
Minimum HTTP Group PTFs:
IBM i 7.5 SF99952: IBM HTTP Server for i Group level 01
IBM i 7.4 SF99662: IBM HTTP Server for i Group level 20
IBM i 7.3 SF99722: IBM HTTP Server for i Group level 39
Host compilers in 5770WDS:
Make sure the IBM i server has already started the SSHD service or the action will fail.
Once a user sign-on MERLIN, the installed MERLIN tools which the user has permissions to view are
shown on the homepage.
Go to MERLIN GUI, then open Tools->Catalog, the supported MERLIN tools are in the Catalog.
Install MERLIN tools Ensure a proper role or permissions have been granted to user to do the
deployment. To learn more about the user role and permissions with MERLIN, see
Manage_MERLIN_users_and_authorities.
Read the license terms of the MERLIN tool and decide if you accept it.
Create a project where the MERLIN tool is installed into. If the project does exist, the step can be
skiped.
Choose an update channel, which is used to track and receive updates for the MERLIN Tool.
Choose a update stratety, which has two strategies, one is Automatic, that means once new versions
are released, the installed MERLIN tool will be upgraded to latest version automatically. The other is
Manual, that means once new versions are
released, the installed MERLIN tool will be upgraded to
latest version automatically. Otherwise, the update must be manually approved before installation can
Uninstall a MERLIN tool Go to MERLIN GUI, then open Tools -> Deployed Tools -> select the tool to be
uinstalled -> Right click on the tool -> Uninstall the Application.
Click
Account Security -> Singing In -> Click Update button.
IBM i Developer is built on the Red Hat® CodeReady Workspaces project. The core functionality for Red Hat
CodeReady Workspaces is provided by an open source project called Eclipse Che. IBM i Developer uses
Kubernetes and containers to provide your
team with a consistent, secure, and zero-configuration
development environment that interacts with your IBM i platform.
Core capabilities
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Getting Started
Note: For additional getting started information and videos, visit the Merlin Overview support page.
Steps:
Merlin user is created by Merlin adminstrator and the user is given access to the Merlin project with the
IBM i Developer tool
Define Credentials in platform Connections
Define IBM i hostname in Inventory
Note: verify all prerequisites are installed on the IBM i and that configuration has been
completed.
Define IBM i user profile and password in Credentials
Define Template with inventory and credential
Start IBM i Developer
Under Tools>Deployed Tools, launch IBM i Developer to launch the Dashboard. Dashboard is
where application developers create, start, stop, and manage their development workspaces all
from a web browser.
Start workspace
From Create Workspace page, select IBM i Developer tools stack to create a clean workspace
with all the IBM i developer tools.
Note: IBM i Developer is built on top of Red Hat CodeReady Workspaces. For more information on what else
can be done with workspaces, see the Red Hat documentation.
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Dashboard
The IBM i Developer Dashboard allows the user to create, start, manage, and delete workspaces. Here you
should see the workspaces available.
To create a new IBM i Developer Workspace, click on the IBM i Developer tool stack from Create
Workspace
To start an existing workspace, go to Workspaces and click on the workspace you want to
open.
You may also start a workspace in Recent Workspaces in the sidebar
Note: You can only have ONE workspace running at a time.
Workspace
Once a Workspace is started, you should see the IBM i Developer Integrated Development Environment (IDE)
displayed on your browser. This is where the user can develop, build, and modernize their applications.
Terminal View - Terminal > Open Terminal in specific container, then choose the container to open a
terminal with
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Git Integration
In order to run a Git command, go to View > Find Command..., then type in "git" to find the Git command you
wish to run. If you are more familiar with Git on the command line, you may also run the Git commands from
an opened terminal. To open a terminal, do Terminal > Open Terminal in specific container, then select the
terminal you wish to open.
The Source Control: Git View is helpful to see the status of your git branch. here you can see the changes you
have made since the last commit and perform various git actions.
Below is an example to use Git with the Merlin IDE from cloning a project to committing your changes to a
newly created branch.
Steps:
3. After making some changes, you will see the list of your changes in the Source Control: Git View. You
may see the diff between the original files and the changed files when you click on a file.
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
IBM i Projects
The IBM i Project Explorer view is what you will use to define IBM i connections for your projects. In doing
this, you will be able to work with your desired libraries, objects, members, and IFS files.
Getting Started
To get started with working on an existing IBM i project that lives in Git, use Git Clone to load the source from a
Git repository. For more information, see Git Integration.
1. Navigate to the command palette and run the command Create IBM i Project.
2. Select the workspace in which you want to create the project in.
3. Modify the selected workspace path to include the name of your project.
4. (Optional) Enter a description for your project.
5. Select from the list of connections that were defined in the Merlin Connections.
6. Modify or confirm the suggested build directory you would like to proceed with for the project.
IBM i Connections
To specify an IBM i connection on your project, follow these steps:
Once an IBM i connection is defined on a project, it will be visible in the IBM i description. To then work with
your connection using the following actions upon right clicking the IBM i:
Edit Connection: Edit to another IBM i connection defined in the Merlin Connections.
Restart Connection: Restart the current IBM i connection.
Logout Connection: Logout from the current IBM i connection.
Build Directory
The Source description will render the current build directory for the project which will be used when
performing developer builds. This build directory will be initially set upon specifying an IBM i connection
where the user will
be suggested to proceed with using the default build directory
({userHomeDirectory}/{projectName}). If the user's home directory cannot be retrieved, a temporary
build directory will be suggested instead.
To modify the build directory, the following actions are available upon right click the Source:
Upload to Build Directory on IBM i: Upload the source to the build directory.
Build Project: Build the source into the target library.
For more information on the behaviour of these actions, see Developer build.
Source Filters
Source filters can be used to filter the source files that are visible under the Source. By right clicking on the
Source and selecting the Filter Source Files action, you can choose from a selection
of filters:
For certain source filters, you will be able to observe that the source files have icons that distinguish the state
in which they are in.
Source Queries
To further simplify the set of source files visible under the Source, queries can be added on top of any filter by
right clicking the Source and selecting the Add Source Query action. Upon doing
this, you can create a new
source query or select from any previously added ones. The currently selected source query will be displayed
in the Source description. By right clicking the Source, the following related actions are
also available:
IBM i
Variables
The project metadata for IBM i projects support the use of variables in the following fields: objlib, curlib,
preUsrlibl, postUsrlibl, setIBMiEnvCmd, buildCommand, compileCommand,
and includePath.
Variables are always prefaced with an &. By levering the use of variables, the same project definition can be
used to target a different build library from one developer to another.
The Variables heading is where you will be able to visualize the set of variables defined in the iproj.json.
Upon right clicking a variable, the Edit Variable action can be used to define a value for
that variable.
Library List
The Library List heading is where you will be able to view your system libraries, user libraries and current
library. The library list is initially set according to your user profile but can be modified based on the fields set
in
the project's iproj.json. When working with libraries and the library list, the following actions can be
used by right clicking on any library:
Clear Library: Delete all objects that you have the authority to delete from the specified library.
Delete Library: Delete the specified library from the system after all objects in the library have been
deleted.
Add to Beginning of Library List: Add the specified library to the beginning of the user portion of the
library list.
Add to End of Library List: Add the specified library to the end of the user portion of the library list.
Set as Current Library: Set the specified library to be the current library.
Note: To create a new library, right click on the IBM i and select Create Library. To also delete any objects
under a library, right click on the object and select Delete Object.
Note: When the objlib is defined (or curlib if the objlib is not defined) strictly with a library name
instead of a variable, it will also be listed here.
Note: Queries support the use of variables. Generic names can also be used in the above parameters
excluding the {libraryName} for object queries and member queries.
By right clicking on any created query, you can access the following related actions:
Open Terminal in Container: This will open a terminal and navigate to the project in the workspace.
Open SSH Terminal. This will open a terminal, SSH to the IBM i machine, and navigate to the build
directory.
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Keyboard shortcuts
Multiple selections (multi-cursor)
Column (box) selection
Save / Auto Save
Hot Exit
Find and Replace
Search across files
Content assist
Folding
File encoding support
For detailed information on editing features, please check out Visual Studio Code documentation
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Editing RPG
Apart from those common language features mentioned in Edit, ILE RPG source editing also has these
capabilities:
outline view - structured view of source that allow navigation to source, filtering the items
Use View > Outline to open outline view.
The result of executing a Find All References search will show up in the REFERENCES: RESULTS view
Users can select Format Document to format the whole document or Format Selection to format the
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Editing SQL
SQL source editing capabilities:
formatting
Formatting
options can be found at Preferences.
content assist
The content assist provides SQL keyword completion. Content assist can be triggered in editor window
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Developer build
IBM i Developer allows the user to run the project-based developer builds. IBM i Developer does not restrict
users from using any specific building technology. For example, users may use Better Object Builder (BOB) or
ARCAD tooling
for the builds. Alternatively, users may even write their scripts and invoke them as long as
those build tools respect the IBM i Projects Standard.
1. The default way of building a project is specified in the Preferences. Those settings apply to all the
projects in the workspace and can be overwritten by a project's iproj.json. To change the
commands, go to File>Settings>Open Preferences (or Ctrl/Cmd + ,)>scroll down to the Build
command or compile command.
Variable Description
{filename} resolves to the base file name being edited.
{path} resolves to the full IFS path corresponding to the source in the editor.
{host} resolves to the IBM i hostname.
{usrprf} the user profile that the command will be executed under.
{branch} resolves to the name of the current git branch if this project is managed by git.
Note: For more information about how to use BOB's makei utility, please view the documentation for makei.
Perform a Build/Compile
Select View>Find Command and enter IBM i Developer: Build (or Ctrl/Cmd + Shift + B) to invoke the build
command.
The compile command will compile the currently active file in the workspace by default. To invoke the compile
command, you must first open the source file you want to compile. And then select View>Find Command and
enter IBM i Developer: Compile or IBM i Developer: Build (or Ctrl/Cmd + F7).
You can tell the build/compile command is running from the pop-up output channel.
Getting Feedback
Output from Build/Compile Command
The Output view contains a channel showing all the standard outputs for the running build/compile
commands.
Those outputs can be found under the OUTPUT tab (View->Output, or Ctrl/Cmd + Shift + U). Select IBM i
Build Output in the drop-down on the right.
Compiler Feedback
IBM i Developer will populate the problem view (View->Problems, or Ctrl/Cmd + Shift + M) with compiler
feedbacks. Those feedbacks come from the event files under .evfevent directory.By default, the build tools
will create those event
files, and IBM i Develop will then pull them back in the Build/Compile process.
The job logs are grouped by commands and you can always find the latest at the top. Click on the command to
show all the job logs related to this command. You can also hover on a job log message to show details.
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Settings
Access settings from File > Settings.
Preferences
IBM i Developer
Build Command
Command to invoke when building a project. A project can override the command used by specifying a
build command in the project's iproj.json.
Compile Command
Command to invoke
when building the selected file. A project can override the command used by
specifying a compile command in the project's iproj.json.
Specify if to only adjust uppercasing or lowercasing and to not change the indentation/line breaks.
Identifiers
Specify the
uppercasing or lowercasing of SQL identifiers.
Keywords And Built-in Functions
Logging
Language Server Logging Category
language server.
Specify logging level for RPG or SQL
Level
logging level.
Specify
Projects
configuration in settings.json.
Edit project
SSH Verbosity Level
for SSH commands is increased.
Specify if the verbosity
Upload Command
Keyboard shortcuts
Specify keyboard shortcuts to invoke commands.
Color theme
IBM i Modernization Engine for Lifecycle Integration 113
Select the color theme.
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Out-of-box Jenkins with ARCAD integration. Users can create their own Jenkins environment with
capability to build and deploy IBM i programs.
Graphic interface to simplify key operations of Jenkins. This GUI creates Jenkins pipelines specifically
for IBM i programs development.
For information on using ARCAD tools, see How to use ARCAD integration with IBM i Modernization Engine for
Lifecycle Integration
Use Jenkins as the backend automation server for the actual build job.
Define customized profile to manage the source code, build and deploy process.
Follow the Installation Application wizard to complete the installation of IBM i CI/CD.
Under Overview > Quick Launch, click to launch IBM i CI/CD directly.
Under Tools > Deployed Tools, right click and launch IBM i CI/CD in context menu.
Both internal and external Jenkins must be initialized before using in IBM i CI/CD. While the initialization of
external Jenkins only saves the information (Jenkins URL, username, password, and API token) for
authentication with Jenkins REST API
into MERLIN platform, the initialization of internal Jenkins will do the
actual configuration of Jenkins.
Use Jenkins Configuration > Jenkins Server > Initialize Jenkins to open the Initialize Jenkins wizard.
Note: Initialize Jenkins requires admin user.
Select Use internal Jenkins server in step Select Jenkins server type.
Input Jenkins username and password in step Initialize Jenkins using default wizard. The
user will be created in internal Jenkins and used for later authentication with Jenkins.
Select Use internal Jenkins server in step Select Jenkins server type.
Note: Use Generate API token to get the API token after filling in the Jenkins server
URL, username, and password. API token is required when authentication with Jenkins
REST API.
Note: Use Test TLS to verify if the TLS is configured on the external Jenkins server and
import the CA certificate into the trust store if it is not.
Wait for the initialization of external Jenkins to finish. Jenkins information will be refreshed and
the Connectivity will be Available if the initialization process finished successfully.
Note: Another option to set external Jenkins, use Edit selected Jenkins server. Add an available
Jenkins template in MERLIN platform first and select the pre-added Jenkins template. Use Test TLS to
verify if the TLS is configured on the selected Jenkins server and import CA certificate into trust store if
Use Jenkins Configuration > ARCAD Integration > Enable ARCAD Integration to open the Enable ARCAD
Integration dialog.
Note: Enable ARCAD Integration requires an admin user and only supports internal Jenkins. The integration
process will overwrite all the configuration of ARCAD-Builder Plugin and ARCAD-Macro Execution in internal
Jenkins.
Note: Currently IBM i CI/CD only supports the configuration of ARCAD builder server. The configuration of
ARCAD Servers for ARCAD-Macro Execution Plugin is not supported yet while the ARCAD-Skipper CLI will be
put under default
location /merlin/cicd/gui/skipperCLI. If the user wants to utilize the function of
ARCAD-Macro Execution Plugin, use it in Jenkins GUI directly.
Input the ARCAD builder URL, and use Test TLS to verify if the TLS is configured on the ARCAD
builder server and import the CA certificate into the trust store if it is not.
Select ARCAD builder server credential in Jenkins credential list, add the credential first under
Jenkins Configuration > Manage Jenkins Credential.
Wait for the ARCAR integration process to finish. And the ARCAD builder URL and selected
credential name will be listed on ARCAD Integration page.
Use Profile Management > Create New Profile to open the Create New Profile wizard.
Define Git repositories by specifying the Git Repository URL and branch information.
Note: If multiple Git repositories are added, fill in the Check out to sub directory to
create sub directory for different repositories.
Note: Specify credential from Jenkins credential list if current Git repository is not public.
Specify build servers by Add Build Server, use customized build server name if needed.
If Specify build server in profile is checked, select an existing server from the server list(
IBM i templates defined
in MERLIN platform ).
If you want to upload the source code defined in step Source Code Management, check
the checkbox Upload source code to build server and fill in the Work directory on the
remote server.
Source code will be uploaded automatically to the defined Work directory
when the profile runs.
Send multiple files to a remote server. Use the relative path of files. Use enter to separate
multiple files. File directory is not supported.
Run CL command
Specify deploy servers by Add Deploy Server, use customized deploy server name if
needed.
Distribution on IBM i support transfer objects from the source library on source IBM i to
the destination library on destination IBM i.
Note: Use Comma to separate multiple objects.
Define multiple deployments for multiple library transfer actions. Make sure the source
library and destination library exist.
Support package certain objects or package the whole library at once.
Transfer multiple single files between two IBM i. Use enter to separate multiple files. File
directory is not supported.
Every time a profile runs, a new pipeline job will be created in the Jenkins server named as {profile
name}-{username}-{current time}. While Jenkins supports building any job multiple times, IBM i
CI/CD doesn't support that now.
Add Jenkins credential with type SSH Username with private key
Edit Jenkins credential with type SSH Username with private key
Note: Jenkins job supports build multiple times, but not supported for the profile in IBM i CI/CD now.
In case the user uses Jenkins directly, the latest build is used by IBM i CI/CD when stop build or view
build results.
Assign Jenkins Access to User Assign access of current Jenkins to other users. The process will
automatically create connection resources with the default name jenkins-{cicd namespace}-
username :
Resources
IBM i Modernization Engine for Lifecycle Integration is built on various platforms and technologies. To get the
most out of those related platforms and technologies, refer to the following resources.