Learning how to deploy OpenShift with KubeInit

KubeInit is an Ansible collection to ease the deployment of multiple Kubernetes distributions. This post will show you how to use it to deploy OpenShift in your infrastructure.

Note 2021/10/13: DEPRECATED - This tutorial only works with kubeinit 1.0.2 make sure you use this version of the code if you are following this tutorial, or refer to the documentation to use the latest code.


This post will show you the command and the parameters that needs to be configured to deploy OpenShift (4.7).


Adjust your inventory file accordingly to what you will like to deploy. Please, make sure you read older posts to understand KubeInit’s deployment workflow, or give the docs a try at https://docs.kubeinit.com/.

OpenShift registry token

Then the next step is to fetch a valid registry tokens list (pullsecrets) from https://cloud.redhat.com/openshift/install/pull-secret.

You should get a very long json object as a dictionary with the credential details we need to adjust our deployment pull secrets to be able to “fetch” the images accordingly.

The pullsecret syntax should look like:

    "quay.io":{"auth":"TOKEN2_GOES_HERE","email":"[email protected]"},
    "registry.connect.redhat.com":{"auth":"TOKEN3_GOES_HERE","email":"[email protected]"},
    "registry.redhat.io":{"auth":"TOKEN4_GOES_HERE","email":"[email protected]"}


The deployment procedure is the same as it is for all the other Kubernetes distributions that can be deployed with KubeInit.

Please follow the usage documentation to understand the system’s requirements and the required host supported Linux distributions.

At the moment we will deploy OpenShift 4.7.0 (the latest release available), if you need to deploy other releases adjust the value of the kubeinit_okd_registry_release_tag variable.

# Choose the distro
# Run the deployment command
ansible-playbook \
    -v \
    --user root \
    -i ./hosts/$distro/inventory \
    --become \
    --become-user root \
    -e kubeinit_okd_openshift_deploy=True \
    -e kubeinit_okd_openshift_registry_token_cloud_openshift_com="TOKEN1_GOES_HERE" \
    -e kubeinit_okd_openshift_registry_token_quay_io="TOKEN2_GOES_HERE" \
    -e kubeinit_okd_openshift_registry_token_registry_connect_redhat_com="TOKEN3_GOES_HERE" \
    -e kubeinit_okd_openshift_registry_token_registry_redhat_io="TOKEN4_GOES_HERE" \
    -e kubeinit_okd_openshift_registry_token_email="[email protected]" \

Note: The variables required to override an OpenShift deployment are kubeinit_okd_openshift_deploy, kubeinit_okd_openshift_registry_token_cloud_openshift_com, kubeinit_okd_openshift_registry_token_quay_io, kubeinit_okd_openshift_registry_token_registry_connect_redhat_com, kubeinit_okd_openshift_registry_token_registry_redhat_io, and kubeinit_okd_openshift_registry_token_email.


Deploying also OpenShift demostrates how flexible KubeInit can be. With a few changes we can deploy also downstream Kubernetes distributions ready to be used for production grade deployments.

Once #219 is merged you should be able to run this.

The end

If you like this post, please try the code, raise issues, and ask for more details, features or anything that you feel interested in. Also it would be awesome if you become a stargazer to catch up updates and new features.

This is the main project repository.

Happy KubeIniting!


Want to leave a comment? Visit this post's issue page on GitHub (you'll need a GitHub account. What? Like you already don't have one?!).