OpenShift OKD on IBM LinuxONE, Installation Guide
This document provides the step-by-step instructions for installing OpenShift OKD 3.11 on LinuxONE. The intended audience is Systems Architects and Specialists who design, size, and implement solutions on IBM infrastructures.
Many other audiences and scenarios are covered in the OpenShift OKD official documentation, which is located here: https://docs.okd.io/3.11/welcome/index.html
Executive summary
OpenShift OKD, previously named OpenShift Origin, is a container orchestration platform that is built on Docker container packaging and Kubernetes container cluster orchestration. OpenShift OKD is the open source Origin Community distribution that powers Red Hat's OpenShift container platform.
With OpenShift OKD, you easily automate the deployment, scaling, and management of containerized applications.
This document describes installation of OpenShift OKD 3.11 on ClefOS running under LinuxONE. In this guide, we used the advanced installation method to set up the OpenShift OKD, which is based on Ansible playbooks.
Table 1 shows key architectural units of OpenShift OKD.
Table 1 Key architectural units
Architectural unit
Definition
OpenShift OKD cluster
A container for nodes.
OpenShift Node
Can be an instance of physical machines or VMs. The OpenShift nodes run pods.
OpenShift pod
A group of one or more containers that operates together and are deployed on the same host.
OpenShift cluster
A container for nodes that must contain at least one master node.
OpenShift master node
A server instance that is responsible for managing the entire cluster. It contains the controller manager, API server, scheduler, and etcd.
Keywords: OpenShift, OKD, Installation, LinuxONE, Linux on Z, Containers, Open source, Orchestration.
Installation checklist
Table 2 provides an installation checklist for the system and hardware required for OpenShift OKD hosts.
Table 2 Installation checklist
Check
Task
Nodes
Linux running in a native LPAR or under IBM z/VM or K/VM hypervisor
Minimum of RAM: 8 GB
Minimum of hard disk space:
 – 15 GB for /var/
 – 1 GB for /user/local/bin
 – 1 GB for /tmp/
15 GB of unallocated storage for Docker storage. (See the OpenShift ODK official documentation: Docker storage configuration)
For more information, see OpenShift’s Configuring Docker Storage topic:
https://docs.openshift.com/container-platform/3.11/install/host_preparation.html#configuring-docker-storage
Linux guest
Base OS:
RHEL or ClefOS 7.4 (or later) with the latest packages from the Extra channels.
Check OS release with this command: cat /etc/redhat-release
Devices
IBM ECKD, FBA, or zFCP
Architecture overview
An overview of the environment that was set up for OpenShift OKD 10.3 installation is displayed in Table 3 and Figure 1.
Table 3 Environment details
Environment details
Command-line display
Red Hat release:
cat /etc/redhat-release
Kernel version:
uname –a
Disk configuration:
lsdasd
Figure 1 Environment overview
For information about the environment where you install OpenShift OKD, see the next section.
OpenShift OKD pre-installation tasks
This section describes the tasks that are required to prepare for the installation that is described in “All-in-one configuration: single-node installation” on page 17. Sometimes, the task descriptions in this section include example output for the commands that you must run.
Preinstallation task 1: Prepare the environment
Prepare your environment as follows:
1. Run the following comment to update the system to use the latest packages: yum update –y
2. Run the following command to install Extra Packages for Enterprise Linux (EPEL):
yum install epel-release –y
Figure 2 shows the results of this command in our example.
Figure 2 Epel release installation
3. Enable access to ClefOS EPEL repository as follows:
a. Create the following file: vi /etc/yum.repos.d/epel.repo
b. Add the following lines to the file that you created:
[epel] name=ClefOS Extra Packages for Enterprise Linux baseurl=http://download.sinenomine.net/clefos/epel7 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SNA enabled=0
4. Enable password-free SSH access to nodes that compose your cluster. (In this guide, we have one node: the master node.)
a. Generate SSH key pair on the master host, as shown in Figure 3: ssh-keygen -t rsa
Figure 3 Using SSH-keygen to generate a new SSH key
b. Copy the SSH key content to the following file:
/root/.ssh/authorized_keys
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
sh-copy-id root@master
c. Set the permissions:
chmod 700 ~/.ssh
chmod 600 /root/.ssh/authorized_keys
d. Distribute the public key to the other cluster nodes if you are in nonAll In One node configuration. Then, log in to each host from the master node to make sure that the key was added.
scp /root/.ssh/id_rsa.pub root@hostname:/root/.ssh/authorized_keys
Security-Enhanced Linux (SELinux) must be enabled on all nodes before you run the installation of OpenShift. Otherwise, the installation fails as shown in Figure 5.
5. Run the following command to check the SELinux status: getenforce
6. To enable SELinux, change the value of SELINUX to “enforcing” in etc/selinux/config file as shown in Figure 4:
Figure 4 Enabling SELinux
If SELinux is not enabled, as shown in Figure 5, it will cause problems when the installation of OpenShift is started.
Figure 5 OpenShift installation failed due to a disabled SELinux
7. Reboot the virtual machine (z/VM or KVM) to make the change effective, and then check that the getenforce command returns the permissive value: reboot.
The OpenShift OKD installation method that is used in this user guide is based on the use of the Ansible playbooks. Use the following command to install Ansible on your host:
yum install ansible OpenShift-ansible -y
 
