{"id":23872270,"url":"https://github.com/arthurvardevanyan/homelab","last_synced_at":"2025-06-30T17:38:12.981Z","repository":{"id":37577154,"uuid":"424783612","full_name":"ArthurVardevanyan/HomeLab","owner":"ArthurVardevanyan","description":"HomeLab Server \u0026 Desktop Configuration","archived":false,"fork":false,"pushed_at":"2024-09-18T10:31:06.000Z","size":50094,"stargazers_count":16,"open_issues_count":0,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-09-18T17:44:08.377Z","etag":null,"topics":["homelab","kubernetes","okd","terraform"],"latest_commit_sha":null,"homepage":"https://www.arthurvardevanyan.com/homelab.html","language":"YAML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArthurVardevanyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2021-11-05T00:41:06.000Z","updated_at":"2024-09-18T10:31:14.000Z","dependencies_parsed_at":"2022-07-12T16:24:32.591Z","dependency_job_id":"5eeee36a-de34-4e71-b50b-ac647297b5d9","html_url":"https://github.com/ArthurVardevanyan/HomeLab","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurVardevanyan%2FHomeLab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurVardevanyan%2FHomeLab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurVardevanyan%2FHomeLab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurVardevanyan%2FHomeLab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArthurVardevanyan","download_url":"https://codeload.github.com/ArthurVardevanyan/HomeLab/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232356456,"owners_count":18510703,"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":["homelab","kubernetes","okd","terraform"],"created_at":"2025-01-03T15:36:27.880Z","updated_at":"2025-06-30T17:38:12.965Z","avatar_url":"https://github.com/ArthurVardevanyan.png","language":"YAML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HomeLab\n\nHomeLab Server/Cluster, Virtual Sandbox Cluster, \u0026 Desktop Configuration\n\n## Table of Contents\n\n- [HomeLab](#homelab)\n  - [Table of Contents](#table-of-contents)\n  - [Remote VsCode](#remote-vscode)\n  - [Server](#server)\n    - [Networking](#networking)\n    - [Kubernetes](#kubernetes)\n      - [Machines](#machines)\n        - [ZFS Storage](#zfs-storage)\n      - [Kubernetes Nodes](#kubernetes-nodes)\n        - [Ceph Performance Tests](#ceph-performance-tests)\n      - [OKD WIF](#okd-wif)\n      - [Kubernetes Commands](#kubernetes-commands)\n        - [Delete Pod Using Graceful Termination Eviction Request](#delete-pod-using-graceful-termination-eviction-request)\n\n## Remote VsCode\n\n```bash\n ansible-playbook -i ansible/inventory --ask-become-pass ansible/vscode-server.yaml --ask-pass \\\n  -e 'ansible_python_interpreter=/usr/bin/python3'\n```\n\n## Server\n\n```mermaid\ngraph TD\n linkStyle default interpolate basis\n\nsubgraph Networking\nwan1[\u003ccenter\u003eWAN\u003cbr\u003e192.168.100.1\u003c/center\u003e]---|1000/50 Mb|router{\u003ccenter\u003eUDM Pro SE\u003cbr\u003e10.0.0.1\u003c/center\u003e}\nwan2[\u003ccenter\u003eLTE\u003cbr\u003e192.168.1.1\u003c/center\u003e]---|750/25 Mb|router\nrouter---|10GbE|switch1[\u003ccenter\u003eUSW-Pro-Max-16\u003cbr\u003e\u003c/center\u003e]\nrouter---|2.5GbE|ap1{\u003ccenter\u003eU7 Pro Wall\u003cbr\u003e\u003c/center\u003e}\nswitch1---|2.5GbE|ap2{\u003ccenter\u003eU7 Pro Max\u003cbr\u003e\u003c/center\u003e}\nswitch1----|10GbE|switch10[\u003ccenter\u003eUSW-Aggregation\u003cbr\u003e\u003c/center\u003e]\nswitch10----|10GbE|switch11[\u003ccenter\u003eUSW-Aggregation\u003cbr\u003e\u003c/center\u003e]\nrouter----|10GbE|switch11[\u003ccenter\u003eUSW-Aggregation\u003cbr\u003e\u003c/center\u003e]\n\n\n\nend\n\nsubgraph Homelab\nrouter----|1GbE|microshift[\u003ccenter\u003eMicroShift / PiHole\u003cbr\u003e10.101.1.7\u003c/center\u003e]\nrouter-.-|1GbE Fail Over|truenas(\u003ccenter\u003eTrueNas\u003cbr\u003e10.101.1.6\u003c/center\u003e)\nend\n\nsubgraph OpenShift/OKD\n    switch1---|2.5GbE|truenas(\u003ccenter\u003eTrueNas\u003cbr\u003e10.101.1.6\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over Host/Pod/LB|server-1(\u003ccenter\u003eserver-1\u003cbr\u003e10.101.10.101\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over Host/Pod/LB|server-2(\u003ccenter\u003eserver-2\u003cbr\u003e10.101.10.102\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over Host/Pod/LB|server-3(\u003ccenter\u003eserver-3\u003cbr\u003e10.101.10.103\u003c/center\u003e)\n\n    switch1-.-|1GbE Fail Over NAD/LM|server-1(\u003ccenter\u003eserver-1\u003cbr\u003e10.101.10.101\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over NAD/LM|server-2(\u003ccenter\u003eserver-2\u003cbr\u003e10.101.10.102\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over NAD/LM|server-3(\u003ccenter\u003eserver-3\u003cbr\u003e10.101.10.103\u003c/center\u003e)\n\n    switch1-.-|1GbE Fail Over Ceph Public|server-1(\u003ccenter\u003eserver-1\u003cbr\u003e10.101.10.101\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over Ceph Public|server-2(\u003ccenter\u003eserver-2\u003cbr\u003e10.101.10.102\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over Ceph Public|server-3(\u003ccenter\u003eserver-3\u003cbr\u003e10.101.10.103\u003c/center\u003e)\n\n    switch1-.-|1GbE Fail Over Ceph Private|server-1(\u003ccenter\u003eserver-1\u003cbr\u003e10.101.10.101\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over Ceph Private|server-2(\u003ccenter\u003eserver-2\u003cbr\u003e10.101.10.102\u003c/center\u003e)\n    switch1-.-|1GbE Fail Over Ceph Private|server-3(\u003ccenter\u003eserver-3\u003cbr\u003e10.101.10.103\u003c/center\u003e)\n\n    switch10----|10 GbE Host/Pod/LB|server-1(\u003ccenter\u003eserver-1\u003cbr\u003e10.101.10.101\u003c/center\u003e)\n    switch10----|10 GbE Host/Pod/LB|server-2(\u003ccenter\u003eserver-2\u003cbr\u003e10.101.10.102\u003c/center\u003e)\n    switch10----|10 GbE Host/Pod/LB|server-3(\u003ccenter\u003eserver-3\u003cbr\u003e10.101.10.103\u003c/center\u003e)\n\n    switch10----|10 GbE NAD/LM|server-1(\u003ccenter\u003eserver-1\u003cbr\u003e10.101.10.101\u003c/center\u003e)\n    switch10----|10 GbE NAD/LM|server-2(\u003ccenter\u003eserver-2\u003cbr\u003e10.101.10.102\u003c/center\u003e)\n    switch10----|10 GbE NAD/LM|server-3(\u003ccenter\u003eserver-3\u003cbr\u003e10.101.10.103\u003c/center\u003e)\n\n    switch11----|10 GbE Ceph Public|server-1(\u003ccenter\u003eserver-1\u003cbr\u003e10.101.10.101\u003c/center\u003e)\n    switch11----|10 GbE Ceph Public|server-2(\u003ccenter\u003eserver-2\u003cbr\u003e10.101.10.102\u003c/center\u003e)\n    switch11----|10 GbE Ceph Public|server-3(\u003ccenter\u003eserver-3\u003cbr\u003e10.101.10.103\u003c/center\u003e)\n\n    switch11----|10 GbE Ceph Private|server-1(\u003ccenter\u003eserver-1\u003cbr\u003e10.101.10.101\u003c/center\u003e)\n    switch11----|10 GbE Ceph Private|server-2(\u003ccenter\u003eserver-2\u003cbr\u003e10.101.10.102\u003c/center\u003e)\n    switch11----|10 GbE Ceph Private|server-3(\u003ccenter\u003eserver-3\u003cbr\u003e10.101.10.103\u003c/center\u003e)\nend\n```\n\n### Networking\n\n**Networking Machines:**\n\n| NAME             | Type   | Status |\n| ---------------- | ------ | ------ |\n| SB6183           | Modem  |        |\n| UDM SE           | Router |        |\n| USW Pro Max 16   | Switch |        |\n| USW Aggregation  | Switch |        |\n| USW Aggregation  | Switch |        |\n| USWFlex XG 10GbE | Switch | Died   |\n| U7 Pro Max       | AP     |        |\n| U7 Pro Wall      | AP     |        |\n\n**Vlans:**\n\n| Site    | Range      |\n| ------- | ---------- |\n| 1       | 10.101.X.X |\n| 2       | 10.102.X.X |\n| Sandbox | 10.103.X.X |\n\n| Name    | VLAN ID | Subnet        | Info                   |\n| ------- | ------- | ------------- | ---------------------- |\n| infra   | 1       | 10.102.1.0/24 |                        |\n| clients | 2       | 10.102.2.0/24 |                        |\n| iot     | 3       | 10.102.3.0/24 | TODO: Enable Isolation |\n\n| Name                      | VLAN ID | Subnet         | Info                    |\n| ------------------------- | ------- | -------------- | ----------------------- |\n| infrastructure            | 111     | 10.101.1.0/24  |                         |\n| clients                   | X       | 10.101.2.0/24  | TODO: Create            |\n| iot                       | X       | 10.101.3.0/24  | TODO: Create            |\n| openshift-machine-network | 10      | 10.101.10.0/24 | Host/Pod/Load Balancers |\n| openshift-nad             | 11      | 10.101.11.0/24 | Virtual Machines        |\n| openshift-ceph-private    | 12      | 10.101.12.0/24 | Isolated                |\n| openshift-ceph-public     | 13      | 10.101.13.0/24 | Isolated                |\n| openshift-lm              | 14      | 10.101.14.0/24 | Isolated                |\n| openshift-ovn-network     | 15      | 10.101.15.0/24 | Isolated                |\n| openshift-service-network | 16      | 10.101.16.0/22 | Isolated                |\n| openshift-pod-network     | 32      | 10.101.32.0/19 | Isolated                |\n\n| Name                           | VLAN ID | Subnet         | Info                    |\n| ------------------------------ | ------- | -------------- | ----------------------- |\n| virt-openshift-machine-network | 310     | 10.103.10.0/24 | Host/Pod/Load Balancers |\n| virt-openshift-nad             | 311     | 10.103.11.0/24 | Virtual Machines        |\n| virt-openshift-ceph-private    | 312     | 10.103.12.0/24 | Isolated                |\n| virt-openshift-ceph-public     | 313     | 10.103.13.0/24 | Isolated                |\n| virt-openshift-lm              | 314     | 10.103.14.0/24 | Isolated                |\n| virt-openshift-ovn-network     | 315     | 10.103.15.0/24 | Isolated                |\n| virt-openshift-service-network | 316     | 10.103.16.0/22 | Isolated                |\n| virt-openshift-pod-network     | 332     | 10.103.32.0/19 | Isolated                |\n\n### Kubernetes\n\n\u003chttps://www.okd.io/\u003e\n\n| Kubernetes Channel | OKD Version | OKD Channel   | OKD OS                   | Storage Layer |\n| ------------------ | ----------- | ------------- | ------------------------ | ------------- |\n| v1.33.\\*           | 4.19-\\*     | stable-scos-4 | CentOS Stream CoreOS 9.0 | CEPH          |\n\n#### Machines\n\n[CPU Benchmark](https://www.cpubenchmark.net/compare/Intel-i5-6600-vs-AMD-RX-427BB-vs-Intel-i3-2130-vs-AMD-GX-415GA-SOC-vs-AMD-Ryzen-7-5700G/2594vs2496vs755vs2081vs4323)\n\n| Machine    | Model          | CPU      | CPU | Mem  | Storage                           | Networking              | ZFS Storage  | Status         |\n| ---------- | -------------- | -------- | --- | ---- | --------------------------------- | ----------------------- | ------------ | -------------- |\n| MicroShift | Raspberry Pi 5 | BCM2712  | 4   | 8G   | 1TB NVME                          | 1x1GbE                  | N/A          | MicroShift     |\n| server-1   | N/A            | R7-5700G | 16  | 128G | 2x4TB NVME, 2x1TB SSD, 2x.5TB SSD | 4x10Gbe (DAC) \u0026\u0026 4x1GbE | N/A          | OpenShift/OKD  |\n| server-2   | N/A            | R7-5700G | 16  | 128G | 2x4TB NVME, 2x1TB SSD,2x.5TB SSD  | 4x10Gbe (DAC) \u0026\u0026 4x1GbE | N/A          | OpenShift/OKD  |\n| server-3   | N/A            | R7-5700G | 16  | 128G | 2x4TB NVME, 2x1TB SSD,2x.5TB SSD  | 4x10Gbe (DAC) \u0026\u0026 4x1GbE | N/A          | OpenShift/OKD  |\n| TrueNas    | Hp ProDesk     | i5-6600  | 4   | 32G  | 120G SSD Boot Mirror              | 1x2.5Gbe \u0026\u0026 1x1GbE      | 5x2TB RaidZ2 | TrueNas        |\n| pfSense    | Hp t730        | RX-427BB | 4   | 4G   | 16G SSD                           | 4x1GbE                  | N/A          | Decommissioned |\n| Bare Metal | Hp t620        | GX-415GA | 4   | 6G   | 16G SSD \u0026 16G USB                 | 1x1GbE                  | N/A          | Decommissioned |\n| Spare      | Hp p7-1226s    | i3-2130  | 4   | 8G   | 240G SSD                          |                         | N/A          | Decommissioned |\n\n| Machine  | PPT | CPU Curve | GFX Curve | CPU Frequency | vMem | Memory Freq |\n| -------- | --- | --------- | --------- | ------------- | ---- | ----------- |\n| server-1 | 40W | -20       | -30       | -750          | 1.35 | 3200        |\n| server-2 | 40W | -20       | -30       | -750          | 1.35 | 3200        |\n| server-3 | 40W | -20       | -30       | -750          | 1.35 | 3200        |\n\n##### ZFS Storage\n\n| Machine | Use    | Dataset   | Size  | Dataset     | Size  | Dataset       | Size  | Disks (SSD)  |\n| ------- | ------ | --------- | ----- | ----------- | ----- | ------------- | ----- | ------------ |\n| TrueNas | Backup | Nextcloud | 750GB | Ceph Backup | 175GB | WindowsBackup | 750GB | 5x2TB RaidZ2 |\n\n#### Kubernetes Nodes\n\n| Attribute             | Value                 |\n| --------------------- | --------------------- |\n| **NAME**              | server-1/2/3          |\n| **ROLES**             | control-plane, worker |\n| **CPU**               | 16                    |\n| **Mem**               | 128G                  |\n| **OS Disk**           | mdadm 2x5TB SSD       |\n| **Container Overlay** | mdadm 2x1TB SSD       |\n| **Ceph Storage**      | 2x4TB CEPH NVME       |\n| **Nic's**             | 4x10GbE/1GbE A/P      |\n| **Bond 0:** v10       | Host/Pod/LoadBalancer |\n| **Bond 2:** v12       | Ceph Private          |\n| **Bond 3:** v13       | Ceph Public           |\n| **Bond 4:** v14       | VM Live Migrate       |\n| **Bond 4.3**          | IOT                   |\n| **Bond 4.11**         | Virtual Machines      |\n| **Bond 4.111**        | Infrastructure        |\n\n##### Ceph Performance Tests\n\n|  test   | class  | threads | bk-size | iops-min | iops-max | iops-avg |  MB/s   |\n| :-----: | :----: | :-----: | :-----: | :------: | :------: | :------: | :-----: |\n|  seq-r  | cephfs |    4    |  256k   |   3968   |   5120   |   4641   |  1216   |\n|  seq-r  | block  |    4    |  256k   |   3958   |   5120   |   4584   |  1202   |\n|  seq-w  | cephfs |    4    |  256k   |   1024   |   2048   |   1661   |   436   |\n|  seq-w  | block  |    4    |  256k   |   1023   |   2048   |   1627   |   427   |\n| rand-r  | cephfs |    4    |  256k   |   3972   |   4854   |   4441   |  1164   |\n| rand-r  | block  |    4    |  256k   |   3596   |   4726   |   4385   |  1150   |\n| rand-w  | cephfs |    4    |  256k   |   266    |   2048   |   1553   |   397   |\n| rand-w  | block  |    4    |  256k   |   1402   |   2048   |   1617   |   423   |\n| rand-rw | cephfs |    4    |  256k   |   952    |   1418   |   1202   | 313/316 |\n| rand-rw | block  |    4    |  256k   |   876    |   1410   |   1190   | 310/312 |\n\n#### OKD WIF\n\n- \u003chttps://github.com/openshift/cloud-credential-operator/blob/master/docs/gcp_workload_identity.md\u003e\n- \u003chttps://github.com/openshift/cloud-credential-operator/blob/master/docs/ccoctl.md\u003e\n\nFile Configuration Locations\n\n```bash\nls ./terraform/gcp/HomeLab/homelab\nls ./terraform/gcp/HomeLab/homelab/wif\nls ./okd/okd-configuration/wif.yaml\n```\n\nCCOCTL Binary: \u003chttps://mirror.openshift.com/pub/openshift-v4/amd64/clients/ocp/stable/ccoctl-linux.tar.gz\u003e\n\n```bash\nPROJECT_ID=\"$(vault kv get -field=project_id secret/gcp/org/av/projects)\"\n\n./ccoctl gcp create-workload-identity-pool --name=okd-homelab-wif --project=homelab-${PROJECT_ID} --dry-run\n./ccoctl gcp create-workload-identity-provider --name=okd-homelab-wif --region=us --project=homelab-${PROJECT_ID} \\\n  --public-key-file=serviceaccount-signer.public --workload-identity-pool=okd-homelab-wif --dry-run\n```\n\n#### Kubernetes Commands\n\n```bash\noc login --web --server https://api.okd.homelab.arthurvardevanyan.com:6443\n\n# Watch ALl Pods\nwatch kubectl get pods -A -o wide --sort-by=.metadata.creationTimestamp\n# Delete Pods that Have a Restart\nkubectl get pods -A | awk '$5\u003e0' | awk '{print \"kubectl delete pod -n \" $1 \" \" $2}' | bash -\n# Drain Node\n oc adm drain server-3 --delete-emptydir-data --ignore-daemonsets --force\n# Nextcloud\nkubectl exec -it nextcloud-0 -n nextcloud -- runuser -u www-data -- php -f /var/www/html/occ\n```\n\n##### Delete Pod Using Graceful Termination Eviction Request\n\n```bash\nNAMESPACE=homelab\nPOD=el-webhook-6b56cc5f84-clfc6\n\ncurl --header \"Authorization: Bearer $(oc whoami -t)\" -H 'Content-type: application/json' \\\n\"$(oc whoami --show-server)/api/v1/namespaces/{$NAMESPACE}/pods/{$POD}/eviction\" \\\n-d '{\"apiVersion\": \"policy/v1\",\"kind\": \"Eviction\",\"metadata\": {\"name\": \"'\"${POD}\"'\",\"namespace\": \"'\"${NAMESPACE}\"'\"}}'\n```\n\n- \u003chttps://docs.okd.io/latest/rest_api/policy_apis/eviction-policy-v1.html#eviction-policy-v1\u003e\n- \u003chttps://unofficial-kubernetes.readthedocs.io/en/latest/tasks/configure-pod-container/configure-pod-disruption-budget/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farthurvardevanyan%2Fhomelab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farthurvardevanyan%2Fhomelab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farthurvardevanyan%2Fhomelab/lists"}