{"id":27876513,"url":"https://github.com/reddydodda/mcc-virtual","last_synced_at":"2025-06-28T23:33:11.958Z","repository":{"id":115553115,"uuid":"341795197","full_name":"reddydodda/mcc-virtual","owner":"reddydodda","description":"Deploy MCC and MOSK on single KVM node","archived":false,"fork":false,"pushed_at":"2024-07-18T15:30:33.000Z","size":115,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-05T02:51:56.435Z","etag":null,"topics":["mcc","mosk","openstack"],"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/reddydodda.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}},"created_at":"2021-02-24T05:58:02.000Z","updated_at":"2025-01-17T02:35:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"0db6b1f8-e7ff-46a2-8f94-78495e38584b","html_url":"https://github.com/reddydodda/mcc-virtual","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/reddydodda/mcc-virtual","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reddydodda%2Fmcc-virtual","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reddydodda%2Fmcc-virtual/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reddydodda%2Fmcc-virtual/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reddydodda%2Fmcc-virtual/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reddydodda","download_url":"https://codeload.github.com/reddydodda/mcc-virtual/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reddydodda%2Fmcc-virtual/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262513626,"owners_count":23322661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["mcc","mosk","openstack"],"created_at":"2025-05-05T02:49:21.961Z","updated_at":"2025-06-28T23:33:11.938Z","avatar_url":"https://github.com/reddydodda.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCC Bootstrap Setup\n\nThis guide provides step-by-step instructions for setting up a bare metal server and bootstrapping a MCC environment.\n\n## Prerequisites\n\n1. **Baremetal Server Requirements:**\n   - Minimum 256 GB memory\n   - Minimum 32 cores CPU\n   - Minimum 1 TB storage\n\n2. **Operating System:**\n   - Ubuntu 20.04\n\n3. **Clone the Repository:**\n   ```bash\n   git clone http://github.com/reddydodda/mcc-virtual.git\n   cd mcc-virtual/\n   ```\n\n## Automated Deployment Script\n\nThe Python script mcc-mosk.py will automates the entire deployment process of MCC and MOSK without any manual steps.\n\n### Steps to Use `mcc-mosk.py`:\n\n```bash\npython3 mcc-mosk.py\n```\n\n\n## Manual Steps for deploying MCC\n\n### 1. Run the VBMC Script\n\n1. Ensure the `hosts.txt` file contains the IP address of your KVM node.\n2. Run the `vbmc` script to create virtual bridges and configure Virtual BMC.\n\n```bash\n./01-install-vbmc.sh\n```\n\n### 3. Run Virt Install\n\n```bash\n./02-virt-install.sh --create\n```\n\n### 4. Run Bootstrap Script\n\n```bash\n./bootstrap_node.sh\n```\n\n### 5. Reboot the Node\n\n```bash\nsudo reboot\n```\n\n### 6.  Run Bootstrap Process\n\n\n  i. Update/Replace mirantis.lic file at kaas-bootstrap/mirantis.lic.\n\n  \n  ii. Navigate to the kaas-bootstrap directory.\n\n   ```bash\n   cd kaas-bootstrap\n   ```\n iii. Execute the bootstrap script.\n\n   ```bash\n   ./bootstrap.sh bootstrapv2\n   ```\n\n### 7. Apply Templates to Bootstrap\n\n i. Apply the necessary templates using kubectl.\n\n   ```bash\n   export KUBECONFIG=~/.kube/kind-config-clusterapi\n\n   ./kaas-bootstrap/bin/kubectl create -f mcc/bootstrapregion.yaml.template\n   ./kaas-bootstrap/bin/kubectl create -f mcc/serviceusers.yaml.template\n   ./kaas-bootstrap/bin/kubectl create -f mcc/cluster.yaml.template\n   ./kaas-bootstrap/bin/kubectl create -f mcc/baremetalhostprofiles.yaml.template\n   ./kaas-bootstrap/bin/kubectl create -f mcc/baremetalhosts.yaml.template\n   ./kaas-bootstrap/bin/kubectl create -f mcc/ipam-objects.yaml.template\n   ./kaas-bootstrap/bin/kubectl create -f mcc/metallbconfig.yaml.template\n   ./kaas-bootstrap/bin/kubectl create -f mcc/machines.yaml.template\n   ```\n\n### 8. Monitor the Process\n\n  ```bash\n  kubectl get bmh -o go-template='{{- range .items -}} {{.status.provisioning.state}}{{\"\\n\"}} {{- end -}}'\n\n  kubectl get bootstrapregions -o go-template='{{(index .items 0).status.ready}}{{\"\\n\"}}'\n\n  kubectl get bootstrapregions -o go-template='{{(index .items 0).status.conditions}}{{\"\\n\"}}'\n  ```\n\n### 9. Approve the Changes\n\n  BMH node status should be `available` before approving bootstrap\n\n  ```bash\n  ./kaas-bootstrap/container-cloud bootstrap approve all\n  ```\n\n### 10. Check Machine Status\n\n ```bash\n kubectl get bmh -o wide\n kubectl get lcmmachines -o wide\n ```\n\n### 11. Generate Kubeconfig File\n\n  i. Once lcmmachine is in Ready state, generate the kubeconfig file for the MCC cluster.\n\n  ```bash\n  ../kaas-bootstrap/container-cloud get cluster-kubeconfig --kubeconfig ~/.kube/kind-config-clusterapi --cluster-name kaas-mgmt\n  ```\n  \n  ii. Generate Keycloak credentials.\n\n  ```bash\n  ../kaas-bootstrap/container-cloud get keycloak-creds --mgmt-kubeconfig kubeconfig\n  ```\n\n### 12.  Delete the Cluster (Optional)\n\n ```bash\n ./bin/kind delete cluster -n clusterapi\n ```\n\n## Create MOSK Cluster\n\n### 1. Create mosk cluster templates\n\n ```bash\n ./04-mosk-setup.sh\n ```\n\n### 2. Check BMH and Machine Status\n\n ```bash\n watch \"kubectl get bmh -o wide -A ; kubectl get lcmmachines -o wide -A\"\n ```\n\n### 3. Check KAAS Ceph Cluster ( KCC ) Status\n\n ```bash\n kubectl get kcc -o wide -A\n ```\n\n### 4. Once Nodes and KCC are in Ready state generate MOSK cluster Kubeconfig \n\n ```bash\n kubectl -n {NAMESPACE}  get secrets {NAMESPACE}-kubeconfig -o jsonpath='{.data.admin\\.conf}' | base64 -d | sed 's/:5443/:443/g' | tee mosk.kubeconfig\n ```\n\n### 5. Check for ceph keyrings and ceph health before applying MOSK OSDPL templates\n\n ```bash\n kubectl -n openstack-ceph-shared get secrets openstack-ceph-keys -o yaml\n\n kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph -s\n ```\n\n### 6. Apply OSDPL secrets and OSDPL object\n\n ```bash\n kubectl apply -f mosk/10-osdpl/osdpl-secret.yaml\n\n kubectl apply -f mosk/10-osdpl/osdpl.yaml\n ```\n\n### 7. Check for OSDPL status \n\n ```bash\n kubectl -n openstack get osdplst -o wide\n ```\n\n\n### Cleanup\n\n1. To clean up the VMs and associated resources, run the following script:\n\n```bash\n./manage_vms.sh --cleanup\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freddydodda%2Fmcc-virtual","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freddydodda%2Fmcc-virtual","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freddydodda%2Fmcc-virtual/lists"}