Workaround: The preceding command might fail with the error that is shown in Figure 6. In this case, you must downgrade the version of Python that is already installed in your host by using the following command. Then, rerun the failed installation after you downgrade the Python version.
yum downgrade python-javapackages
Figure 6 OpenShift-Ansible failed installation
Preinstallation task 2: Manage packages for the installation
Use the commands in the Subscription-Manager to enable and disable repositories within the repository file, as shown in these examples:
yum-config-manager --enable extras --save
See typical output for this command in Example 1.
yum-config-manager --disable epel –save
See typical output for this command in Example 2 on page 9.
Enabling extras
Example 1 shows typical results for running the following enable command:
yum-config-manager --enable extras --save
Example 1 Enabling a repository
yum-config-manager --enable extras --save
[root@OpenShiftmaster ~]# yum-config-manager --enable extras --save
Loaded plugins: fastestmirror, langpacks
===============================================
repo: extras
===============================================
[extras]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/s390x/7
baseurl =
cache = 0
cachedir = /var/cache/yum/s390x/7/extras check_config_file_age = True compare_providers_priority = 80 cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = 1
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/s390x/7/extras/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/s390x/7/extras/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ClefOS-7
hdrdir = /var/cache/yum/s390x/7/extras/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist = http://mirrors.sinenomine.net/clefos?releasever=7&arch=s390x&repo=extra s
mirrorlist_expire = 86400
name = ClefOS-7 - Extras
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/s390x/7/extras
pkgdir = /var/cache/yum/s390x/7/extras/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = extras/7/s390x
ui_repoid_vars = releasever,
basearch username =
Disabling extras
Example 2 shows typical results for running this disable command:
yum-config-manager --disable epel –save
Example 2 Disabling a repository
yum-config-manager --disable epel –save
[root@OpenShiftmaster ~]# yum-config-manager --disable epel –save
Loaded plugins: fastestmirror, langpacks
/usr/lib/python2.7/site-packages/yum/misc.py:133: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal return lambda s: s.lower() == pat
===============================================
repo: epel
===============================================
[epel] a
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/s390x/7
baseurl = http://download.sinenomine.net/clefos/epel7
cache = 0 cachedir = /var/cache/yum/s390x/7/epel
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = 0
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/s390x/7/epel/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/s390x/7/epel/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-SNA
hdrdir = /var/cache/yum/s390x/7/epel/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = ClefOS Extra Packages for Enterprise Linux
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/s390x/7/epel
pkgdir = /var/cache/yum/s390x/7/epel/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = epel
ui_repoid_vars = releasever, basearch
username =
Preinstallation task 3: Install required packages
In this section, we use the following commands to install the required CentOS packages:
yum install centos-release-ansible26
See typical output for this command in Example 3.
yum install centos-release-OpenShift-origin310
See typical output for this command in Example 4 on page 11.
yum install centos-release-OpenShift-origin
See typical output for this command in Example 5 on page 12.
yum install centos-release-ceph-luminous
See typical output for this command in Example 6 on page 12.
Installing centos-release-ansible26
Example 3 shows typical results for running the following package-installation command:
yum install centos-release-ansible26
Example 3 Installing ansible26
yum install centos-release-ansible26
[root@OpenShiftmaster ~]# yum install centos-release-ansible26
Loaded plugins: fastestmirror, langpacks
Loading     mirror    speeds       from cached       hostfile
========================================================
extras        |        3.8              kB           00:00:00
os            |        3.8              kB           00:00:00
updates       |        3.8              kB           00:00:00
(1/2): extras/7/s390x/primary_db | 166 kB     00:00:01
(2/2): extras/7/s390x/group_gz   | 155 kB     00:00:01
Resolving Dependencies
--> Running transaction check
---> Package centos-release-ansible26.noarch 0:1-3.el7.centos will be installed
--> Processing Dependency: centos-release-configmanagement for
package: centos-release-ansible26-1-3.el7.centos.noarch
--> Running transaction check
---> Package centos-release-configmanagement.noarch 0:1-1.el7.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package                             Arch  Version Repository Size
================================================================================
Installing:
centos-release-ansible26     noarch 1-3.el7.centos  extras       3.9 k
Installing for dependencies:
centos-release-configmanagement     noarch 1-1.el7.centos  extras       4.3 k
Transaction Summary
===========================================
Install 1 Package (+1 Dependent package)
Total download size: 8.2 k
Installed size: 1.6 k
Is this ok [y/d/N]: y Downloading packages:
(1/2): centos-release-configmanagement-1-1.el7.centos.noarch.rpm
| 4.3 kB 00:00:00
(2/2): centos-release-ansible26-1-3.el7.centos.noarch.rpm | 3.9 kB 00:00:00
-----------------------------------------------------------
Total 12 kB/s | 8.2 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : centos-release-configmanagement-1-1.el7.centos.noarch 1/2
Installing : centos-release-ansible26-1-3.el7.centos.noarch 2/2 Verifying : centos-release-configmanagement-1-1.el7.centos.noarch 1/2
Verifying : centos-release-ansible26-1-3.el7.centos.noarch 2/2
Installed:
centos-release-ansible26.noarch
0:1-3.el7.centos
Dependency Installed:
centos-release-configmanagement.noarch 0:1-1.el7.centos
Complete!
 
Installing centos-release-OpenShift-origin310
Example 4 shows typical results for running the following package-installation command:
yum install centos-release-OpenShift-origin310
 
Note: In the environment used for this installation, the package shown in “Installing centos-release-ansible26” on page 10 was already installed. The output of the command would be then different if you proceeded with a first-time installation of this package.
Example 4 Installing OpenShift-origin310
yum install centos-release-OpenShift-origin310
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
centos-OpenShift-origin | 2.9 kB 00:00
clefos-ansible26 | 3.0 kB 00:00
clefos-ceph-luminous | 3.0 kB 00:00
clefos-OpenShift-origin | 3.0 kB 00:00
clefos-OpenShift-origin310 | 3.0 kB 00:00
extras | 3.8 kB 00:00
os | 3.8 kB 00:00
updates | 3.8 kB 00:00
(1/3): extras/7/s390x/primary_db | 190 kB 00:01
(2/3): clefos-OpenShift-origin/7/s390x/primary_db | 298 kB 00:02
(3/3): updates/7/s390x/primary_db | 5.0 MB 00:05
Package centos-release-OpenShift-origin310-1-1.el7.centos.noarch already installed and latest version
Nothing to do
 
Installing centos-release-OpenShift-origin
Example 5 shows typical results for running the following package-installation command:
yum install centos-release-OpenShift-origin
Example 5 Installing OpenShift-origin
yum install centos-release-OpenShift-origin
[root@OpenShiftmaster ~]# yum install centos-release-OpenShift-origin
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
clefos-OpenShift-origin310 | 3.0 kB 00:00:00
clefos-OpenShift-origin310/7/s390x/primary_db | 3.8 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package centos-release-OpenShift-origin.noarch 0:1-
1.el7.centos will be installed --> Finished Dependency Resolution
Dependencies Resolved
==============================================================================
Package Arch Version Repository Size
Installing:
centos-release-OpenShift-origin noarch 1-1.el7.centos extras 11 k
Transaction Summary
==============================================================================
Install 1 Package
Total download size: 11 k
Installed size: 18 k
Is this ok [y/d/N]: y
Downloading packages:
centos-release-OpenShift-origin-1-1.el7.centos.noarch.rpm | 11 kB 00:00:00
Running transaction check Running transaction test Transaction test succeeded
Running transaction
Installing : centos-release-OpenShift-origin-1-1.el7.centos.noarch
1/1
Verifying : centos-release-OpenShift-origin-1-1.el7.centos.noarch
1/1
Installed:
centos-release-OpenShift-origin.noarch 0:1-1.el7.centos
Complete!
 
