OpenShift clusters on Proxmox made simple
ProxShift has been restructured with modular tasks for better granular control over the cluster deployment workflow. This allows you to run specific parts of the deployment process independently.
tasks/install_prep.ymlPurpose: Validation and preparation
force_install=trueTags: always, manifests, create_iso
tasks/generate_manifests.ymlPurpose: OpenShift manifest generation only
install-config.yaml and agent-config.yamlTags: manifests
tasks/create_iso.ymlPurpose: Bootable ISO creation only
Tags: create_iso
tasks/installation.ymlPurpose: Installation orchestration
Tags: install, vault, cluster_login
tasks/wait_for_installation.ymlPurpose: Installation waiting only
Tags: install
tasks/store_credentials.ymlPurpose: Vault credential storage
Tags: vault
tasks/cluster_login.ymlPurpose: Reusable cluster authentication
Tags: cluster_login, eso, gitops, acm_import
# Using ps.* functions
source proxshift.sh
ps.generate_manifests my-cluster
# Using ansible directly
ansible-playbook site.yaml -e cluster_name=my-cluster --tags=manifests
# Using ansible directly
ansible-playbook site.yaml -e cluster_name=my-cluster --tags=create_iso
# Wait for installation + store credentials + login
ansible-playbook site.yaml -e cluster_name=my-cluster --tags=install,vault,cluster_login
# Store existing credentials in Vault
ansible-playbook site.yaml -e cluster_name=my-cluster --tags=vault
# Using ps.* functions
source proxshift.sh
ps.provision my-cluster
# Using ansible directly
ansible-playbook site.yaml -e cluster_name=my-cluster
# 1. Generate manifests
ansible-playbook site.yaml -e cluster_name=my-cluster --tags=manifests
# 2. Customize manifests manually
# Edit files in ocp_install/my-cluster/
# 3. Create ISO with customized manifests
ansible-playbook site.yaml -e cluster_name=my-cluster --tags=create_iso
# 4. Continue with VM provisioning
ansible-playbook site.yaml -e cluster_name=my-cluster --tags=vm_create,vm_start
# 5. Wait for installation
ansible-playbook site.yaml -e cluster_name=my-cluster --tags=install,vault,cluster_login
- name: "Login to newly provisioned cluster"
ansible.builtin.include_tasks:
file: tasks/cluster_login.yml
vars:
login_cluster_name: ""
login_cluster_api_url: ""
login_auth_method: "kubeadmin"
- name: "Login to ACM hub for import operations"
ansible.builtin.include_tasks:
file: tasks/cluster_login.yml
vars:
login_cluster_name: ""
login_cluster_api_url: ""
login_auth_method: "kubeadmin"
cluster_login.yml can be used for any cluster authenticationβββββββββββββββββββ
β install_prep β β Always runs (validation & setup)
βββββββββββ¬ββββββββ
β
βΌ
βββββββββββββββββββ
βgenerate_manifestsβ β --tags=manifests
βββββββββββ¬ββββββββ
β
βΌ
βββββββββββββββββββ
β create_iso β β --tags=create_iso
βββββββββββ¬ββββββββ
β
βΌ
βββββββββββββββββββ
β VM Creation β β Continue with rest of workflow
βββββββββββ¬ββββββββ
β
βΌ
βββββββββββββββββββ
β installation β β Installation orchestration
βββββββββββ¬ββββββββ
β
βββ wait_for_installation
βββ store_credentials
βββ cluster_login
Before (monolithic):
install_prep.yml did validation + manifests + ISOinstallation.yml did waiting + vault + login in one fileAfter (modular):
install_prep.yml: validation and setup onlygenerate_manifests.yml: manifest generation onlycreate_iso.yml: ISO creation onlywait_for_installation.yml: installation waiting onlystore_credentials.yml: vault operations onlycluster_login.yml: reusable authenticationNo Breaking Changes: Existing ps.provision workflow remains identical.
If you try to create ISO without manifests:
TASK [Fail if required manifest files are missing] ***
fatal: [localhost]: FAILED! =>
msg: |
Required manifest file 'install-config.yaml' not found.
Generate manifests first:
- Run with 'manifests' tag: --tags=manifests
- Or use ps.generate_manifests function
TASK [Check installation status] ***
fatal: [localhost]: FAILED! =>
msg: |
β Installation timed out after 3600 seconds.
Troubleshooting:
- Check logs in: ocp_install/my-cluster
- Review agent.x86_64.iso boot process
- Verify network connectivity and DNS
- Check Proxmox VM console for errors
TASK [Verify cluster login success] ***
msg: |
β Login failed for cluster: my-cluster
Check cluster status and credentials
This provides clear guidance on what steps are needed and how to troubleshoot issues.