{"id":40745413,"url":"https://github.com/karmab/kcli-ztp","last_synced_at":"2026-01-21T15:35:01.513Z","repository":{"id":38350501,"uuid":"253566299","full_name":"karmab/kcli-ztp","owner":"karmab","description":"deploy openshift using ABI  for the hub and ZTP for the spokes","archived":false,"fork":false,"pushed_at":"2025-10-31T13:47:02.000Z","size":1217,"stargazers_count":19,"open_issues_count":0,"forks_count":26,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-31T15:28:02.911Z","etag":null,"topics":["abi","acm","kcli","ztp"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karmab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-04-06T17:16:10.000Z","updated_at":"2025-10-31T13:47:06.000Z","dependencies_parsed_at":"2024-01-25T11:14:16.707Z","dependency_job_id":"f859eeac-7d43-4afb-9e2b-9b9b5fbb4c29","html_url":"https://github.com/karmab/kcli-ztp","commit_stats":null,"previous_names":["karmab/kcli-ztp","karmab/kcli-openshift4-baremetal"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/karmab/kcli-ztp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmab%2Fkcli-ztp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmab%2Fkcli-ztp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmab%2Fkcli-ztp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmab%2Fkcli-ztp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karmab","download_url":"https://codeload.github.com/karmab/kcli-ztp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karmab%2Fkcli-ztp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28635919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T15:01:31.228Z","status":"ssl_error","status_checked_at":"2026-01-21T14:42:58.942Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abi","acm","kcli","ztp"],"created_at":"2026-01-21T15:35:00.682Z","updated_at":"2026-01-21T15:35:01.502Z","avatar_url":"https://github.com/karmab.png","language":"Shell","readme":"## Purpose\n\nThis repository provides automation for deploying the following components:\n\n- a hub cluster using Agent Based Install\n- spokes using ZTP\n\n## Architecture \n\nKcli is leveraged to deploy a plan which creates an \"installer vm\" to drive deployment via the following steps:\n\n- Virtual nodes for both the hub and spokes are created (or combined with baremetal nodes). Note this is optional\n- Client packages such as openshift-install are downloaded with any specified version and tag.\n- Stop the nodes to deploy through redfish.\n- Launch hub install against them\n- Install ZTP requirements such as assisted service, openshift-gitops, a git server, ... \n- Launch spoke deployments\n\nParameters allow to customize the installation\n\nThe installer vm (and additional virtual nodes) can run on any platform supported by kcli with support for iso deployment.\nSo far it was tested on:\n\n- kvm\n- vsphere and esx\n\n### Requirements\n\n#### for kcli\n\n- kcli installed (for rhel8/cento8/fedora, look [here](https://kcli.readthedocs.io/en/latest/#package-install-method))\n- An openshift pull secret (stored by default in openshift_pull.json)\n\n#### on the provisioning node (KVM Only)\n\n- a physical bridge typically named baremetal with a nic from the external network\n\nHere's a script you can run on the provisioning node for that (adjust the NIC variable as per your environment)\n\n```\nexport NIC=eno2\nsudo nmcli connection add ifname baremetal type bridge con-name baremetal\nsudo nmcli con add type bridge-slave ifname $NIC master baremetal\nsudo nmcli con down $NIC; sudo pkill dhclient; sudo dhclient baremetal\n```\n\n## Launch\n\nPrepare a valid parameter file with the information needed. At least, you need to specify the following elements:\n\n- api_ip\n- ingress_ip\n- bmc_user/bmc_password (for real baremetal)\n- an array of your ctlplanes (if thet are not virtual). Each entry in this array needs at least the mac and redfish_address. Optionally you can indicate for each entry a specific bmc_user, bmc_password and disk (to be used as rootdevice hint) either as /dev/XXX or simply XXX\n- an array of your workers (can be left empty if you only want to deploy ctlplanes). The format of those entries follow the one indicated for ctlplanes.\n\nHere's a snippet what the workers variable might look like:\n\n```\nworkers:\n- redfish_address: 192.168.1.5\n- redfish_address: 192.168.1.6\n```\n\nCall the resulting file `kcli_parameters.yml` to avoid having to specify it in the creation command.\n\nThen you can launch deployment with:\n\n```\nkcli create plan\n```\n\n## Interacting in the vm\n\n```\nkcli ssh\n```\n\n## Parameters\n\nNote that you can use the baseplan `kcli_plan_infra.yml` to deploy the infrastructure only\n\n|Parameter                                    |Default Value                |\n|---------------------------------------------|-----------------------------|\n|KUBECONFIG                                   |None                         |\n|acm                                          |True                         |\n|apps                                         |[]                           |\n|apps_install_cr                              |False                        |\n|baremetal_cidr                               |None                         |\n|baseplan                                     |kcli_plan_infra.yml          |\n|bmc_password                                 |calvin                       |\n|bmc_reset                                    |False                        |\n|bmc_user                                     |root                         |\n|cas                                          |[]                           |\n|cluster_network_ipv4                         |10.132.0.0/14                |\n|cluster_network_ipv6                         |fd01::/48                    |\n|converged_flow                               |False                        |\n|cpu_partitioning                             |False                        |\n|deploy_hub                                   |True                         |\n|disable_validations                          |True                         |\n|disconnected                                 |False                        |\n|disconnected_certified_operators             |[]                           |\n|disconnected_certified_operators_version     |None                         |\n|disconnected_clean_pull_secret               |False                        |\n|disconnected_community_operators             |[]                           |\n|disconnected_community_operators_version     |None                         |\n|disconnected_extra_catalogs                  |[]                           |\n|disconnected_extra_images                    |[]                           |\n|disconnected_extra_release                   |None                         |\n|disconnected_marketplace_operators           |[]                           |\n|disconnected_marketplace_operators_version   |None                         |\n|disconnected_operators                       |[]                           |\n|disconnected_operators_version               |None                         |\n|disconnected_password                        |dummy                        |\n|disconnected_to_file                         |False                        |\n|disconnected_url                             |None                         |\n|disconnected_user                            |dummy                        |\n|dns                                          |False                        |\n|dualstack                                    |False                        |\n|dualstack_cidr                               |None                         |\n|dualstack_isolated                           |False                        |\n|fips                                         |False                        |\n|gitops_password                              |dummy                        |\n|gitops_user                                  |dummy                        |\n|go_version                                   |1.13.8                       |\n|http_proxy                                   |None                         |\n|image                                        |centos9stream                |\n|imageregistry                                |False                        |\n|installer_disk_size                          |None                         |\n|installer_ip                                 |None                         |\n|installer_mac                                |None                         |\n|installer_memory                             |None                         |\n|installer_numcpus                            |None                         |\n|installer_wait                               |False                        |\n|keys                                         |[]                           |\n|launch_steps                                 |True                         |\n|manifests_dir                                |manifests                    |\n|monitoring_retention                         |None                         |\n|motd                                         |None                         |\n|network_type                                 |OVNKubernetes                |\n|nfs                                          |False                        |\n|no_proxy                                     |None                         |\n|notify                                       |False                        |\n|notifyscript                                 |scripts/notify.sh            |\n|ntp                                          |False                        |\n|ntp_server                                   |0.rhel.pool.ntp.org          |\n|numcpus                                      |16                           |\n|openshift_image                              |None                         |\n|prs                                          |[]                           |\n|pull_secret                                  |openshift_pull.json          |\n|registry_image                               |quay.io/karmab/registry:amd64|\n|rhnregister                                  |True                         |\n|rhnwait                                      |30                           |\n|schedulable_ctlplanes                        |False                        |\n|service_network_ipv4                         |172.30.0.0/16                |\n|service_network_ipv6                         |fd02::/112                   |\n|spoke_domain                                 |None                         |\n|spoke_policies_dir                           |spoke_policies_dir           |\n|spoke_static_network                         |False                        |\n|spoke_wait                                   |True                         |\n|spoke_wait_time                              |3600                         |\n|static_baremetal_dns                         |None                         |\n|static_baremetal_gateway                     |None                         |\n|static_ips                                   |[]                           |\n|static_network                               |False                        |\n|tag                                          |4.20                         |\n|users_admin                                  |admin                        |\n|users_adminpassword                          |admin                        |\n|users_dev                                    |dev                          |\n|users_devpassword                            |dev                          |\n|version                                      |stable                       |\n|wait_for_workers                             |True                         |\n|wait_for_workers_number                      |None                         |\n|wait_for_workers_timeout                     |3600                         |\n\n### Node parameters\n\nwhen specifying *baremetal_ctlplanes* or *baremetal_workers* as an array, the specification can be created with something like this\n\n```\n- redfish_address: 192.168.123.45\n  mac: 98:03:9b:62:81:49\n```\n\nThe following parameters can be used in this case:\n\n- redfish_address. Redfish url\n- boot_mode (optional). Should either be set to Legacy, UEFI or UEFISecureBoot\n- bmc_user. If not specified, global bmc_password variable is used\n- bmc_password.  If not specified, global bmc_password variable is used\n- disk. Optional rootDeviceHint disk device\n- ip, nic, gateway. Those attributes can be provided to set static networking using nmstate. Nic can be omitted. If gateway isn't provided, the static_gateway is used or gateway is guessed from baremetal_cidr\n\n## Sample parameter files\n\nThe following sample parameter files are available for you to deploy:\n\n- [lab.yml](paramfiles/lab.yml) This deploys 3 ctlplanes in a dedicated ipv4 network\n- [lab_ipv6.yml](paramfiles/lab_ipv6.yml) This deploys 3 ctlplanes in a dedicated ipv6 network (hence in a disconnected manner) and a SNO spoke on top\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarmab%2Fkcli-ztp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarmab%2Fkcli-ztp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarmab%2Fkcli-ztp/lists"}