Installing centos-release-ceph-luminous
Example 6 shows typical results for running the following package-installation command:
yum install centos-release-ceph-luminous
Example 6 Installing centos-release-ceph-luminous
yum install centos-release-ceph-luminous
[root@OpenShiftmaster ~]# yum install centos-release-ceph-luminous
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
clefos-OpenShift-origin | 3.0 kB 00:00:00
clefos-OpenShift-origin/7/s390x/primary_db | 301 kB 00:00:01
Resolving Dependencies
--> Running transaction check
---> Package centos-release-ceph-luminous.noarch 0:1.0-1.el7.centos will be installed
--> Processing Dependency: centos-release-storage-common for package:
centos-release-ceph-luminous-1.0-1.el7.centos.noarch
--> Running transaction check
---> Package centos-release-storage-common.noarch 0:1-2.el7.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
Package Arch Version Repository Size
===============================================================================
Installing:
centos-release-ceph-luminous noarch 1.0-1.el7.centos extras 4.0k
Installing for dependencies:
centos-release-storage-common noarch 1-2.el7.centos extras 4.5k
Transaction Summary
===============================================================================
Install 1 Package (+1 Dependent package)
Total download size: 8.5 k
Installed size: 1.6 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2):
centos-release-ceph-luminous-1.0-1.el7.centos.noarch.rpm | 4.0 kB 00:00:00
(2/2): centos-release-storage-common-1-2.el7.centos.noarch.rpm | 4.5 kB 00:00:00
-----------------------------------------------------------
Total 12 kB/s | 8.5 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : centos-release-storage-common-1-2.el7.centos.noarch 1/2
Installing : centos-release-ceph-luminous-1.0-1.el7.centos.noarch 2/2
Verifying : centos-release-storage-common-1-2.el7.centos.noarch 1/2
Verifying : centos-release-ceph-luminous-1.0-1.el7.centos.noarch 2/2
Installed:
centos-release-ceph-luminous.noarch 0:1.0-1.el7.centos
Dependency Installed:
centos-release-storage-common.noarch 0:1-2.el7.centos
Complete!
Preinstallation task 4. Prepare persistent storage for OpenShift cluster by using NFS
You can provision OpenShift clusters with persistent storage using NFS. For the basic installation that is documented here, we use persistent storage with NFS.
1. Run these commands to create the folders:
mkdir -p /exports/pv /exports/liberty /exports/db /exports/zeppelin
mkdir -p /exports/serverapp /exports/clientapp   /exports/mongodb
2. Run these commands to modify file permissions so that they match Figure 7:
chown nobody:nobody /exports/*
chmod 0777 /exports/*
Figure 7 Content of export file with the associated permissions
3. Run this command to enable NFS to start at boot: systemctl enable nfs
4. Run this command to start the NFS server: systemctl start nfs
5. Run this command to check the status of the NFS server: systemctl status nfs
Typical output from this command is shown in Example 7:
Example 7 Check the status of the NFS server
[root@OpenShiftmaster ~]# systemctl status nfs
nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Active: active (exited) since Thu 2019-03-07 11:12:18 CET; 26s ago
Process: 28636 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl restart
gssproxy ; fi (code=exited, status=0/SUCCESS)
Process: 28618 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 28615 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 28618 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
Mar 07 11:12:18 OpenShiftmaster.mop.fr.ibm.com systemd[1]: Starting NFS server and services...
Mar 07 11:12:18 OpenShiftmaster.mop.fr.ibm.com systemd[1]: Started NFS server and services.
Preinstallation task 5. Configure the DNS
DNS is mandatory in an OpenShift installation. You can use an existing DNS setup outside of the cluster (this approach is not documented here). In this guide, we set up a DNS as part of the cluster itself. You must ensure that the NetworkManager is running by completing the following two operations, as described in this section:
Check the status of the Network Manager.
Install the Dnsmasq, which is a lightweight DNS forwarder.
Check the status of the Network Manager
Run the following command: systemctl status NetworkManager
Typical output for this command is shown in Example 8:
Example 8 Check the status of the network manager
[root@OpenShiftmaster ~]# systemctl status NetworkManager
NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled;
vendor preset: enabled)
Active: active (running) since Tue 2019-03-05 18:43:49 CET; 1 day 19h ago
Docs: man:NetworkManager(8)
Main PID: 791 (NetworkManager)
CGroup: /system.slice/NetworkManager.service
??791 /usr/sbin/NetworkManager --no-daemon
Mar 05 18:43:51 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551807831.0476]...
Mar 05 18:43:51 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551807831.0482]...
Mar 05 18:43:51 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551807831.0488]...
Mar 06 16:41:36 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551886896.7059]...
Mar 06 16:41:41 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551886901.0477]...
Mar 06 16:41:49 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551886909.6239]...
Mar 06 16:42:02 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551886922.1046]...
Mar 06 16:43:16 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551886996.8043]...
Mar 06 16:44:08 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551887048.8401]...
Mar 06 16:44:13 OpenShiftmaster.mop.fr.ibm.com
NetworkManager[791]: <info> [1551887053.2771]...
Hint: Some lines were ellipsized, use -l to show in full.
Install the Dnsmasq
1. Run the following command to install the package: yum install -y dnsmasq
2. Add the IP address of your node that runs the DNS to the /etc/resolv.conf file. In this installation, it is the IP address of the Master node, as shown in Figure 8.
Line to be added to the file: nameserver Master_node_IP Address
Figure 8 The /etc/resolv.conf file
 
Note: To ensure that etc/resolv.con file is not overwritten on each reboot, verify that in the /etc/sysconfig/network-scripts/ ifcfg-enccw0.0.0d20 file, the variable PEERDNS is set to no (PEERDNS=no). Reboot the VM, and check that /etc/resolv.conf has not been overwritten.
3. Open the DNS port and enable dnsmasq on the host:
a. Disable firewalld if it is used in your environment, and replace it with iptables-services by running the following commands, in the same sequence:
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
yum install -y iptables-services
systemctl enable iptables
systemctl start iptables
 
Note: In this installation, we disable the installed firewall, and we use iptables rules. Otherwise, the OpenShift ansible playbook would disable it and mask it, and the defined rules would be lost.
b. Install the DNS iptables rules using the following commands, in the same sequence:
iptables -I INPUT 1 -p TCP --dport 53 -j ACCEPT
iptables -I INPUT 1 -p UDP --dport 53 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
c. Restart the iptables service and make sure that the rules were validated by running this command: systemctl restart iptables
4. Enable and start dnsmasq by running the following commands, in the same sequence:
systemctl enable dnsmasq
systemctl start dnsmasq
5. Run the following command on each node (in this documentation, in the master node) to confirm that the IP address that is returned is correct:
dig hostname
The IP address must be the IP address of the node on which the router is running.
Typical output for this command is shown in Figure 9:
Example 9 Confirm correct IP address
[root@OpenShiftmaster ~]# dig OpenShiftmaster.mop.fr.ibm.com
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>>
OpenShiftmaster.mop.fr.ibm.com ;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56932
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
; OpenShiftmaster.mop.fr.ibm.com. IN A
;; ANSWER SECTION:
; OpenShiftmaster.mop.fr.ibm.com. 0 IN A 10.3.58.89
;; Query time: 0 msec
;; SERVER: 10.3.58.89#53(10.3.58.89)
;; WHEN: Thu Mar 07 15:56:38 CET 2019
;; MSG SIZE rcvd: 75
All-in-one configuration: single-node installation
The topics in this section describe how to set up a single-node instance of OpenShift OKD in an all-in-one configuration:
Figure 9 shows the process for this installation.
Figure 9 Process for a single-node installation of OpenShift OKD
In this user guide, we use the advanced installation method with Ansible playbook to set up OpenShift OKD. The first step of this process is to modify the Ansible inventory file to define the configuration of the OpenShift Container Platform cluster to be consumed by OpenShift playbooks. After this file customized, we ensure that the hardware and software prerequisites that are recommended by OpenShift are met by running the prerequisites.yml playbook. This operation also installs the required packages such as Docker. Then, we download the Docker images for ClefOS from Docker repository before deployment of the OpenShift Container Platform Cluster.
 
Note: As mentioned before, we create the Ansible Playbook to install the all-in-one OpenShift cluster. It is recommended for a production environment to use dedicated infrastructure nodes to host the different components of OpenShift cluster.
A. Inventory file
This section describes the two steps that are necessary to set up an inventory file.
Step 1 of 2: Configure users and authentication
In this section, we configure the cluster to use HTPasswd authentication. For this purpose, we use the htpasswd utility that is provided by the httpd-tools package. This utility is used later to set the password for the user accounts, admin and ntc, which are defined in the inventory file. (Both users are created as part of this installation.)
1. Install httpd-tools package by running this command: yum install httpd-tools
2. Use the htpasswd command, as follows:
To configure the OpenShift Container Platform cluster to use HTPasswd authentication, you need at least one user with a hashed password to include in the inventory file. Thus, there are two options:
a. Generate the username and password to add directly to the inventory file. (This is the method that is used in this installation.)
b. Create a flat file to pass the credentials to the inventory file (this method is not described in this user guide).
For this installation, we create two users: admin and ntc. To create a hashed password for a specific user, follow the steps described here:
1. Run the following command to add a user: htpasswd -nb <user_name> <password>
2. For example, enter a clear-text password for the ntc user. The following example command shows the generation of a hashed password for the clear-text (opensh1ft) that you enter:
[root@OpenShiftcompute ~]# htpasswd -nb ntc opensh1ft
ntc:$apr1$C.FjItW2$MP2ovZg6YWZzagTTLcQu0/
You can use the hashed password when you configure the HTPasswd authentication. The hashed password is the string after the colon (:) in the preceding example. In this case, the hashed password command was copied and pasted in the inventory file to set the password for the ntc user.
3. Follow the same steps to set the password for the admin user.
Step 2 of 2: Customize the inventory file
By default, the inventory file can be found at /etc/ansible/hosts location. This file is used to initiate the installation and for cluster upgrades as well.
Example 10 shows the inventory file that was used for our installation.
For each section and parameter set in this example file, there is an explanation that is preceded by a number sign (#).
 
Note: For this document, the explanation sections in Example 10 are in bold font. If you use this example inventory file as the basis for your own inventory file, first copy and paste the text into a raw-text editor like Notepad on Windows. This action ensures that the text is clear of extraneous formatting code.
Example 10 Sample inventory file
#Use of the NFS persistent storage and the host name for the system that will be the NFS host. The master node will also act as NFS storage to provide persistent storage for the app
[nfs]
OpenShiftmaster.mop.fr.ibm.com
#Create an OSEv3 group that contains the masters, nodes, and etcd groups and add nfs to the [OSEv3:children] section to enable the [nfs] group
[OSEv3:children] masters nodes etcd nfs
#Set variables common for all OSEv3 hosts
[OSEv3:vars]
#Set HTPasswdPasswordIdentityProvider in the identityProviders to validate user names and passwords against a flat file generated using htpasswd.
OpenShift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',
'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider',}]
#Define htpasswd users
#OpenShift_master_htpasswd_users={'user1': '<pre-hashed password>', 'user2':
'<pre-hashed password>'}
#or
#OpenShift_master_htpasswd_file=<path to local pre-generated htpasswd file>
#For HTPasswd authentication, you can use either the
OpenShift_master_htpasswd_users variable to create the specified user(s) and password(s)
#or the OpenShift_master_htpasswd_file variable to specify a pre-generated flat file (the htpasswd file) with the users and passwords already created.
OpenShift_master_htpasswd_users={'ntc' :
'$apr1$C.FjItW2$MP2ovZg6YWZzagTTLcQu0/', 'admin' :
'$apr1$48dwAVeB$UBmwzmKA0p6EByxWrHMvJ1'}
#If firewall_use_firewalld=false it means use iptables os_firewall_use_firewalld=True
#Set to true to install logging. Set to false to uninstall logging.
OpenShift_logging_install_logging=false
#Define which user Ansible uses to SSH in to remote systems for gathering facts and for the installation. By default, this is the root user, but you can set it to any user that has sudo privileges ansible_ssh_user=root
OpenShift_deployment_type=origin
#Specify a Registry Location that stores Docker images and metadata(when using registry different from the default one) oreg_url=docker.io/clefos/origin-${component}:${version}
OpenShift_examples_modify_imagestreams=true
#Specify the prefix for the web console images
OpenShift_web_console_prefix=docker.io/clefos/
#Specify which health checks to disable. If for example, you don’t hit the minimum memory availability, you’ll need to disable memory_availability
OpenShift_disable_check=disk_availability,docker_storage,memory_availability
#Node selector used when creating router. The OpenShift router will only be deployed to nodes matching this selector
#In this case, The default router will only be automatically deployed if a node exists that matches the region=infra label.
OpenShift_hosted_router_selector='node-role.kubernetes.io/infra=true'
#If you do not intend to use OpenShift Container Platform to manage the registry, configure the following Ansible setting to false
OpenShift_hosted_manage_registry=true
OpenShift_enable_unsupported_configurations=True
#Configuring Registry Storage: an NFS volume is created during an advanced install on the host within the [nfs] group with the path: /exports/registry
OpenShift_hosted_registry_storage_kind=nfs
OpenShift_hosted_registry_storage_nfs_directory=/exports
OpenShift_hosted_registry_storage_nfs_options='*(rw,root_squash)'
OpenShift_hosted_registry_storage_volume_name=registry OpenShift_hosted_registry_storage_volume_size=5Gi
#The location of the cockpit for docker image.In this case, we use the cockpit in the Clefos repo. (Cockpit is the entry point to an interactive server admin interface to manage containers)
OpenShift_cockpit_deployer_image=docker.io/clefos/cockpit-kubernetes:latest
#host group for masters
[masters]
OpenShiftmaster.mop.fr.ibm.com
#host group for etcd
[etcd]
OpenShiftmaster.mop.fr.ibm.com
#host group for nodes, includes region info
[nodes]
OpenShiftmaster.mop.fr.ibm.com OpenShift_node_group_name='node-configall-in-one'
B. Prerequisites check
The playbook prerequisites.yml sets up prerequisites for the OpenShift cluster including the installation of the required packages such as Docker.
 
Note: The prerequisites.yml file is already present in the following location:
/usr/share/ansible/OpenShiftansible/playbooks/
Enter the following command to run the Ansible playbook:
ansible-playbook --private-key=$HOME/.ssh/id_rsa
/usr/share/ansible/OpenShift-ansible/playbooks/prerequisites.yml
 
Note: If this file is not located in the /etc/ansible/hosts directory, use the –i argument followed by the path of your inventory file in the previous command.
When the execution is complete (after few minutes), the message that is shown in Figure 10 is displayed.
Figure 10 OpenShift prerequisites playbook results
C. OpenShift installation
The last step to install the OpenShift container platform is the run the deploy_cluster.yml playbook. By default, this playbook is found here:
/usr/share/ansible/OpenShift-ansible/playbooks
1. Navigate to the /usr/share/ansible/OpenShift-ansible/ folder:
cd /usr/share/ansible/OpenShift-ansible/
2. Run the deploy_cluster.yml playbook to install OpenShift:
./deploy_cluster.yml
The installation of OpenShift takes some time to finish. You can enjoy that time for a coffee break. After the installation is complete, the message shown in Figure 11 is displayed.
Figure 11 OpenShift successful installation recap
After the installation is complete, verify that nodes are started and reporting in Ready status by using the command oc get node, as shown in Figure 12.
Figure 12 Check node status
3. From the master host, log in to OpenShift OKD from the command-line interface: oc login
Figure 13 Command-line authentication to OpenShift OKD
4. Run the command oc get node a second time to get the list of and status of nodes
Figure 14 List of OpenShift nodes
As indicated in the inventory file /etc/hosts, the node act as both master and compute node.
 
Note: To check whether some components such as the registry and router were correctly deployed, run the following command: oc get po -n default
D. OpenShift OKD web console
After the installation of OpenShift is complete, you can reach the OpenShift web console through the public IP attached to the load balancer created by Ansible.
To access the OKD web console, open your browser and enter the IP address (In our installation, the IP address is https://OpenShiftmaster.mop.fr.ibm.com:8443).
Then, log in using the username and password created previously.
Figure 15 OpenShift OKD web console authentication
After you successfully log in to the web console, you have access to the web interface shown in Figure 16 where can create new projects and deploy your applications.
Figure 16 OpenShift OKD web console
 
Note: The host name (in our installation, OpenShiftmaster.mop.fr.ibm.com) must resolve to a name on the DNS server or in the server host file. If you try to access the OpenShift web console and the access is denied, you must add the following entry to your hosts file (/etc/hosts on Linux and C:WindowsSystem32driversetchosts on Windows):
<Master_node_IP address> <hostname>
For example, we entered the following in our C:WindowsSystem32driversetchosts directory:
10.3.58.89 OpenShiftmaster.mop.fr.ibm.com
A. Playbook execution outputs for the prerequisites.yml file
Example 11 shows typical results after the execution of the prerequisites.yml playbook.
Example 11 Typical outputs for the execution of the playbook
[root@OpenShiftmaster ~]# ansible-playbook --privatekey=$HOME/.ssh/id_rsa /usr/share/ansible/OpenShiftansible/playbooks/prerequisites.yml
 
PLAY [Initialization Checkpoint Start]
******************************************************************************
 
TASK [Set install initialization 'In Progress']
*********************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Populate config host groups]
********************************************************************************
 
TASK [Load group name mapping variables]
****************************************************************************
ok: [localhost]
 
TASK [Evaluate groups - g_etcd_hosts or g_new_etcd_hosts required]
**************************************************
skipping: [localhost]
 
TASK [Evaluate groups - g_master_hosts or g_new_master_hosts required]
**********************************************
skipping: [localhost]
 
TASK [Evaluate groups - g_node_hosts or g_new_node_hosts required]
**************************************************
skipping: [localhost]
 
TASK [Evaluate groups - g_lb_hosts required]
************************************************************************
skipping: [localhost]
 
TASK [Evaluate groups - g_nfs_hosts required]
***********************************************************************
skipping: [localhost]
 
TASK [Evaluate groups - g_nfs_hosts is single host]
*****************************************************************
skipping: [localhost]
 
TASK [Evaluate groups - g_glusterfs_hosts required]
*****************************************************************
skipping: [localhost]
 
TASK [Evaluate oo_all_hosts]
***********************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [Evaluate oo_masters]
*****************************************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [Evaluate oo_first_master]
*****************************************************************************
ok: [localhost]
 
TASK [Evaluate oo_new_etcd_to_config]
*******************************************************************************
 
TASK [Evaluate oo_masters_to_config]
********************************************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [Evaluate oo_etcd_to_config]
*****************************************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [Evaluate oo_first_etcd]
*****************************************************************************
ok: [localhost]
 
TASK [Evaluate oo_etcd_hosts_to_upgrade]
****************************************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [Evaluate oo_etcd_hosts_to_backup]
*****************************************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [Evaluate oo_nodes_to_config]
*****************************************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [Evaluate oo_lb_to_config]
********************************************************************************
 
TASK [Evaluate oo_nfs_to_config]
*****************************************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [Evaluate oo_glusterfs_to_config]
******************************************************************************
 
TASK [Evaluate oo_etcd_to_migrate]
*****************************************************************************
ok: [localhost] => (item=OpenShiftmaster.mop.fr.ibm.com)
[WARNING]: Could not match supplied host pattern, ignoring: oo_lb_to_config
 
PLAY [Ensure that all non-node hosts are accessible]
****************************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Initialize basic host facts]
********************************************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : include_tasks]
*****************************************************************
included: /usr/share/ansible/OpenShift-
ansible/roles/OpenShift_sanitize_inventory/tasks/deprecations.yml for OpenShiftmaster.mop.fr.ibm.com
 
TASK [OpenShift_sanitize_inventory : Check for usage of deprecated variables]
***************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : debug]
*************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : set_stats]
*********************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Assign deprecated variables to correct counterparts]
***************************
included: /usr/share/ansible/OpenShift-
ansible/roles/OpenShift_sanitize_inventory/tasks/__deprecations_metrics.yml for OpenShiftmaster.mop.fr.ibm.com => (item=/usr/share/ansible/OpenShiftansible/roles/OpenShift_sanitize_inventory/tasks/../tasks/__deprecations_metr ics.yml)
included: /usr/share/ansible/OpenShift-
ansible/roles/OpenShift_sanitize_inventory/tasks/__deprecations_logging.yml for OpenShiftmaster.mop.fr.ibm.com => (item=/usr/share/ansible/OpenShiftansible/roles/OpenShift_sanitize_inventory/tasks/../tasks/__deprecations_loggi ng.yml)
 
TASK [OpenShift_sanitize_inventory : conditional_set_fact]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : conditional_set_fact]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : set_fact]
**********************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Standardize on latest variable names]
******************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Normalize OpenShift_release]
***************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Abort when OpenShift_release is invalid]
***************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : include_tasks]
*****************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Ensure clusterid is set along with the cloudprovider]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Ensure ansible_service_broker_remove and ansible_service_broker_install are mutually exclusive]
****************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Ensure template_service_broker_remove and template_service_broker_install are mutually exclusive]
**************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Ensure that all requires vsphere configuration variables are set]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : ensure provider configuration variables are defined]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Ensure removed web console extension variables are not set]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : Ensure that web console port matches API server port]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_sanitize_inventory : At least one master is schedulable]
********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Detecting Operating System from ostree_booted]
****************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set OpenShift_deployment_type if unset]
***********************************************************************
 
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [check for node already bootstrapped]
**************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [initialize_facts set fact OpenShift_is_bootstrapped]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [initialize_facts set fact OpenShift_is_atomic and OpenShift_is_containerized]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Determine Atomic Host Docker Version]
*************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [assert atomic host docker version is 1.12 or later]
***********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Retrieve existing master configs and validate]
****************************************************************
 
TASK [OpenShift_control_plane : stat]
*******************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_control_plane : slurp]
******************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_control_plane : set_fact]
***************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_control_plane : Check for file paths outside of
/etc/origin/master in master's config]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_control_plane : set_fact]
***************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set_fact]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set_fact]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set_fact]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Initialize special first-master variables]
********************************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set_fact]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set_fact]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Disable web console if required]
******************************************************************************
 
TASK [set_fact]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Setup yum repositories for all hosts]
*************************************************************************
 
TASK [rhel_subscribe : fail]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [rhel_subscribe : Install Red Hat Subscription manager]
********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [rhel_subscribe : Is host already registered?]
*****************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [rhel_subscribe : Register host]
*******************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [rhel_subscribe : fail]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [rhel_subscribe : Determine if OpenShift Pool Already Attached]
************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [rhel_subscribe : Attach to OpenShift Pool]
********************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [rhel_subscribe : Satellite preparation]
***********************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_repos : OpenShift_repos detect ostree]
**************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_repos : Ensure libselinux-python is installed]
******************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_repos : Remove OpenShift_additional.repo file]
******************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_repos : Create any additional repos that are defined]
***********************************************
 
TASK [OpenShift_repos : include_tasks]
******************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_repos : include_tasks]
******************************************************************************
included: /usr/share/ansible/OpenShift-
ansible/roles/OpenShift_repos/tasks/centos_repos.yml for
OpenShiftmaster.mop.fr.ibm.com
 
TASK [OpenShift_repos : Configure origin gpg keys]
******************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_repos : Configure correct origin release repository]
************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com] =>
(item=/usr/share/ansible/OpenShiftansible/roles/OpenShift_repos/templates/CentOS-OpenShift-Origin.repo.j2)
 
TASK [OpenShift_repos : Ensure clean repo cache in the event repos have been changed manually]
*****************************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com] => {
"msg": "First run of OpenShift_repos"
}
 
TASK [OpenShift_repos : Record that OpenShift_repos already ran]
****************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
[WARNING]: flush_handlers task does not support when conditional
RUNNING HANDLER [OpenShift_repos : refresh cache]
*******************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Install packages necessary for installer]
*********************************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Determine if chrony is installed]
*****************************************************************************
[WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'. If you need to use command because yum, dnf or zypper is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Install ntp package]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Start and enable ntpd/chronyd]
************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Ensure OpenShift-ansible installer package deps are installed]
************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => (item=iproute)
ok: [OpenShiftmaster.mop.fr.ibm.com] => (item=dbus-python)
ok: [OpenShiftmaster.mop.fr.ibm.com] => (item=PyYAML)
ok: [OpenShiftmaster.mop.fr.ibm.com] => (item=python-ipaddress) changed: [OpenShiftmaster.mop.fr.ibm.com] => (item=libsemanage-python)
ok: [OpenShiftmaster.mop.fr.ibm.com] => (item=yum-utils) changed: [OpenShiftmaster.mop.fr.ibm.com] => (item=python-docker)
 
PLAY [Initialize cluster facts]
******************************************************************************** *****
 
TASK [Gathering Facts]
**************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [get OpenShift_current_version]
********************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set_fact OpenShift_portal_net if present on masters]
**********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Gather Cluster facts]
********* changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Set fact of no_proxy_internal_hostnames]
**********************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Initialize OpenShift.node.sdn_mtu]
****************************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Initialize etcd host variables]
*******************************************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set_fact]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [set_fact]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Determine OpenShift_version to configure on first master]
*****************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [include_role : OpenShift_version]
*****************************************************************************
 
TASK [OpenShift_version : Use OpenShift_current_version fact as version to configure if already installed]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_version : Set OpenShift_version to OpenShift_release if undefined]
**********************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_version : debug]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => {
"msg": "OpenShift_pkg_version was not defined. Falling back to -3.11"
}
 
TASK [OpenShift_version : set_fact]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_version : debug]
********************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => {
"msg": "OpenShift_image_tag was not defined. Falling back to v3.11"
}
 
TASK [OpenShift_version : set_fact]
********************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_version : assert OpenShift_release in OpenShift_image_tag]
******************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => {
"changed": false,
"msg": "All assertions passed"
}
 
TASK [OpenShift_version : assert OpenShift_release in OpenShift_pkg_version]
****************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => {
"changed": false,
"msg": "All assertions passed"
}
 
TASK [OpenShift_version : debug]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => {
"OpenShift_release": "3.11"
}
 
TASK [OpenShift_version : debug]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => {
"OpenShift_image_tag": "v3.11"
}
 
TASK [OpenShift_version : debug]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => { "OpenShift_pkg_version": "-3.11*"
}
 
TASK [OpenShift_version : debug]
**********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] => {
"OpenShift_version": "3.11"
}
 
TASK [set OpenShift_version booleans (first master)]
****************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Set OpenShift_version for etcd, node, and master hosts]
*******************************************************
skipping: no hosts matched
 
PLAY [Verify Requirements]
*****************************************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Run variable sanity checks]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Validate OpenShift_node_groups and OpenShift_node_group_name]
*************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Initialization Checkpoint End]
********************************************************************************
 
TASK [Set install initialization 'Complete']
************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Validate node hostnames]
********************************************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Query DNS for IP address of OpenShiftmaster.mop.fr.ibm.com]
***************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Validate OpenShift_hostname when defined]
*********************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [Validate OpenShift_ip exists on node when defined]
************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY [Configure os_firewall]
********************************************************************************
 
TASK [Gathering Facts]
**************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Detecting Atomic Host Operating System]
*********************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Set fact r_os_firewall_is_atomic]
***************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Fail - Firewalld is not supported on Atomic Host]
***********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Install firewall packages]
*********************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Ensure iptables services are not enabled]
*******************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com] => (item=iptables) changed: [OpenShiftmaster.mop.fr.ibm.com] => (item=ip6tables)
 
TASK [os_firewall : Wait 10 seconds after disabling iptables]
*******************************************************
Pausing for 10 seconds (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort)
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Start and enable firewalld service]
*************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : need to pause here, otherwise the firewalld service starting can sometimes cause ssh to fail]
********************************************************************************
Pausing for 10 seconds
(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort)
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Restart polkitd]
*****************************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Wait for polkit action to have been created]
****************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Ensure firewalld service is not enabled]
********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Wait 10 seconds after disabling firewalld]
******************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [os_firewall : Install iptables packages]
**********************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item=iptables)
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item=iptables-services)
 
TASK [os_firewall : Start and enable iptables service]
**************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item=OpenShiftmaster.mop.fr.ibm.com)
 
TASK [os_firewall : need to pause here, otherwise the iptables service starting can sometimes cause ssh to fail]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
[WARNING]: Could not match supplied host pattern, ignoring: oo_hosts_containerized_managed_true
 
PLAY [oo_nodes_to_config:oo_hosts_containerized_managed_true]
*******************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Setup the docker-storage for overlay]
*****************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Create file system on extra volume device]
************************************************
 
TASK [container_runtime : Create mount entry for extra volume]
******************************************************
 
PLAY [oo_nodes_to_config]
*****************************************************************************
 
TASK [Gathering Facts]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : Install docker excluder - yum]
***********************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : Install docker excluder - dnf]
***********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : Install OpenShift excluder - yum]
********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : Install OpenShift excluder - dnf]
********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : set_fact]
********************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : Check for docker-excluder]
***************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : Enable docker excluder]
******************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : Check for OpenShift excluder]
************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [OpenShift_excluder : Enable OpenShift excluder]
***************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Getting current systemd-udevd exec command]
***********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Assure systemd-udevd.service.d directory exists]
******************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Create systemd-udevd override file]
*******************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Add enterprise registry, if necessary]
****************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Add http_proxy to /etc/atomic.conf]
*******************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Add https_proxy to /etc/atomic.conf]
******************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Add no_proxy to /etc/atomic.conf]
*********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Get current installed Docker version]
*****************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Error out if Docker pre-installed but too old]
********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Error out if requested Docker is too old]
*************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Install Docker]
*****************************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Ensure docker.service.d directory exists]
*************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Configure Docker service unit file]
*******************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : stat]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Set registry params]
**********************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item={u'reg_conf_var': u'ADD_REGISTRY', u'reg_flag': u'--add-registry', u'reg_fact_val': []})
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item={u'reg_conf_var': u'BLOCK_REGISTRY', u'reg_flag': u'--block-registry', u'reg_fact_val': []})
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item={u'reg_conf_var': u'INSECURE_REGISTRY', u'reg_flag': u'--insecure-registry', u'reg_fact_val': []})
 
TASK [container_runtime: Place additional/blocked/insecure registries in ‘/etc/containers/registries.conf]
**********
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Set Proxy Settings]
***********************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item={u'reg_conf_var': u'HTTP_PROXY', u'reg_fact_val': u''})
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item={u'reg_conf_var': u'HTTPS_PROXY', u'reg_fact_val': u''})
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item={u'reg_conf_var': u'NO_PROXY', u'reg_fact_val': u''})
 
TASK [container_runtime : Set various Docker options]
***************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : stat]
*****************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Configure Docker Network OPTIONS]
*****************************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Detect if docker is already started]
******************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Start the Docker service]
*****************************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : set_fact]
********************************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Check for docker_storage_path/overlay2]
***************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Fixup SELinux permissions for docker]
*****************************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Ensure /var/lib/containers exists]
*****************************************************************************
changed: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Fix SELinux Permissions on /var/lib/containers]
*******************************************
ok: [OpenShiftmaster.mop.fr.ibm.com] RUNNING HANDLER [container_runtime : restart container runtime]
*****************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Check for credentials file for registry auth]
*********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Create credentials for docker cli registry auth]
******************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Create credentials for docker cli registry auth (alternative)]
****************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : stat the docker data dir]
*****************************************************************
ok: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : stop the current running docker]
**********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : copy "/var/lib/docker" to "/var/lib/containers/docker"]
***********************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : ensure the unmount of top level mount point]
**********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Set the selinux context on /var/lib/containers/docker]
************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : restorecon the /var/lib/containers/docker]
************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Remove the old docker location]
***********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Setup the link]
***************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : start docker]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Fail if Atomic Host since this is an rpm request]
*****************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Getting current systemd-udevd exec command]
***********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Assure systemd-udevd.service.d directory exists]
******************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Create systemd-udevd override file]
*******************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Add enterprise registry, if necessary]
****************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Check that overlay is in the kernel]
******************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Add overlay to modprobe.d]
****************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Manually modprobe overlay into the kernel]
************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Enable and start systemd-modules-load]
****************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Install cri-o]
****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Remove CRI-O default configuration files]
*************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item=/etc/cni/net.d/200loopback.conf)
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item=/etc/cni/net.d/100crio-bridge.conf)
 
TASK [container_runtime : Create the CRI-O configuration]
***********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Ensure CNI configuration directory exists]
************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Add iptables allow rules]
*****************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item={u'port': u'10010/tcp', u'service': u'crio'})
 
TASK [container_runtime : Remove iptables rules]
********************************************************************
 
TASK [container_runtime : Add firewalld allow rules]
****************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com] => (item={u'port': u'10010/tcp', u'service': u'crio'})
 
TASK [container_runtime : Remove firewalld allow rules]
*************************************************************
 
TASK [container_runtime : Configure the CNI network]
****************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Create /etc/sysconfig/crio-network]
*******************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Start the CRI-O service]
******************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Ensure /var/lib/containers exists]
********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Fix SELinux Permissions on /var/lib/containers]
*******************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Check for credentials file for registry auth]
*********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Create credentials for docker cli registry auth]
******************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Create credentials for docker cli registry auth (alternative)]
****************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : stat the docker data dir]
*****************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : stop the current running docker]
**********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : copy "/var/lib/docker" to "/var/lib/containers/docker"]
***********************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : ensure the unmount of top level mount point]
**********************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Set the selinux context on /var/lib/containers/docker]
************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : restorecon the /var/lib/containers/docker]
************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Remove the old docker location]
***********************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : Setup the link]
***************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
TASK [container_runtime : start docker]
*****************************************************************************
skipping: [OpenShiftmaster.mop.fr.ibm.com]
 
PLAY RECAP
*****************************************************************************
localhost : ok=12 changed=0 unreachable=0 failed=0
OpenShiftmaster.mop.fr.ibm.com : ok=88 changed=19 unreachable=0 failed=0
 
INSTALLER STATUS
*****************************************************************************
Initialization : Complete (0:00:49)
About this document
Bibliography
OpenShift OKD official documentation: https://docs.okd.io/latest/getting_started/administrators.html
Authors
This paperpaperbook was produced by a team of specialists from around the worldtechnical specialist working at IBM Redbooks, Poughkeepsie Center.
Sylvain Carter is an IT Specialist working on mainframe customer technical projects for more than 30 years. Since year 2000, he developed a specialty on mainframe virtualization projects with z/VM & Linux and, more recently, developed an expertise on KVM virtualized solutions running on IBM System Z and LinuxONE. Member of the z Advanded Technical Support (zATS) team, he provides technical support to customers through technology enablement workshops or mainframe virtualized solutions implementations.
Alexandre Dini is a cross-platform IT Specialist keen on Cloud Computing for more than 10 years. After joining a Cloud Social Media Residency, he has written several articles on an IBM Cloud blog. In the past years, he has worked on the redesign and development of IBM Learning platform resulting in a lab instance deployment 15 times faster. He is now working in the IBM Z Benchmark Center in Montpellier with a specific focus on z/VM and Linux on z performances and new workloads.
Neale Ferguson has been working on Linux for over 20 years and was an early contributor to the Linux on Z ecosystem. Sine Nomine Associates maintain a CentOS-based distributioncalled ClefOS which is tailored to the Z environment. He started work on OpenShift on Z back in 2017 and has written and presented internationally on its potential value for the Linux on Z community as well as conducted several Proof-of-Concept projects
Narjisse Zaki is an IT Architect in IBM ATS. She provides Pre-Sales technical support for Linux consolidation projects on Linux on Z and LinuxONE across EMEA countries. She is based in Montpellier, France. Narjisse is also the engagement leader for LinuxONE pre-sales activities in MEA at the IBM Systems Center Montpellier. The past years, Narjisse has been supporting Oracle consolidation projects within the European IBM Oracle Center (IOC). Before joining the IOC, Narjisse was involved in an Agile Project Management leading projects as a Scrum Master. She has been an international speaker in several conference and events all around the world. She holds a M. Engineering in Computer Science and Management. One of her favorite quote is “We travel, some of us forever, to seek other places, other lives, other souls”.
Thanks to the following people for their contributions to this project:
Sébastien Llaurency
Linux and Cloud Lead Architect, IBM ATS, Montpellier
Lydia Parziale
IBM Redbooks, Poughkeepsie Center
Now you can become a published author, too!
Here's an opportunity to spotlight your skills, grow your career, and become a published author—all at the same time! Join an IBM Redbooks residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and customer satisfaction, as you expand your network of technical contacts and relationships. Residencies run from two to six weeks in length, and you can participate either in person or as a remote resident working from your home base.
Find out more about the residency program, browse the residency index, and apply online at:
Stay connected to IBM Redbooks
Find us on Facebook:
Follow us on Twitter:
Look for us on LinkedIn:
Explore new Redbooks publications, residencies, and workshops with the IBM Redbooks weekly newsletter:
Stay current on recent Redbooks publications with RSS Feeds:
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset