Compare commits
516 Commits
0.1.2
...
818b6505dd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
818b6505dd | ||
|
|
4a1958876f | ||
|
|
6bdb536848 | ||
|
|
6023ee25e1 | ||
|
|
e5d24f557a | ||
|
|
f8e137b67b | ||
|
|
76241e75a8 | ||
|
|
d5ce6ff96a | ||
|
|
44b1a2fb33 | ||
|
|
7dc1999928 | ||
|
|
63d480927d | ||
|
|
fa86fa4c9c | ||
|
|
444b597ade | ||
|
|
c81a9b7704 | ||
|
|
6cab6519b1 | ||
|
|
ce992ca743 | ||
|
|
092d1ac209 | ||
|
|
6acf2f9944 | ||
|
|
8d18f42b2e | ||
|
|
152f10ed8b | ||
|
|
d99ebca829 | ||
| df91305e13 | |||
|
|
6f2b6e0290 | ||
|
|
fc34833472 | ||
|
|
7f37211a8b | ||
|
|
ccc956f70b | ||
|
|
511f32e521 | ||
|
|
87a3e84f5b | ||
|
|
1743145e9f | ||
|
|
d561ac6e04 | ||
|
|
99bc31dee9 | ||
|
|
ac8e7acbd4 | ||
|
|
0ad5dbe741 | ||
|
|
7d9b054340 | ||
|
|
4b1e8a7cac | ||
|
|
8f190eb188 | ||
|
|
95ae6919b0 | ||
|
|
52e97f3a7c | ||
|
|
461aa1bc54 | ||
|
|
c38461a6e8 | ||
|
|
6bcb6fa93f | ||
|
|
f4181349f8 | ||
|
|
9d860367cc | ||
|
|
f654c59dd5 | ||
|
|
d22ac5cef2 | ||
|
|
0fd69e0b90 | ||
|
|
e8d87ff092 | ||
|
|
23612a38f2 | ||
|
|
bd100c15e7 | ||
|
|
dc5392446c | ||
|
|
f8cf139b10 | ||
|
|
ac955d327f | ||
|
|
9e6339037a | ||
|
|
b647f6afee | ||
|
|
aabb3d5009 | ||
|
|
4ed64ab91c | ||
|
|
f57e0bef02 | ||
|
|
9ed7466fd8 | ||
|
|
4d7766d1b1 | ||
|
|
09ae954085 | ||
|
|
8fd9fd5b20 | ||
|
|
dcb764eca7 | ||
|
|
b6a4ad6816 | ||
|
|
bbaaf655fa | ||
|
|
7228dc6e11 | ||
|
|
8953702608 | ||
|
|
0be33cb8db | ||
|
|
0f0b5db29b | ||
|
|
009f244739 | ||
|
|
2f87039f17 | ||
|
|
72fa38e928 | ||
|
|
9e68802090 | ||
|
|
d05cfcf317 | ||
|
|
80f810fb0c | ||
|
|
9153324795 | ||
|
|
91b5817e5f | ||
|
|
1dfa7889ab | ||
|
|
08d7da0c35 | ||
|
|
9ebeb42023 | ||
|
|
075f34b1fb | ||
|
|
210c89c2c7 | ||
|
|
b93a6e50ab | ||
|
|
85cc1f8c6a | ||
|
|
8e781b0c54 | ||
|
|
d8ad35b8e9 | ||
|
|
a9973d1e0f | ||
| 4113011f63 | |||
|
|
018782d986 | ||
|
|
3681e8c03e | ||
|
|
8f377e4cf3 | ||
|
|
419acaa40d | ||
|
|
42b204bf8a | ||
|
|
1d7dcb7d82 | ||
|
|
d63ca0b4f9 | ||
|
|
e9440327aa | ||
|
|
dcc7e282c7 | ||
|
|
6d5fc7c5c6 | ||
| 312fdf9986 | |||
|
|
4e0b4fa049 | ||
|
|
cf7c2a1436 | ||
|
|
3dc6555ad1 | ||
|
|
27ff9286b4 | ||
|
|
6e50461999 | ||
|
|
3f1c3a40cf | ||
|
|
0116ec4cc3 | ||
|
|
f962d0a6d7 | ||
|
|
dc3c0d7cb1 | ||
|
|
b05f9fad09 | ||
|
|
8650995926 | ||
|
|
e5469d2cb8 | ||
|
|
702698ddcd | ||
|
|
d233d582d4 | ||
|
|
3839fac162 | ||
|
|
b01dac85da | ||
|
|
37a49824d0 | ||
|
|
0127016ab2 | ||
|
|
e0b6fcb24a | ||
|
|
e7d9a8fec5 | ||
|
|
1a9addc537 | ||
|
|
401f25b1c4 | ||
|
|
ece522074e | ||
|
|
c30c0074f1 | ||
|
|
fa51dc2c4d | ||
|
|
c1810fde8a | ||
| a781ef8b14 | |||
|
|
92b2a9d609 | ||
|
|
9250b0f193 | ||
| 24869f47ee | |||
| bb5a57e909 | |||
| 9f3d81729d | |||
| 064d3e8b3d | |||
| ef7e3c61ed | |||
| 64951e1e5e | |||
| 58931732f7 | |||
| be8e50d590 | |||
| e309acd67d | |||
| 4e7f14ea5a | |||
| b79f0505b7 | |||
| 045ac85353 | |||
| 60af4304b6 | |||
| 96e946ac09 | |||
| 6584ed9dc4 | |||
| 3017c27910 | |||
| c25c2a25ad | |||
| 0476e489d4 | |||
| bf0d7a20a7 | |||
| ed0091cd05 | |||
| 402f93ab38 | |||
| 8944da8c99 | |||
| d671700466 | |||
| 562e102a9b | |||
| f4c60d7560 | |||
| 0dae8327eb | |||
| 39b7b91f45 | |||
| a7f77514d6 | |||
| b45dcea4c3 | |||
| 2ed70b4964 | |||
| dbf0b18f07 | |||
| 1cfc9b5f5d | |||
| c8f75bef8a | |||
| fc171b48e9 | |||
| 5504d0c6f4 | |||
| 025e9a8f1c | |||
| 06db61c6c0 | |||
| 8601ad9cd9 | |||
| 1f7318f1c3 | |||
| cdc78955b1 | |||
| 6f0c751f63 | |||
| f1ef759206 | |||
| 5f5f8cb173 | |||
| eb93eb7352 | |||
| 9cd9a30fbe | |||
| 5a30521d66 | |||
| 725d403d34 | |||
| 9a604042ca | |||
| 10406e1705 | |||
| 4717f63bc3 | |||
| 2ff74cdc7c | |||
| 87f2d6bf95 | |||
| 88ec796267 | |||
| 344a29a374 | |||
| c7fbe8e963 | |||
| 03acab784a | |||
| 3ce3ecac66 | |||
| bc24c00c50 | |||
| 3e9a843e1b | |||
| 5e99408c1f | |||
| e4a2c47da2 | |||
| 13ebe67a35 | |||
| ca1cdd0634 | |||
| 74e53d1364 | |||
| e946bd71f0 | |||
| 905b4619d6 | |||
| 97e9889251 | |||
| 9f3ac95d8d | |||
| 84523d0054 | |||
| f8c6b327f9 | |||
| 79662aa545 | |||
| 69b91a2e1d | |||
| 9961fe1ed4 | |||
| 4db6f0b06f | |||
| 307413f3f2 | |||
| 836ef66cf0 | |||
| 4cbaebc98b | |||
| c1d85b7f89 | |||
| c087f32355 | |||
| 9ad585681f | |||
| 40ab77f061 | |||
| 1d0adb7689 | |||
| 1d6b216b74 | |||
| df0d81ec4d | |||
| ea7d079f27 | |||
| 5022fc90ab | |||
| 45c478bede | |||
| 03b8abbe4d | |||
| 42ea1e2d03 | |||
| b85b237129 | |||
| 1d6a8c154c | |||
| 6f14d48d5e | |||
| fa9fd9c65f | |||
| 86cf979453 | |||
| cc0fd647ab | |||
| 591522f643 | |||
| 643fefb4bf | |||
| e8810195cd | |||
| 3d2669497a | |||
| 42f7a2773d | |||
| 35c1bdb3bf | |||
| 9605b9d3bd | |||
| dfa219191d | |||
| 14502df261 | |||
| ea7e05dcc2 | |||
| 26f7d3214f | |||
| 173a36c518 | |||
| fcb1777336 | |||
| f82c13cd09 | |||
| e9a854faed | |||
| 344e8dff69 | |||
| 36c2e9540c | |||
| 40dda3241f | |||
| db67f71a3c | |||
| 920ea80261 | |||
| ad03943339 | |||
| a349ce13f8 | |||
| 7d7129632f | |||
| e3b3401544 | |||
| bba9278895 | |||
| d941557e88 | |||
| 4964552483 | |||
| 7e0b0a859b | |||
| b33bd5f252 | |||
| 63b9a8fd13 | |||
| 6350cb681f | |||
| 676fc02c91 | |||
| 75e0d99495 | |||
| b51cd1a868 | |||
| 7187dc8280 | |||
| 86708542c9 | |||
| 74172c4e5a | |||
| 8c8835d1d5 | |||
| 286d20f8c1 | |||
| 05ba1bbdb3 | |||
| 7c2ef04d47 | |||
| 73eee46101 | |||
| 510da9c2a4 | |||
| 702c71fcff | |||
| 3f31f77bc8 | |||
| 6f5bc65171 | |||
| 6107e474c1 | |||
| e7f8fd2ccd | |||
| 1272fa3cb3 | |||
| a76c99e825 | |||
| d1b6df7d94 | |||
| 14d28f7937 | |||
| a67818c0f3 | |||
| 0d03a42337 | |||
| 853cd90148 | |||
| 4108600a57 | |||
| 59826cb7a9 | |||
| cb99f1f5d2 | |||
| a61491acf3 | |||
| 7b483364be | |||
| 9a8978d046 | |||
| 72b943ee04 | |||
| dd3cf2cd0f | |||
| dbd1c94ada | |||
| c532e7b7de | |||
| 3c90b68896 | |||
| 36c5215ed4 | |||
| d7d0027b64 | |||
| 428809719a | |||
| 45d8c51a75 | |||
| 7c605a7337 | |||
| a3cd499297 | |||
| ac0a4c0580 | |||
| 932beed25a | |||
| 79f5a9d129 | |||
| b2ebe28397 | |||
| 6c300ca545 | |||
| eea499a32c | |||
| fcd839a00e | |||
| 45b5e65e36 | |||
| 900098b9c1 | |||
| 1b5213af1d | |||
| efcd022d27 | |||
| 9f328a01a4 | |||
| 97e9c8c037 | |||
| b885d1d707 | |||
| a084340ce0 | |||
| 1b5597ac09 | |||
| 8710665255 | |||
| 81e292dc2b | |||
| aa5087882d | |||
| 1959a667d4 | |||
| 405aae5209 | |||
| b7e090ed7c | |||
| 02b788ee63 | |||
| a642d2382d | |||
| 6ea3611e08 | |||
| a255908108 | |||
| 9b85eabf41 | |||
| 1fb37b2da9 | |||
| 4193f33183 | |||
| 2ae45aca00 | |||
| 19f7af6b1c | |||
| 94f609140b | |||
| d60f24183b | |||
| 1728ede010 | |||
| 1d828f455c | |||
| a12ff980c5 | |||
| 9cb44fb15c | |||
| ffd5e085e1 | |||
| 0403077495 | |||
| 2124f86879 | |||
| 86c03c882d | |||
| 2725aecb58 | |||
| 0c99612913 | |||
| 7e93e9b1b1 | |||
| d2d3ee7c78 | |||
| 8dc2243140 | |||
| 2a323f5675 | |||
| cfc70229ee | |||
| 593e71509b | |||
| bca855046f | |||
| 7aa29a3f67 | |||
| 0f27698fef | |||
| a493cb75f9 | |||
| 31a4d7e3d3 | |||
| 79706c90ff | |||
| fabc113c84 | |||
| 01bc13e0a2 | |||
| 1eb12c2582 | |||
| 6d43a0c7a8 | |||
| c85d4f7a3d | |||
| 7ffc2c983b | |||
| 4fd272ddf7 | |||
| 99fb15f8f0 | |||
| bd27975bf3 | |||
| ee3f2d7fcf | |||
| 81accaf9a2 | |||
| 23052096f2 | |||
| 0fc6bc340b | |||
| 36ccbcbab1 | |||
| 574fdfe25c | |||
| 0987226b0d | |||
| b200294ebc | |||
| 27553fc4d1 | |||
| 7925990631 | |||
| 4639725099 | |||
| edb019c38e | |||
| 1742dff512 | |||
| 01e02a6687 | |||
| bca03f901a | |||
| 4c72e35707 | |||
| ff925aee83 | |||
| 05fa4eaa43 | |||
| 48b8548528 | |||
| 0764cc8bd7 | |||
| 28e57361e2 | |||
| 5e1522fefb | |||
| 4a2120f830 | |||
| e09c33d307 | |||
| 943795984f | |||
| 796881ecc5 | |||
| cf507a70af | |||
| c104009aaa | |||
| d085f80ea7 | |||
| 8121e5c048 | |||
| c51615543b | |||
| 625c4b8fe1 | |||
| 23b43a16b3 | |||
| 44b9d099c7 | |||
| 350a149645 | |||
| b358c93c16 | |||
| 6feea89ec1 | |||
| b09f8e1ad5 | |||
| 06b28b1297 | |||
| f807f47642 | |||
| 79f231eaa1 | |||
| e6abae943d | |||
| e5f84ccbf2 | |||
| 9d482087e5 | |||
| face668dfc | |||
| 8293c842e6 | |||
| fc31dd2a5a | |||
| efecef6832 | |||
| 5612932691 | |||
| 0f4d2dcb7c | |||
| c625e48dee | |||
| 23bdd17e25 | |||
| 98cad7348c | |||
| 8212a69802 | |||
| 2bce9c3f29 | |||
| 3d4afce244 | |||
| 244de0cbd8 | |||
| 6676de9fa9 | |||
| e2ac684526 | |||
| ec70eb4db7 | |||
| ba53d1a8b7 | |||
| 7417f77703 | |||
| fe2a416c5e | |||
| 666ae2ddd1 | |||
| f2a5432f28 | |||
| d093b467f5 | |||
| b5a8ca78b4 | |||
| baa3bc6562 | |||
| 631aa6f626 | |||
| caea2573e8 | |||
| 560a741d7d | |||
| 5ad067785d | |||
| b2ee8b1cb3 | |||
| c25d519267 | |||
| 4b8920e777 | |||
| 13fc11684a | |||
| 0904d0f460 | |||
| 747c05da72 | |||
| daa71d4f32 | |||
| 889b7093ce | |||
| 150b58e30b | |||
| c830d93eab | |||
| b378222a7f | |||
| 55f836f54c | |||
| 95e74e3976 | |||
| 5f0c391a24 | |||
| 4790d8b887 | |||
| f7d1763910 | |||
| 0449e0030d | |||
| d237978826 | |||
| 587474764b | |||
| 74aa399d2f | |||
| affb341f1a | |||
| dec53bb421 | |||
| 83af94f26e | |||
| 61780570fc | |||
| fa91e5d41e | |||
| 4d1140e25d | |||
| 362b8160c8 | |||
| 891f28a3c2 | |||
| f1585a869b | |||
| 885b6eb999 | |||
| 6100e7e290 | |||
| 5a556234f7 | |||
| 62ab9a7702 | |||
| 5b07f417b4 | |||
| 988e7d52d3 | |||
| 6316dcf325 | |||
| 92902c819b | |||
| eae73178bf | |||
| f3e781eebf | |||
| 0210b14c64 | |||
| 512b0a8a97 | |||
| 02defd6868 | |||
| 5c2a01e71c | |||
| 95645f5bb5 | |||
| ad08d42a92 | |||
| 27c33c5da7 | |||
| 142cb44a2b | |||
| 7eb3e56b0d | |||
| 6758ea4156 | |||
| d50b242f73 | |||
| e9ec460112 | |||
| 0c0fb70b30 | |||
| 4066867893 | |||
| 9b59fa8f50 | |||
| 14e097442c | |||
| 5464241d01 | |||
| fde47b6061 | |||
| ab36a52f6c | |||
| 0f8a671def | |||
| 7c5b606ede | |||
| 60979aa450 | |||
| 4227f84c0c | |||
| 1ecadb7718 | |||
| c6bffaadfa | |||
| a05f7bf96a | |||
| d4ee41df76 | |||
| a5782b5a83 | |||
| ec46fce86b | |||
| 0b22970bad | |||
| 0f26afd794 | |||
| 939177be6b | |||
| 0a25edab88 | |||
| d76d8f8e05 | |||
| fe564d7227 | |||
| 68785684d5 | |||
| b9b83d1fea | |||
| 0585df6849 | |||
| 49268aaf39 | |||
| 1074030418 | |||
| 36cecc4239 | |||
| e70e928e65 | |||
| f71e58e616 | |||
| 98906fa65e | |||
| 03e958d022 | |||
| 413b2a9b7c | |||
| 28fc82623a |
59
.gitignore
vendored
59
.gitignore
vendored
@@ -1,15 +1,9 @@
|
|||||||
# macOS system files
|
# macOS
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.AppleDouble
|
.AppleDouble
|
||||||
.LSOverride
|
.LSOverride
|
||||||
|
|
||||||
# Icon must end with two \r
|
|
||||||
Icon
|
Icon
|
||||||
|
|
||||||
# Thumbnails
|
|
||||||
._*
|
._*
|
||||||
|
|
||||||
# Files that might appear in the root of a volume
|
|
||||||
.DocumentRevisions-V100
|
.DocumentRevisions-V100
|
||||||
.fseventsd
|
.fseventsd
|
||||||
.Spotlight-V100
|
.Spotlight-V100
|
||||||
@@ -17,32 +11,53 @@ Icon
|
|||||||
.Trashes
|
.Trashes
|
||||||
.VolumeIcon.icns
|
.VolumeIcon.icns
|
||||||
.com.apple.timemachine.donotpresent
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
# Directories potentially created on remote AFP share
|
|
||||||
.AppleDB
|
.AppleDB
|
||||||
.AppleDesktop
|
.AppleDesktop
|
||||||
Network Trash Folder
|
Network Trash Folder
|
||||||
Temporary Items
|
Temporary Items
|
||||||
.apdisk
|
.apdisk
|
||||||
|
|
||||||
# VS Code
|
|
||||||
.vscode/
|
|
||||||
|
|
||||||
# macOS metadata
|
|
||||||
*.icloud
|
*.icloud
|
||||||
|
|
||||||
# Terraform
|
# IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
.kiro/
|
||||||
|
|
||||||
|
# Terraform (track .tf files, ignore state and runtime)
|
||||||
.terraform/
|
.terraform/
|
||||||
*.tfstate
|
*.tfstate
|
||||||
*.tfstate.backup
|
*.tfstate.backup
|
||||||
|
# *.tfvars
|
||||||
# Crash log files
|
!*.tfvars.example
|
||||||
|
!*.pkrvars.hcl
|
||||||
crash.log
|
crash.log
|
||||||
|
|
||||||
# Ignore override files as they are usually used to override resources locally
|
|
||||||
*.override.tf
|
*.override.tf
|
||||||
*.override.tf.json
|
*.override.tf.json
|
||||||
|
|
||||||
# Ignore CLI configuration files
|
|
||||||
.terraformrc
|
.terraformrc
|
||||||
.terraformrc.json
|
terraform.rc
|
||||||
|
|
||||||
|
# Ansible
|
||||||
|
*.retry
|
||||||
|
ansible/vault/*.vault
|
||||||
|
|
||||||
|
# Packer
|
||||||
|
packer_cache/
|
||||||
|
|
||||||
|
# Secrets
|
||||||
|
*.pem
|
||||||
|
*.key
|
||||||
|
|
||||||
|
# Environment files with secrets
|
||||||
|
boilerplates/**/.env
|
||||||
|
|
||||||
|
# Local paths
|
||||||
|
~/
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
doppler-token.yaml
|
||||||
|
|
||||||
|
# talhelper generated machine configs — contain secrets, never commit
|
||||||
|
talos/talhelper/clusterconfig/
|
||||||
|
# talenv.yaml plaintext — only commit the SOPS-encrypted version
|
||||||
|
talos/talhelper/talenv.yaml
|
||||||
|
!talos/talhelper/talenv.sops.yaml
|
||||||
3
.sops.yaml
Normal file
3
.sops.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
creation_rules:
|
||||||
|
- path_regex: talos/talhelper/talenv.yaml
|
||||||
|
age: age1xkyuv8r8ce6lu3d64jfspz4e50k6pxlaxwmuplzrtnpfnnrnycaq6mfsrn
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
# README
|
|
||||||
|
|
||||||
inventory # inventory file for all servers
|
|
||||||
|
|
||||||
group_vars/
|
|
||||||
group1.yml # here we assign variables to particular groups
|
|
||||||
group2.yml
|
|
||||||
host_vars/
|
|
||||||
hostname1.yml # here we assign variables to particular systems
|
|
||||||
hostname2.yml
|
|
||||||
|
|
||||||
library/ # if any custom modules, put them here (optional)
|
|
||||||
module_utils/ # if any custom module_utils to support modules, put them here (optional)
|
|
||||||
filter_plugins/ # if any custom filter plugins, put them here (optional)
|
|
||||||
|
|
||||||
site.yml # master playbook
|
|
||||||
webservers.yml # playbook for webserver tier
|
|
||||||
dbservers.yml # playbook for dbserver tier
|
|
||||||
|
|
||||||
roles/
|
|
||||||
common/ # this hierarchy represents a "role"
|
|
||||||
tasks/ #
|
|
||||||
main.yml # <-- tasks file can include smaller files if warranted
|
|
||||||
handlers/ #
|
|
||||||
main.yml # <-- handlers file
|
|
||||||
templates/ # <-- files for use with the template resource
|
|
||||||
ntp.conf.j2 # <------- templates end in .j2
|
|
||||||
files/ #
|
|
||||||
bar.txt # <-- files for use with the copy resource
|
|
||||||
foo.sh # <-- script files for use with the script resource
|
|
||||||
vars/ #
|
|
||||||
main.yml # <-- variables associated with this role
|
|
||||||
defaults/ #
|
|
||||||
main.yml # <-- default lower priority variables for this role
|
|
||||||
meta/ #
|
|
||||||
main.yml # <-- role dependencies
|
|
||||||
library/ # roles can also include custom modules
|
|
||||||
module_utils/ # roles can also include custom module_utils
|
|
||||||
lookup_plugins/ # or other types of plugins, like lookup in this case
|
|
||||||
|
|
||||||
webtier/ # same kind of structure as "common" was above, done for the webtier role
|
|
||||||
monitoring/ # ""
|
|
||||||
fooapp/ # ""
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
- name: "Add SSH key to servers for Ansible"
|
|
||||||
hosts: ipaserver
|
|
||||||
|
|
||||||
vars_files:
|
|
||||||
- ansible-vault.yml
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- role: rywillia.ssh-copy-id
|
|
||||||
vars:
|
|
||||||
hostname: "{{ ansible_hostname }}"
|
|
||||||
username: "{{ vault_ansible_user }}"
|
|
||||||
password: "{{ vault_ansible_password }}"
|
|
||||||
ssh_public_key: "/Users/rblundon/git/MK-Labs/ansible/files/ansible"
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
37663530616632333938363737366639623261366264616231396533366432303034376365643633
|
|
||||||
3632383464666637343765366439333964646637643936380a326335353639326362366263373466
|
|
||||||
63646562353737636333653333373765363331323065386137626161633333643034323962316630
|
|
||||||
6263373464613033360a376633663236333464393866373733643839336165363761373931623761
|
|
||||||
37646139633036646435323361326366326134656630656366366434363335353165356431613731
|
|
||||||
39653364653465613066323164663261363461316662623433663637333330306663633864303862
|
|
||||||
643261393832643433326332366166383239
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
[defaults]
|
|
||||||
|
|
||||||
# Chick-Fil-A would like a word...
|
|
||||||
nocows = True
|
|
||||||
|
|
||||||
# Installs collections into [current dir]/ansible_collections/namespace/collection_name
|
|
||||||
collections_paths = ./collections:~/.ansible/collections
|
|
||||||
|
|
||||||
# Installs roles into [current dir]/roles/namespace.rolename
|
|
||||||
roles_path = ./roles
|
|
||||||
|
|
||||||
inventory = ./inventory
|
|
||||||
|
|
||||||
# default user to use for playbooks if user is not specified
|
|
||||||
# (/usr/bin/ansible will use current user as default)
|
|
||||||
remote_user = wed
|
|
||||||
private_key_file = ~/.ssh/ansible
|
|
||||||
|
|
||||||
allow_world_readable_tmpfiles = True
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
roles: []
|
|
||||||
|
|
||||||
collections: []
|
|
||||||
# - name: community.docker
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
- name: "Playbook to test the inventory_hostname and ansible_hostname"
|
|
||||||
hosts: ipaserver
|
|
||||||
# gather_facts: true
|
|
||||||
tasks:
|
|
||||||
- name: "What is my inventory_hostname"
|
|
||||||
ansible.builtin.debug:
|
|
||||||
var: inventory_hostname
|
|
||||||
|
|
||||||
- name: "What is my hostname"
|
|
||||||
ansible.builtin.debug:
|
|
||||||
var: hostname
|
|
||||||
|
|
||||||
- name: "What is my ansible_hostname"
|
|
||||||
ansible.builtin.debug:
|
|
||||||
var: ansible_hostname
|
|
||||||
|
|
||||||
- name: "What is my ansible_host"
|
|
||||||
ansible.builtin.debug:
|
|
||||||
var: ansible_host
|
|
||||||
|
|
||||||
# - name: "Ansible | List all known variables and facts"
|
|
||||||
# ansible.builtin.debug:
|
|
||||||
# var: hostvars[inventory_hostname]
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
ipaadmin_password: "{{ vault_ipaadmin_password }}"
|
|
||||||
ipadm_password: "{{ vault_ipadm_password }}"
|
|
||||||
ipaserver_domain: int.mk-labs.cloud
|
|
||||||
ipaserver_realm: INT.MK-LABS.CLOUD
|
|
||||||
ipaserver_setup_firewalld: true
|
|
||||||
ipaserver_setup_dns: true
|
|
||||||
ipaserver_forwarders: 1.1.1.1,1.0.0.1
|
|
||||||
ipaserver_random_serial_numbers: true
|
|
||||||
#dns_ip_addresses: "{{ ansible_hostname }}"
|
|
||||||
#dns_reverse_zones:
|
|
||||||
#domain: int.mk-labs.cloud
|
|
||||||
forwarders: 1.1.1.1,1.0.0.1
|
|
||||||
#hostname: "{{ hostname }}"
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
unbound_do_ip6: "no"
|
|
||||||
#unbound_forward_zones:
|
|
||||||
unbound_chroot: "/etc/unbound"
|
|
||||||
#unbound_pidfile: "/etc/unbound/unbound.pid"
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
hostname: infra01.int.mk-labs.cloud
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
36383531343863313331636462653666393131633533346433343237653433633938343737363531
|
|
||||||
3330616336336635313037356130373231643531613237340a613663303764333837333438343433
|
|
||||||
38373264316533613763373634343735323764316364376138613934323339653735303562636631
|
|
||||||
6166393933356663660a393036653937386239396331653037376564663232666561306631306331
|
|
||||||
6362
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
36393261393537313432333136623438383339303162636464353239386433316134613537336263
|
|
||||||
6462326336363562613431653435353032383064303166340a333761633530643265336465663634
|
|
||||||
65633864653830653738333563326162326430666237303362336537306238356231393761376539
|
|
||||||
3335336333316231620a633562633731396464393366323762323365383664326430323038646566
|
|
||||||
34643339303863303734623038393336313264636439636663616462613465303232643337653539
|
|
||||||
39386231373231306639343561613665626634383932393836616239643662376237353965316162
|
|
||||||
64623934616533386664333732343230626130343630393235303863366536363033323335323337
|
|
||||||
61356536323131383438
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
hostname: unbound.int.mk-labs.cloud
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
hostname: unbound01.int.mk-labs.cloud
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
hostname: unbound02.int.mk-labs.cloud
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Playbook to configure IPA server
|
|
||||||
hosts: ipaserver
|
|
||||||
become: true
|
|
||||||
vars_files:
|
|
||||||
- idm-vault.yml
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- role: freeipa.ansible_freeipa.ipaserver
|
|
||||||
state: present
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
62613936343461366134333738386435646236386662663434373563663433393437383961336634
|
|
||||||
6234303634383134623162396130623562353332313463620a373364393561633038383662643561
|
|
||||||
37636232366532623364306638373064623433626364383639353137653139353764343466386463
|
|
||||||
3237373565653262630a383633353438303934643064623464313639623963386661393562333738
|
|
||||||
39316136633733386166663433633434653636333239323236306161653864353666653137653935
|
|
||||||
34636236353635336631313432386362616462383763346162363466323432333064633336646439
|
|
||||||
38656362306337393065366362653864363438313934333235616338653934626535363266633039
|
|
||||||
38626466343338313239
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
proxmox:
|
|
||||||
hosts:
|
|
||||||
pve01:
|
|
||||||
ansible_host: 10.10.21.51
|
|
||||||
pve02:
|
|
||||||
ansible_host: 10.10.21.52
|
|
||||||
pve03:
|
|
||||||
ansible_host: 10.10.21.53
|
|
||||||
|
|
||||||
unbound_servers:
|
|
||||||
hosts:
|
|
||||||
unbound:
|
|
||||||
ansible_host: 10.1.71.254
|
|
||||||
unbound01:
|
|
||||||
ansible_host: 10.1.71.254
|
|
||||||
unbound02:
|
|
||||||
ansible_host: 10.1.71.253
|
|
||||||
|
|
||||||
ipaserver:
|
|
||||||
hosts:
|
|
||||||
infra01:
|
|
||||||
ansible_host: 10.1.71.5
|
|
||||||
|
|
||||||
ipareplicas:
|
|
||||||
hosts:
|
|
||||||
# infra02.int.mk-labs.cloud:
|
|
||||||
# ansible_host: 10.1.71.6
|
|
||||||
|
|
||||||
#infra:
|
|
||||||
# hosts:
|
|
||||||
# awx.int.mk-labs.cloud:
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
[Resolve]
|
|
||||||
DNS=127.0.0.1
|
|
||||||
DNSSEC=yes
|
|
||||||
DNSStubListener=no
|
|
||||||
@@ -1,236 +0,0 @@
|
|||||||
## Authoritative, validating, recursive caching DNS
|
|
||||||
## unbound.conf -- https://calomel.org
|
|
||||||
#
|
|
||||||
server:
|
|
||||||
# log verbosity
|
|
||||||
verbosity: 1
|
|
||||||
chroot: ""
|
|
||||||
|
|
||||||
# specify the interfaces to answer queries from by ip-address. The default
|
|
||||||
# is to listen to localhost (127.0.0.1 and ::1). specify 0.0.0.0 and ::0 to
|
|
||||||
# bind to all available interfaces. specify every interface[@port] on a new
|
|
||||||
# 'interface:' labeled line. The listen interfaces are not changed on
|
|
||||||
# reload, only on restart.
|
|
||||||
interface: 0.0.0.0
|
|
||||||
|
|
||||||
# port to answer queries from
|
|
||||||
port: 53
|
|
||||||
|
|
||||||
# Enable IPv4, "yes" or "no".
|
|
||||||
do-ip4: yes
|
|
||||||
|
|
||||||
# Enable IPv6, "yes" or "no".
|
|
||||||
do-ip6: no
|
|
||||||
|
|
||||||
# Enable UDP, "yes" or "no".
|
|
||||||
do-udp: yes
|
|
||||||
|
|
||||||
# Enable TCP, "yes" or "no". If TCP is not needed, Unbound is actually
|
|
||||||
# quicker to resolve as the functions related to TCP checks are not done.i
|
|
||||||
# NOTE: you may need tcp enabled to get the DNSSEC results from *.edu domains
|
|
||||||
# due to their size.
|
|
||||||
do-tcp: yes
|
|
||||||
|
|
||||||
# control which client ips are allowed to make (recursive) queries to this
|
|
||||||
# server. Specify classless netblocks with /size and action. By default
|
|
||||||
# everything is refused, except for localhost. Choose deny (drop message),
|
|
||||||
# refuse (polite error reply), allow (recursive ok), allow_snoop (recursive
|
|
||||||
# and nonrecursive ok)
|
|
||||||
access-control: 192.168.1.0/24 allow
|
|
||||||
access-control: 192.168.3.0/24 allow
|
|
||||||
access-control: 192.168.10.0/24 allow
|
|
||||||
access-control: 10.1.71.0/24 allow
|
|
||||||
|
|
||||||
# Read the root hints from this file. Default is nothing, using built in
|
|
||||||
# hints for the IN class. The file has the format of zone files, with root
|
|
||||||
# nameserver names and addresses only. The default may become outdated,
|
|
||||||
# when servers change, therefore it is good practice to use a root-hints
|
|
||||||
# file. get one from https://www.internic.net/domain/named.root
|
|
||||||
root-hints: "/etc/unbound/root.hints"
|
|
||||||
|
|
||||||
# enable to not answer id.server and hostname.bind queries.
|
|
||||||
hide-identity: yes
|
|
||||||
|
|
||||||
# enable to not answer version.server and version.bind queries.
|
|
||||||
hide-version: yes
|
|
||||||
|
|
||||||
# Will trust glue only if it is within the servers authority.
|
|
||||||
# Harden against out of zone rrsets, to avoid spoofing attempts.
|
|
||||||
# Hardening queries multiple name servers for the same data to make
|
|
||||||
# spoofing significantly harder and does not mandate dnssec.
|
|
||||||
harden-glue: yes
|
|
||||||
|
|
||||||
# Require DNSSEC data for trust-anchored zones, if such data is absent, the
|
|
||||||
# zone becomes bogus. Harden against receiving dnssec-stripped data. If you
|
|
||||||
# turn it off, failing to validate dnskey data for a trustanchor will trigger
|
|
||||||
# insecure mode for that zone (like without a trustanchor). Default on,
|
|
||||||
# which insists on dnssec data for trust-anchored zones.
|
|
||||||
harden-dnssec-stripped: yes
|
|
||||||
|
|
||||||
# Use 0x20-encoded random bits in the query to foil spoof attempts.
|
|
||||||
# http://tools.ietf.org/html/draft-vixie-dnsext-dns0x20-00
|
|
||||||
# While upper and lower case letters are allowed in domain names, no significance
|
|
||||||
# is attached to the case. That is, two names with the same spelling but
|
|
||||||
# different case are to be treated as if identical. This means calomel.org is the
|
|
||||||
# same as CaLoMeL.Org which is the same as CALOMEL.ORG.
|
|
||||||
use-caps-for-id: yes
|
|
||||||
|
|
||||||
# the time to live (TTL) value lower bound, in seconds. Default 0.
|
|
||||||
# If more than an hour could easily give trouble due to stale data.
|
|
||||||
cache-min-ttl: 3600
|
|
||||||
|
|
||||||
# the time to live (TTL) value cap for RRsets and messages in the
|
|
||||||
# cache. Items are not cached for longer. In seconds.
|
|
||||||
cache-max-ttl: 86400
|
|
||||||
|
|
||||||
# perform prefetching of close to expired message cache entries. If a client
|
|
||||||
# requests the dns lookup and the TTL of the cached hostname is going to
|
|
||||||
# expire in less than 10% of its TTL, unbound will (1st) return the ip of the
|
|
||||||
# host to the client and (2nd) pre-fetch the dns request from the remote dns
|
|
||||||
# server. This method has been shown to increase the amount of cached hits by
|
|
||||||
# local clients by 10% on average.
|
|
||||||
prefetch: yes
|
|
||||||
|
|
||||||
# number of threads to create. 1 disables threading. This should equal the number
|
|
||||||
# of CPU cores in the machine. Our example machine has 4 CPU cores.
|
|
||||||
num-threads: 2
|
|
||||||
|
|
||||||
|
|
||||||
## Unbound Optimization and Speed Tweaks ###
|
|
||||||
|
|
||||||
# the number of slabs to use for cache and must be a power of 2 times the
|
|
||||||
# number of num-threads set above. more slabs reduce lock contention, but
|
|
||||||
# fragment memory usage.
|
|
||||||
msg-cache-slabs: 8
|
|
||||||
rrset-cache-slabs: 8
|
|
||||||
infra-cache-slabs: 8
|
|
||||||
key-cache-slabs: 8
|
|
||||||
|
|
||||||
# Increase the memory size of the cache. Use roughly twice as much rrset cache
|
|
||||||
# memory as you use msg cache memory. Due to malloc overhead, the total memory
|
|
||||||
# usage is likely to rise to double (or 2.5x) the total cache memory. The test
|
|
||||||
# box has 4gig of ram so 256meg for rrset allows a lot of room for cacheed objects.
|
|
||||||
rrset-cache-size: 256m
|
|
||||||
msg-cache-size: 128m
|
|
||||||
|
|
||||||
# buffer size for UDP port 53 incoming (SO_RCVBUF socket option). This sets
|
|
||||||
# the kernel buffer larger so that no messages are lost in spikes in the traffic.
|
|
||||||
so-rcvbuf: 1m
|
|
||||||
|
|
||||||
## Unbound Optimization and Speed Tweaks ###
|
|
||||||
|
|
||||||
|
|
||||||
# Enforce privacy of these addresses. Strips them away from answers. It may
|
|
||||||
# cause DNSSEC validation to additionally mark it as bogus. Protects against
|
|
||||||
# 'DNS Rebinding' (uses browser as network proxy). Only 'private-domain' and
|
|
||||||
# 'local-data' names are allowed to have these private addresses. No default.
|
|
||||||
private-address: 192.168.1.0/24
|
|
||||||
private-address: 192.168.3.0/24
|
|
||||||
private-address: 192.168.10.0/24
|
|
||||||
private-address: 10.1.71.0/24
|
|
||||||
|
|
||||||
# Allow the domain (and its subdomains) to contain private addresses.
|
|
||||||
# local-data statements are allowed to contain private addresses too.
|
|
||||||
private-domain: "mk-labs.cloud"
|
|
||||||
|
|
||||||
# If nonzero, unwanted replies are not only reported in statistics, but also
|
|
||||||
# a running total is kept per thread. If it reaches the threshold, a warning
|
|
||||||
# is printed and a defensive action is taken, the cache is cleared to flush
|
|
||||||
# potential poison out of it. A suggested value is 10000000, the default is
|
|
||||||
# 0 (turned off). We think 10K is a good value.
|
|
||||||
unwanted-reply-threshold: 10000
|
|
||||||
|
|
||||||
# IMPORTANT FOR TESTING: If you are testing and setup NSD or BIND on
|
|
||||||
# localhost you will want to allow the resolver to send queries to localhost.
|
|
||||||
# Make sure to set do-not-query-localhost: yes . If yes, the above default
|
|
||||||
# do-not-query-address entries are present. if no, localhost can be queried
|
|
||||||
# (for testing and debugging).
|
|
||||||
do-not-query-localhost: no
|
|
||||||
|
|
||||||
# File with trusted keys, kept up to date using RFC5011 probes, initial file
|
|
||||||
# like trust-anchor-file, then it stores metadata. Use several entries, one
|
|
||||||
# per domain name, to track multiple zones. If you use forward-zone below to
|
|
||||||
# query the Google DNS servers you MUST comment out this option or all DNS
|
|
||||||
# queries will fail.
|
|
||||||
#auto-trust-anchor-file: "/etc/unbound/root.key"
|
|
||||||
|
|
||||||
# Should additional section of secure message also be kept clean of unsecure
|
|
||||||
# data. Useful to shield the users of this validator from potential bogus
|
|
||||||
# data in the additional section. All unsigned data in the additional section
|
|
||||||
# is removed from secure messages.
|
|
||||||
val-clean-additional: yes
|
|
||||||
|
|
||||||
# Blocking Ad Server domains. Google's AdSense, DoubleClick and Yahoo
|
|
||||||
# account for a 70 percent share of all advertising traffic. Block them.
|
|
||||||
# local-zone: "doubleclick.net" redirect
|
|
||||||
# local-data: "doubleclick.net A 127.0.0.1"
|
|
||||||
# local-zone: "googlesyndication.com" redirect
|
|
||||||
# local-data: "googlesyndication.com A 127.0.0.1"
|
|
||||||
# local-zone: "googleadservices.com" redirect
|
|
||||||
# local-data: "googleadservices.com A 127.0.0.1"
|
|
||||||
# local-zone: "google-analytics.com" redirect
|
|
||||||
# local-data: "google-analytics.com A 127.0.0.1"
|
|
||||||
# local-zone: "ads.youtube.com" redirect
|
|
||||||
# local-data: "ads.youtube.com A 127.0.0.1"
|
|
||||||
# local-zone: "adserver.yahoo.com" redirect
|
|
||||||
# local-data: "adserver.yahoo.com A 127.0.0.1"
|
|
||||||
# local-zone: "ask.com" redirect
|
|
||||||
# local-data: "ask.com A 127.0.0.1"
|
|
||||||
|
|
||||||
# Unbound will not load if you specify the same local-zone and local-data
|
|
||||||
# servers in the main configuration as well as in this "include:" file. We
|
|
||||||
# suggest commenting out any of the local-zone and local-data lines above if
|
|
||||||
# you suspect they could be included in the unbound_ad_servers servers file.
|
|
||||||
#include: "/etc/unbound/unbound_ad_servers"
|
|
||||||
|
|
||||||
# locally served zones can be configured for the machines on the LAN.
|
|
||||||
|
|
||||||
# local-zone: "home.lan." static
|
|
||||||
|
|
||||||
# local-data: "firewall.home.lan. IN A 10.0.0.1"
|
|
||||||
|
|
||||||
# local-data-ptr: "10.0.0.1 firewall.home.lan"
|
|
||||||
|
|
||||||
# Unbound can query your NSD or BIND server for private domain queries too.
|
|
||||||
# On our NSD page we have NSD configured to serve the private domain,
|
|
||||||
# "home.lan". Here we can tell Unbound to connect to the NSD server when it
|
|
||||||
# needs to resolve a *.home.lan hostname or IP.
|
|
||||||
#
|
|
||||||
# private-domain: "home.lan"
|
|
||||||
# local-zone: "0.0.10.in-addr.arpa." nodefault
|
|
||||||
# stub-zone:
|
|
||||||
# name: "home.lan"
|
|
||||||
# stub-addr: 10.0.0.111@53
|
|
||||||
|
|
||||||
# If you have an internal or private DNS names the external DNS servers can
|
|
||||||
# not resolve, then you can assign domain name strings to be redirected to a
|
|
||||||
# seperate dns server. For example, our comapny has the domain
|
|
||||||
# organization.com and the domain name internal.organization.com can not be
|
|
||||||
# resolved by Google's public DNS, but can be resolved by our private DNS
|
|
||||||
# server located at 1.1.1.1. The following tells Unbound that any
|
|
||||||
# organization.com domain, i.e. *.organization.com be dns resolved by 1.1.1.1
|
|
||||||
# instead of the public dns servers.
|
|
||||||
#
|
|
||||||
forward-zone:
|
|
||||||
name: "int.mk-labs.cloud"
|
|
||||||
forward-addr: 10.1.71.5 # Internal or private DNS
|
|
||||||
|
|
||||||
# Use the following forward-zone to forward all queries to Google DNS,
|
|
||||||
# OpenDNS.com or your local ISP's dns servers for example. To test resolution
|
|
||||||
# speeds use "drill calomel.org @8.8.8.8" and look for the "Query time:" in
|
|
||||||
# milliseconds.
|
|
||||||
#
|
|
||||||
forward-zone:
|
|
||||||
name: "."
|
|
||||||
forward-addr: 1.0.0.1@53#one.one.one.one
|
|
||||||
forward-addr: 1.1.1.1@53#one.one.one.one
|
|
||||||
# forward-addr: 8.8.8.8@53#dns.google
|
|
||||||
# forward-addr: 9.9.9.9@53#dns.quad9.net
|
|
||||||
# forward-addr: 1.0.0.1@53#one.one.one.one
|
|
||||||
# forward-addr: 8.8.4.4@53#dns.google
|
|
||||||
# forward-addr: 149.112.112.112@53#dns.quad9.net
|
|
||||||
|
|
||||||
#
|
|
||||||
#
|
|
||||||
## Authoritative, validating, recursive caching DNS
|
|
||||||
## unbound.conf -- https://calomel.org
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Set hostname
|
|
||||||
hosts: ipa_server
|
|
||||||
become: true
|
|
||||||
gather_facts: true
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Set hostname
|
|
||||||
ansible.builtin.hostname:
|
|
||||||
name: "{{ hostname }}"
|
|
||||||
register: result
|
|
||||||
|
|
||||||
- name: Print result
|
|
||||||
ansible.builtin.debug:
|
|
||||||
var: result
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Update sudoers for passwordless
|
|
||||||
hosts: unbound_servers
|
|
||||||
become: true
|
|
||||||
gather_facts: true
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Update sudoers for passwordless
|
|
||||||
ansible.builtin.lineinfile:
|
|
||||||
path: /etc/sudoers
|
|
||||||
state: present
|
|
||||||
regexp: '^%wheel'
|
|
||||||
line: '%wheel ALL=(ALL) NOPASSWD:ALL'
|
|
||||||
validate: 'visudo -cf %s'
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
# file: site.yml
|
|
||||||
#- import_playbook: webservers.yml
|
|
||||||
#- import_playbook: dbservers.yml
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Playbook to unconfigure IPA servers
|
|
||||||
hosts: ipaserver
|
|
||||||
become: true
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- role: freeipa.ansible_freeipa.ipaserver
|
|
||||||
state: absent
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
66323366323966373436343163303131323239343134323434373762383539663539363464393234
|
|
||||||
3762666265303430373832333865613538316261386162640a653562666130323138313533616334
|
|
||||||
37623336653332353830306534633165626634376636396166356235353937323965616161323437
|
|
||||||
3536643537623931380a633730366330396538373836326439306566666663633932393230323563
|
|
||||||
30643032646366393530663138376638386538336466633532303563636163303637303933646465
|
|
||||||
37316239393136383638636436646230643338616438646564396238376136653639393865363666
|
|
||||||
39346337356133313938303938643866346636663737323238333762386234373563633761333166
|
|
||||||
36373063643438303930313366653436363731656163376666323330633763373361393663633631
|
|
||||||
39353232346634633836623134383861656337663062393232373932353431323730
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
# Networks
|
|
||||||
|
|
||||||
My homelab is segmented into a set of networks. Each network is a separate subnet, and each subnet is a separate VLAN that usually corresponds to the 3rd octet of the IPv4 block it aligns to. The following table shows the network and VLAN information:
|
|
||||||
|
|
||||||
| Network | VLAN | DHCP Range | Description |
|
|
||||||
|-----------------|------|------------------|------------------------|
|
|
||||||
| 10.1.71.0/24 | 71 | 10.71.1.10-250 | Server network |
|
|
||||||
| 10.10.22.0/24 | 22 | Static IPs | Cluster network |
|
|
||||||
| 10.10.121.0/24 | 121 | Static IPs | Storage network |
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# Proxmox
|
|
||||||
|
|
||||||
In this iteration of my homelab, core services are running as VMs in Proxmox.
|
|
||||||
|
|
||||||
The proxmox cluster will be installed via ISO Image and manually configured. (Future iterations will gitops this configuration via Ansible playbooks.)
|
|
||||||
|
|
||||||
## Primary Networking
|
|
||||||
|
|
||||||
| Hostname | VLAN | IP Address | NIC | Notes |
|
|
||||||
|-------------|------|------------------|-----------------|----------------------------|
|
|
||||||
| pve01 | | 10.1.71.51 | On-board 1 GbE | VLAN 71 set on switch port |
|
|
||||||
| pve02 | | 10.1.71.52 | On-board 1 GbE | VLAN 71 set on switch port |
|
|
||||||
| pve03 | | 10.1.71.53 | On-board 1 GbE | VLAN 71 set on switch port |
|
|
||||||
|
|
||||||
## Additional Networking
|
|
||||||
|
|
||||||
| Hostname | VLAN | IP Address | NIC | Notes |
|
|
||||||
|-------------|------|--------------------|--------------|------------------------------|
|
|
||||||
| pve01 | 22 | 10.10.22.51 | PCIe 10 GbE | Cluster Network, VLAN tagged |
|
|
||||||
| pve01 | 121 | 10.10.121.51 | PCIe 10 GbE | Storage Network, VLAN tagged |
|
|
||||||
| pve02 | 22 | 10.10.22.52 | PCIe 10 GbE | Cluster Network, VLAN tagged |
|
|
||||||
| pve02 | 121 | 10.10.121.52 | PCIe 10 GbE | Storage Network, VLAN tagged |
|
|
||||||
| pve03 | 22 | 10.10.22.53 | PCIe 10 GbE | Cluster Network, VLAN tagged |
|
|
||||||
| pve03 | 121 | 10.10.121.53 | PCIe 10 GbE | Storage Network, VLAN tagged |
|
|
||||||
|
|
||||||
## Hosted Services
|
|
||||||
|
|
||||||
- Recursive DNS (Unbound)
|
|
||||||
- Authoritative DNS (FreeIPA)
|
|
||||||
- Identity Management (FreeIPA)
|
|
||||||
- iPXE (Matchbox)
|
|
||||||
- VM Backup (Proxmox Backup)
|
|
||||||
- VM Tempalate Creation (Terraform/Packer)
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Install all software on infra01
|
|
||||||
hosts: infra01
|
|
||||||
gather_facts: true
|
|
||||||
become: true
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
# - Update all packages
|
|
||||||
# - Install ansible-core
|
|
||||||
# - Copy .vault_pass.txt from laptop and set env variable
|
|
||||||
# - Clone git repo
|
|
||||||
# - Install ansible required packages
|
|
||||||
|
|
||||||
- name: Install ansible-core
|
|
||||||
ansible.builtin.package:
|
|
||||||
name: ansible-core
|
|
||||||
state: present
|
|
||||||
become: true
|
|
||||||
|
|
||||||
- name: Install dnf-plugins-core
|
|
||||||
ansible.builtin.package:
|
|
||||||
name: dnf-plugins-core
|
|
||||||
state: present
|
|
||||||
become: true
|
|
||||||
|
|
||||||
- name: Register status of /usr/local/bin/terraform
|
|
||||||
ansible.builtin.stat:
|
|
||||||
path: /usr/local/bin/terraform
|
|
||||||
register: terraform_path
|
|
||||||
|
|
||||||
- name: Download and installt erraform version
|
|
||||||
when: not terraform_path.stat.exists
|
|
||||||
block:
|
|
||||||
- name: Download and install terraform
|
|
||||||
ansible.builtin.unarchive:
|
|
||||||
src: "https://releases.hashicorp.com/terraform/{{ terraform_version }}/terraform_{{ terraform_version }}_linux_amd64.zip"
|
|
||||||
dest: "/usr/local/bin/"
|
|
||||||
remote_src: true
|
|
||||||
mode: '0755'
|
|
||||||
exclude: "LICENSE.txt"
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- somaz94.ansible_k8s_iac_tool.install_kustomize
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Dnsmasq
|
|
||||||
hosts: localhost
|
|
||||||
become: yes
|
|
||||||
vars:
|
|
||||||
- additional_dhcp_hosts:
|
|
||||||
ethernet_switch:
|
|
||||||
desc: "SNO Hub Cluster"
|
|
||||||
mac: 98:b7:85:1e:c6:f1
|
|
||||||
ip: 10.1.71.10
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- role: ricsanfre.dnsmasq
|
|
||||||
24
10-sno-hub-cluster/01-dns/.terraform.lock.hcl
generated
24
10-sno-hub-cluster/01-dns/.terraform.lock.hcl
generated
@@ -1,24 +0,0 @@
|
|||||||
# This file is maintained automatically by "terraform init".
|
|
||||||
# Manual edits may be lost in future updates.
|
|
||||||
|
|
||||||
provider "registry.terraform.io/rework-space-com/freeipa" {
|
|
||||||
version = "5.0.0"
|
|
||||||
constraints = "5.0.0"
|
|
||||||
hashes = [
|
|
||||||
"h1:6EquDv6GgQO2HjZUUoRIUVzYa951n+wb4Uk7ggD6XD0=",
|
|
||||||
"zh:098607e559c3b696401034ff494ba8068962b45059ee067a54b58334b6ee0f2c",
|
|
||||||
"zh:18b806a14bb9d9382213c6929af35f5a65f16c17ff526d475f1eab33d1470290",
|
|
||||||
"zh:2c8c74668844d256b7fdc503cd736a20b7e58db5b31880d1ad8090c1af04e24c",
|
|
||||||
"zh:3bba458b9a6df99c21da58750dd6586b93bdcc557e4a2d695e801ada39e8de1e",
|
|
||||||
"zh:58f728d9e98cc7aae3841c07318be64b6dcb2f51c041f04bba977e61104a2333",
|
|
||||||
"zh:597dfbefbfe111a31e9ff3c4fc14fc8e12c1e255454087d3eebd2ec6c7aa9bf3",
|
|
||||||
"zh:6093d6db13d834c23f5482efae80c8e1ae046028fccf24242f0f1c1935e6aa70",
|
|
||||||
"zh:87271fa234a57ce05d4166e444002bd66976f971b434f7add45c874c9587129d",
|
|
||||||
"zh:89f7f6be64b6bf9e708fbafd22f410cf3f50b1fcd4cd6c61e9ffffd6180ea839",
|
|
||||||
"zh:9bdd7a984f845ff6f4bc4df5cc41a9de019639fceca62e60fc7c0f098ad2695c",
|
|
||||||
"zh:a0551311c96b86050d15854b4fca2beaa06b2e1964f97945824567d0b90db580",
|
|
||||||
"zh:c3daa12021725883bd32d7d852a2de845bb7a5f18009a45be7c2c2d891631713",
|
|
||||||
"zh:d7871eb99683934a30b9d47508379e6d16978f3dcd73601af2204652668592aa",
|
|
||||||
"zh:e8f72fd7750e6c1f0f97d039fea66cb85f457cf22908b7c3f14c7d2cf990ee84",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# DNS Provider Configuration
|
|
||||||
|
|
||||||
This directory contains the configuration to updateFreeIPA DNS for the Hub Cluster.
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
resource "freeipa_dns_record" "ocp-hub" {
|
|
||||||
zone_name = "int.mk-labs.cloud."
|
|
||||||
name = "ocp-hub"
|
|
||||||
type = "A"
|
|
||||||
records = [
|
|
||||||
"10.1.71.10",
|
|
||||||
]
|
|
||||||
ttl = 60
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "freeipa_dns_record" "api" {
|
|
||||||
zone_name = "int.mk-labs.cloud."
|
|
||||||
name = "api.hub"
|
|
||||||
type = "A"
|
|
||||||
records = [
|
|
||||||
"10.1.71.10",
|
|
||||||
]
|
|
||||||
ttl = 60
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "freeipa_dns_record" "api-int" {
|
|
||||||
zone_name = "int.mk-labs.cloud."
|
|
||||||
name = "api-int.hub"
|
|
||||||
type = "A"
|
|
||||||
records = [
|
|
||||||
"10.1.71.10",
|
|
||||||
]
|
|
||||||
ttl = 60
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "freeipa_dns_record" "wildcard-apps" {
|
|
||||||
zone_name = "int.mk-labs.cloud."
|
|
||||||
name = "*.apps.hub"
|
|
||||||
type = "A"
|
|
||||||
records = [
|
|
||||||
"10.1.71.10",
|
|
||||||
]
|
|
||||||
ttl = 60
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# Configure the DNS Provider
|
|
||||||
provider "freeipa" {
|
|
||||||
host = "infra01.int.mk-labs.cloud"
|
|
||||||
username = "admin"
|
|
||||||
password = var.freeipa_password
|
|
||||||
insecure = true
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "freeipa_password" {
|
|
||||||
description = "The password for the FreeIPA provider"
|
|
||||||
type = string
|
|
||||||
sensitive = true
|
|
||||||
}
|
|
||||||
|
|
||||||
terraform {
|
|
||||||
required_providers {
|
|
||||||
freeipa = {
|
|
||||||
source = "rework-space-com/freeipa"
|
|
||||||
version = "5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
# Add/modify entry in DNSmasq
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Ensure dnsmasq is installed
|
|
||||||
ansible.builtin.apt:
|
|
||||||
name: dnsmasq
|
|
||||||
state: present
|
|
||||||
become: true
|
|
||||||
when: ansible_os_family == "Debian"
|
|
||||||
|
|
||||||
- name: Ensure dnsmasq is installed
|
|
||||||
ansible.builtin.dnf:
|
|
||||||
name: dnsmasq
|
|
||||||
state: present
|
|
||||||
become: true
|
|
||||||
when: ansible_os_family == "RedHat"
|
|
||||||
|
|
||||||
- name: Add host reservation to dnsmasq
|
|
||||||
ansible.builtin.lineinfile:
|
|
||||||
path: /etc/dnsmasq.d/hosts.conf
|
|
||||||
regexp: "^dhcp-host={{ hostvars['ocp-hub'].mac_address }}"
|
|
||||||
line: "dhcp-host={{ hostvars['ocp-hub'].mac_address }},{{ hostvars['ocp-hub'].ip_address }} #{{ hostvars['ocp-hub'].hostname }}"
|
|
||||||
state: present
|
|
||||||
become: true
|
|
||||||
|
|
||||||
- name: Restart dnsmasq service
|
|
||||||
ansible.builtin.service:
|
|
||||||
name: dnsmasq
|
|
||||||
state: restarted
|
|
||||||
become: true
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Configure the OpenShift Agent Installer and Matchbox
|
|
||||||
|
|
||||||
## Reference Document
|
|
||||||
|
|
||||||
<https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/epub/installing_an_on-premise_cluster_with_the_agent-based_installer/prepare-pxe-assets-agent#prepare-pxe-assets-agent>
|
|
||||||
|
|
||||||
Recap of image creation is in 10-sno-hub-cluster/02-matchbox/.openshift_install.log
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
- name: OpenShift image creation
|
|
||||||
ansible.builtin.command: /usr/local/bin/openshift-install agent create pxe-files
|
|
||||||
args:
|
|
||||||
chdir: 03-openshift-image
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Create a directory if it does not exist
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ hostvars[groups['matchbox'][0]].assets }}/{{ hostvars[groups['hub-cluster'][0]].cluster_name }}"
|
|
||||||
state: directory
|
|
||||||
mode: '0755'
|
|
||||||
become: true
|
|
||||||
|
|
||||||
- name: Copy file with owner and permissions
|
|
||||||
ansible.builtin.copy:
|
|
||||||
src: 03-openshift-image/boot-artifacts/
|
|
||||||
dest: "{{ hostvars[groups['matchbox'][0]].assets }}/{{ hostvars[groups['hub-cluster'][0]].cluster_name }}/"
|
|
||||||
owner: matchbox
|
|
||||||
group: matchbox
|
|
||||||
mode: '0644'
|
|
||||||
become: true
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
apiVersion: v1alpha1
|
|
||||||
kind: AgentConfig
|
|
||||||
metadata:
|
|
||||||
name: {{ hostvars[groups['hub-cluster'][0]].cluster_name }}
|
|
||||||
rendezvousIP: {{ hostvars['ocp-hub'].ip_address }}
|
|
||||||
bootArtifactsBaseURL: {{ hostvars[groups['matchbox'][0]].http_endpoint }}/assets/hub/
|
|
||||||
hosts:
|
|
||||||
- hostname: {{ hostvars['ocp-hub'].hostname }}
|
|
||||||
role: master
|
|
||||||
interfaces:
|
|
||||||
- name: {{ hostvars['ocp-hub'].primary_interface }}
|
|
||||||
macAddress: {{ hostvars['ocp-hub'].mac_address }}
|
|
||||||
networkConfig:
|
|
||||||
interfaces:
|
|
||||||
- name: {{ hostvars['ocp-hub'].primary_interface }}
|
|
||||||
type: ethernet
|
|
||||||
state: up
|
|
||||||
identifier: mac-address
|
|
||||||
mac-address: {{ hostvars['ocp-hub'].mac_address }}
|
|
||||||
ipv4:
|
|
||||||
enabled: true
|
|
||||||
dhcp: true
|
|
||||||
dns-resolver:
|
|
||||||
config:
|
|
||||||
server:
|
|
||||||
- 10.1.71.254
|
|
||||||
- 10.1.71.253
|
|
||||||
routes:
|
|
||||||
config:
|
|
||||||
- destination: 0.0.0.0/0
|
|
||||||
next-hop-address: 10.1.71.1
|
|
||||||
next-hop-interface: {{ hostvars['ocp-hub'].primary_interface }}
|
|
||||||
table-id: 254
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
baseDomain: {{ hostvars[groups['hub-cluster'][0]].base_domain }}
|
|
||||||
compute:
|
|
||||||
- name: worker
|
|
||||||
replicas: {{ hostvars[groups['hub-cluster'][0]].worker_node_count }}
|
|
||||||
controlPlane:
|
|
||||||
hyperthreading: Enabled
|
|
||||||
name: master
|
|
||||||
replicas: {{ hostvars[groups['hub-cluster'][0]].master_node_count }}
|
|
||||||
metadata:
|
|
||||||
name: {{ hostvars[groups['hub-cluster'][0]].cluster_name }}
|
|
||||||
networking:
|
|
||||||
clusterNetwork:
|
|
||||||
- cidr: {{ hostvars[groups['hub-cluster'][0]].cluster_network }}
|
|
||||||
hostPrefix: {{ hostvars[groups['hub-cluster'][0]].cluster_network_host_prefix }}
|
|
||||||
machineNetwork:
|
|
||||||
- cidr: {{ hostvars[groups['hub-cluster'][0]].machine_network }}
|
|
||||||
networkType: OVNKubernetes
|
|
||||||
serviceNetwork:
|
|
||||||
- {{ hostvars[groups['hub-cluster'][0]].service_network }}
|
|
||||||
platform:
|
|
||||||
{{ hostvars[groups['hub-cluster'][0]].platform_type }}: {}
|
|
||||||
fips: false
|
|
||||||
pullSecret: '{{ vault_pull_secret }}'
|
|
||||||
sshKey: '{{ vault_ssh_key }}'
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
// Matcher group for OCP Internal machines
|
|
||||||
resource "matchbox_group" "{{ hostvars[groups['hub-cluster'][0]].cluster_name }}" {
|
|
||||||
name = "{{ hostvars['ocp-hub'].hostname }}" # Physical Server
|
|
||||||
profile = matchbox_profile.openshift-agent-install.name
|
|
||||||
selector = {
|
|
||||||
mac = "{{ hostvars['ocp-hub'].mac_address }}" # PXE boots and installs to 10GbE NIC
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
// Fedora CoreOS profile
|
|
||||||
resource "matchbox_profile" "openshift-agent-install" {
|
|
||||||
name = "{{ hostvars[groups['hub-cluster'][0]].cluster_name }}"
|
|
||||||
kernel = "/assets/{{ hostvars[groups['hub-cluster'][0]].cluster_name }}/agent.x86_64-vmlinuz"
|
|
||||||
initrd = [
|
|
||||||
"--name initrd /assets/{{ hostvars[groups['hub-cluster'][0]].cluster_name }}/agent.x86_64-initrd.img"
|
|
||||||
]
|
|
||||||
|
|
||||||
args = [
|
|
||||||
"initrd=initrd",
|
|
||||||
"coreos.live.rootfs_url={{ hostvars[groups['matchbox'][0]].http_endpoint }}/assets/{{ hostvars[groups['hub-cluster'][0]].cluster_name }}/agent.x86_64-rootfs.img",
|
|
||||||
"rw",
|
|
||||||
"ignition.firstboot",
|
|
||||||
"ignition.platform.id=metal",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Run all tasks necessary to configure matchbox to install the cluster
|
|
||||||
hosts: matchbox
|
|
||||||
connection: local
|
|
||||||
gather_facts: true
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Clone Git repository
|
|
||||||
ansible.builtin.git:
|
|
||||||
repo: "https://github.com/redhatryan/acm-hub-bootstrap.git"
|
|
||||||
dest: 05-bootstrap-acm
|
|
||||||
version: main
|
|
||||||
become: true
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
# Moved to other documentation
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Run all tasks necessary to configure matchbox to install the cluster
|
|
||||||
hosts: matchbox
|
|
||||||
connection: local
|
|
||||||
gather_facts: true
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Deploy DNS entries for cluster via Terraform
|
|
||||||
community.general.terraform:
|
|
||||||
project_path: 01-dns/
|
|
||||||
variables:
|
|
||||||
freeipa_password: "{{ vault_freeipa_password }}"
|
|
||||||
state: present
|
|
||||||
force_init: true
|
|
||||||
|
|
||||||
- name: Deploy DHCP entries for cluster via Terraform
|
|
||||||
ansible.builtin.include_tasks:
|
|
||||||
file: 02-dhcp/ip-reservations.yml
|
|
||||||
|
|
||||||
- name: OpenShift Installer install-config.yaml
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: 03-openshift-image/templates/install-config.yaml.j2
|
|
||||||
dest: 03-openshift-image/install-config.yaml
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: OpenShift Installer agent-config.yaml
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: 03-openshift-image/templates/agent-config.yaml.j2
|
|
||||||
dest: 03-openshift-image/agent-config.yaml
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Create OpenShift image
|
|
||||||
ansible.builtin.include_tasks:
|
|
||||||
file: 03-openshift-image/create-openshift-image.yml
|
|
||||||
|
|
||||||
- name: Move PXE assets to matchbox
|
|
||||||
ansible.builtin.include_tasks:
|
|
||||||
file: 03-openshift-image/move-pxe-assets.yml
|
|
||||||
|
|
||||||
- name: Terraform matchbox groups file
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: 04-matchbox/templates/groups.tf.j2
|
|
||||||
dest: 04-matchbox/groups.tf
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Terraform matchbox profiles file
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: 04-matchbox/templates/profiles.tf.j2
|
|
||||||
dest: 04-matchbox/profiles.tf
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Terraform matchbox provider file
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: 04-matchbox/templates/provider.tf.j2
|
|
||||||
dest: 04-matchbox/provider.tf
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Configure Matchbox via Terraform
|
|
||||||
community.general.terraform:
|
|
||||||
project_path: 04-matchbox/
|
|
||||||
state: present
|
|
||||||
force_init: true
|
|
||||||
165
README.md
165
README.md
@@ -1,95 +1,102 @@
|
|||||||
# A Homelab based on Red Hat Technologies
|
# mk-labs
|
||||||
|
|
||||||
This repository is the configuration of my homelab. In addition to providing services, the purpose of my homelab is to learn advanced concepts primarily based on Red Hat OpenShift.
|
Automated infrastructure provisioning and configuration for a personal homelab, built on GitOps practices with clear tool responsibility boundaries.
|
||||||
|
|
||||||
This implementation is built on easily accessible consumer based hardware and will focus heavily on GitOps practices and automation will be used wherever possible.
|
## Architecture
|
||||||
|
|
||||||
|
A single operator action — setting a VM record's status to **Staged** in NetBox — triggers a fully automated provisioning pipeline:
|
||||||
|
```
|
||||||
|
NetBox (webhook) → n8n (validate & orchestrate) → Terraform (create VM + DHCP)
|
||||||
|
→ Ansible (OS config + DNS + status update)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Tool | Host | IP | Responsibility |
|
||||||
|
|------|------|----|---------------|
|
||||||
|
| NetBox | fire-station | 10.1.71.102 | Source of truth — VM records, IP allocation, VLAN data |
|
||||||
|
| n8n | tiki-room | 10.1.71.23 | Event orchestration, validation, pipeline sequencing |
|
||||||
|
| Terraform | city-hall | 10.1.71.35 | Proxmox VM lifecycle, Unifi DHCP reservations |
|
||||||
|
| Ansible / Semaphore | imagineering | 10.1.71.22 | OS configuration, DNS records, NetBox status updates |
|
||||||
|
| Proxmox | fantasyland | 10.1.71.13 | Target hypervisor |
|
||||||
|
|
||||||
|
All systems on the Server Trusted VLAN (10.1.71.0/24).
|
||||||
|
|
||||||
|
## Repository Structure
|
||||||
|
```
|
||||||
|
homelab/
|
||||||
|
├── ansible/
|
||||||
|
│ ├── inventory/ # NetBox dynamic inventory + static
|
||||||
|
│ ├── playbooks/ # Runnable playbooks (vm-provision, DNS, OS updates)
|
||||||
|
│ ├── roles/ # vm-baseline, dns-manager, common, haproxy, n8n, observer, etc.
|
||||||
|
│ ├── tasks/ # Shared includable task files
|
||||||
|
│ ├── group_vars/ # Group variable definitions
|
||||||
|
│ ├── host_vars/ # Per-host variable definitions
|
||||||
|
│ ├── templates/ # Jinja2 templates
|
||||||
|
│ └── ansible.cfg
|
||||||
|
│
|
||||||
|
├── terraform/
|
||||||
|
│ ├── proxmox/vm/ # bpg/proxmox provider — VM creation from templates
|
||||||
|
│ ├── unifi/dhcp/ # Unifi provider — DHCP static reservations on UDM Pro
|
||||||
|
│ └── dns/ # DNS record management
|
||||||
|
│
|
||||||
|
├── packer/
|
||||||
|
│ ├── ubuntu-24.04/ # Ubuntu 24.04 VM template (small → xlarge-plus sizes)
|
||||||
|
│ └── fedora-42/ # Fedora 42 VM template
|
||||||
|
│
|
||||||
|
├── n8n/
|
||||||
|
│ └── workflows/ # Exported n8n workflow JSON (vm-provisioning)
|
||||||
|
│
|
||||||
|
├── netbox/
|
||||||
|
│ └── initializers/ # Custom fields, VLANs, IP prefixes as code
|
||||||
|
│
|
||||||
|
└── docs/
|
||||||
|
└── decisions/ # Architecture decision records
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pipeline Flow
|
||||||
|
|
||||||
|
| # | System | Action |
|
||||||
|
|---|--------|--------|
|
||||||
|
| 1 | NetBox | Operator sets VM status to Staged → webhook fires |
|
||||||
|
| 2 | n8n | Validates payload (hostname, IP, VLAN, template, proxmox_node) |
|
||||||
|
| 3 | n8n → city-hall | SSH + `terraform apply` — creates VM on Proxmox |
|
||||||
|
| 4 | n8n | Queries Proxmox API for MAC address |
|
||||||
|
| 5 | n8n → NetBox | Writes MAC to VM interface record |
|
||||||
|
| 6 | n8n → city-hall | SSH + `terraform apply` — creates DHCP reservation on UDM Pro |
|
||||||
|
| 7 | n8n → imagineering | Triggers Ansible via Semaphore API |
|
||||||
|
| 8 | Ansible | OS baseline, SSH hardening, Technitium DNS A record |
|
||||||
|
| 9 | Ansible → NetBox | Sets VM status to Active |
|
||||||
|
|
||||||
|
On any failure, NetBox status is set to **Failed**. No auto-retry — operator investigates.
|
||||||
|
|
||||||
## Hardware
|
## Hardware
|
||||||
|
|
||||||
- Dell 7050 SFF (7)
|
- 7× Dell 7050 SFF
|
||||||
- Minisforum TH60 (3)
|
- 3× Minisforum TH60
|
||||||
- Minisforum MS01 (2)
|
- 2× Minisforum MS01
|
||||||
- Synology 1621+
|
- Synology DS1621+
|
||||||
|
- Ubiquiti UDM Pro
|
||||||
|
|
||||||
## Software
|
## Software Stack
|
||||||
|
|
||||||
- Proxmox (Virtualization)
|
- **Virtualization**: Proxmox
|
||||||
- Cloudflare (Domain Hosting, Public DNS)
|
- **Automation**: Terraform, Ansible, n8n, Semaphore
|
||||||
- Unbound (Recursive DNS)
|
- **DNS**: Technitium (authoritative), Unbound (recursive)
|
||||||
- FreeIPA (Identity management, Authoritive DNS)
|
- **IPAM/DCIM**: NetBox
|
||||||
- Matchbox (iPXE)
|
- **Networking**: Ubiquiti UDM Pro
|
||||||
- Red Hat OpenShift
|
- **Templates**: Packer (Ubuntu 24.04, Fedora 42)
|
||||||
- OpenShift Agent Based Installer (Install OpenShift)
|
|
||||||
- [Red Hat Advanced Cluster Management for Kubernetes](https://www.redhat.com/en/technologies/management/advanced-cluster-management)
|
|
||||||
- [Vault](https://www.hashicorp.com/en/products/vault)
|
|
||||||
- [OpenShift GitOps (ArgoCD)](https://www.redhat.com/en/technologies/cloud-computing/openshift/gitops)
|
|
||||||
- [Red Hat Ansible Automation Platform](https://www.redhat.com/en/technologies/management/ansible)
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Ansible user created
|
|
||||||
- Ansible configured
|
|
||||||
- [Networking](docs/networks.md)
|
|
||||||
- [Proxmox](docs/proxmox.md) (In my homelab, internal DNS, identity manangement, and ipxe are hosted here.)
|
|
||||||
- Matchbox
|
|
||||||
- DNS
|
|
||||||
- Domain Registration
|
|
||||||
|
|
||||||
## Assumptions
|
|
||||||
|
|
||||||
There are a dozen different architectures you could use to deploy OpenShift in every which way.
|
|
||||||
For the sake of this documentation we'll assume the following:
|
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
[Step-by-Step Walkthrough](step-by-step.md)
|
See [docs/decisions/vm-provisioning-flow.md](docs/decisions/vm-provisioning-flow.md) for the full architecture decision record.
|
||||||
|
|
||||||
### Hub Cluster
|
Previous OpenShift/ACM/Fastpass content is preserved in the `archive/pre-mk-labs` branch.
|
||||||
|
|
||||||
You'll need an OpenShift "Hub Cluster" with access to persistant storage.
|
## Security
|
||||||
A Single Node OpenShift (SNO) instance, installed on bare metal, will act as a Hub cluster and run:
|
|
||||||
|
|
||||||
- Advanced Cluster Management
|
No sensitive data is stored in this repository. Secrets are managed via Ansible Vault and environment variables on pipeline hosts.
|
||||||
- Ansible Automation Platform
|
|
||||||
- Vault
|
|
||||||
- OpenShift GitOps
|
|
||||||
|
|
||||||
#### Network Prerequisites
|
|
||||||
|
|
||||||
The prerequisites for OpenShift in traditional and HCP patterns are largely the same - it just kind of depends on where your DNS records go to.
|
|
||||||
|
|
||||||
| Cluster | Endpoint | VIP | DNS A Record | Notes |
|
|
||||||
|------------------|-------------|---------------|-----------------------------------|----------------------------------|
|
|
||||||
| Hub Cluster (SNO) | App Ingress | 192.168.0.10 | *.apps.hub-cluster.example.com | SNO App VIP goes to IP of node |
|
|
||||||
| Hub Cluster (SNO) | API | 192.168.0.10 | api.hub-cluster.example.com | SNO API goes to IP of node |
|
|
||||||
|
|
||||||
These DNS entries should be put in your Authoratitive DNS.
|
|
||||||
|
|
||||||
#### ACM & GitOps Configuration
|
|
||||||
|
|
||||||
Before you start creating clusters you may want to create some Policies, integrate ACM and ArgoCD, etc. This step is optional in case you're just interested in trying out Hosted Control Planes or copy/paste around a cluster for testing purposes.
|
|
||||||
|
|
||||||
Find additional details in the ./02-rhacm-config folder.
|
|
||||||
|
|
||||||
#### Creating a Cluster
|
|
||||||
|
|
||||||
With everything in its right place, you can now start to declaratively create clusters
|
|
||||||
|
|
||||||
./05-clusters/hcp-bmh - HCP to Bare Metal Hosts
|
|
||||||
|
|
||||||
### Internal Cluster
|
|
||||||
|
|
||||||
Two additional bare metal nodes, to be added to Advanced Cluster Management (ACM) running on the SNO Hub. These will be used to create another HCP cluster.
|
|
||||||
These servers have a BMC interface with Redfish - if not, then you'll need to manually manage the boot and installation of those servers.
|
|
||||||
This makes it to where you just need 3 bare metal nodes. You could run one HCP Bare Metal cluster with both of the other nodes, but then you have a shared storage requirement that can't be satisfied by ODF since that needs at least 3 nodes.
|
|
||||||
|
|
||||||
### External Cluster
|
|
||||||
|
|
||||||
You'll also either need you just need at least 2 bare metal nodes.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
## Credits
|
|
||||||
|
|
||||||
- Ken Moini - As I used his [repo](https://github.com/kenmoini/ztp-for-you-and-me) as the baseline for this project.
|
**Status**: 🚧 Active Development — VM Provisioning Pipeline
|
||||||
- Ryan Etten
|
|
||||||
- Andrew Potozniak
|
**Last Updated**: February 2026
|
||||||
|
|||||||
193
ansible/DNS_MANAGEMENT_REFACTOR.md
Executable file
193
ansible/DNS_MANAGEMENT_REFACTOR.md
Executable file
@@ -0,0 +1,193 @@
|
|||||||
|
# DNS Management Refactor - Modular & Repeatable
|
||||||
|
|
||||||
|
This document explains the refactoring of DNS management from standalone playbooks to modular, reusable tasks.
|
||||||
|
|
||||||
|
## 🎯 **What Changed**
|
||||||
|
|
||||||
|
### **Before (Monolithic)**
|
||||||
|
```yaml
|
||||||
|
# Standalone playbook: add_technitium_dns_entry.yml
|
||||||
|
- name: Add entry to Technitium DNS
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: Create DNS entry
|
||||||
|
effectivelywild.technitium_dns.technitium_dns_add_record:
|
||||||
|
# ... hardcoded parameters
|
||||||
|
```
|
||||||
|
|
||||||
|
### **After (Modular)**
|
||||||
|
```yaml
|
||||||
|
# Reusable task: tasks/add_technitium_dns_entry.yml
|
||||||
|
- name: Create DNS entry for {{ dns_record_name }}
|
||||||
|
effectivelywild.technitium_dns.technitium_dns_add_record:
|
||||||
|
# ... parameterized with variables
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📁 **New Structure**
|
||||||
|
|
||||||
|
```
|
||||||
|
ansible/
|
||||||
|
├── playbooks/
|
||||||
|
│ ├── tasks/
|
||||||
|
│ │ └── add_technitium_dns_entry.yml # ✅ Reusable task file
|
||||||
|
│ ├── add_dns_entry.yml # ✅ New playbook using task
|
||||||
|
│ ├── add_technitium_dns_entry.yml.backup # 📦 Backed up old version
|
||||||
|
│ └── roles/
|
||||||
|
│ └── dns-manager/ # ✅ Enhanced role
|
||||||
|
│ ├── tasks/main.yml # Uses task file
|
||||||
|
│ └── defaults/main.yml # Technitium defaults
|
||||||
|
└── scripts/
|
||||||
|
└── migrate-dns-references.sh # ✅ Migration helper
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 **Usage Examples**
|
||||||
|
|
||||||
|
### **1. In Playbooks (Direct Task Include)**
|
||||||
|
```yaml
|
||||||
|
- name: Add DNS entry for my server
|
||||||
|
hosts: my_servers
|
||||||
|
tasks:
|
||||||
|
- name: Create DNS entry
|
||||||
|
ansible.builtin.include_tasks: tasks/add_technitium_dns_entry.yml
|
||||||
|
vars:
|
||||||
|
dns_record_name: "{{ inventory_hostname }}"
|
||||||
|
dns_zone: "{{ base_domain }}"
|
||||||
|
dns_ip_address: "{{ ansible_default_ipv4.address }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
### **2. Using the DNS Manager Role**
|
||||||
|
```yaml
|
||||||
|
- name: Setup cluster DNS
|
||||||
|
hosts: control_plane[0]
|
||||||
|
roles:
|
||||||
|
- role: dns-manager
|
||||||
|
vars:
|
||||||
|
cluster_endpoint: "my-cluster.local.mk-labs.cloud"
|
||||||
|
cluster_vip: "10.1.71.100"
|
||||||
|
```
|
||||||
|
|
||||||
|
### **3. Using the New Playbook**
|
||||||
|
```yaml
|
||||||
|
# Import the new modular playbook
|
||||||
|
- import_playbook: add_dns_entry.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### **4. In Cluster Network Setup**
|
||||||
|
```yaml
|
||||||
|
- name: Setup complete cluster network
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: cluster-network-setup
|
||||||
|
vars:
|
||||||
|
cluster_name: "fastpass"
|
||||||
|
cluster_endpoint: "fastpass.local.mk-labs.cloud"
|
||||||
|
cluster_vip: "10.1.71.53"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 **Migration Guide**
|
||||||
|
|
||||||
|
### **Automatic Migration**
|
||||||
|
```bash
|
||||||
|
# Run the migration script to find references
|
||||||
|
./scripts/migrate-dns-references.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### **Manual Updates**
|
||||||
|
|
||||||
|
1. **Replace playbook imports:**
|
||||||
|
```yaml
|
||||||
|
# OLD
|
||||||
|
- import_playbook: add_technitium_dns_entry.yml
|
||||||
|
|
||||||
|
# NEW
|
||||||
|
- import_playbook: add_dns_entry.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Use task includes in roles:**
|
||||||
|
```yaml
|
||||||
|
- ansible.builtin.include_tasks: tasks/add_technitium_dns_entry.yml
|
||||||
|
vars:
|
||||||
|
dns_record_name: "my-server"
|
||||||
|
dns_ip_address: "10.1.71.100"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Use the dns-manager role:**
|
||||||
|
```yaml
|
||||||
|
- ansible.builtin.include_role:
|
||||||
|
name: dns-manager
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📋 **Variable Reference**
|
||||||
|
|
||||||
|
### **Task Variables (`tasks/add_technitium_dns_entry.yml`)**
|
||||||
|
| Variable | Default | Description |
|
||||||
|
|----------|---------|-------------|
|
||||||
|
| `dns_record_name` | `inventory_hostname` | DNS record name |
|
||||||
|
| `dns_zone` | `base_domain` | DNS zone |
|
||||||
|
| `dns_ip_address` | `ip_address` | IP address for A record |
|
||||||
|
| `dns_record_type` | `A` | DNS record type |
|
||||||
|
| `dns_ttl` | `360` | TTL in seconds |
|
||||||
|
| `dns_create_ptr` | `true` | Create PTR record |
|
||||||
|
| `dns_debug` | `true` | Show debug output |
|
||||||
|
|
||||||
|
### **DNS Manager Role Variables**
|
||||||
|
| Variable | Default | Description |
|
||||||
|
|----------|---------|-------------|
|
||||||
|
| `cluster_endpoint` | - | Full cluster FQDN |
|
||||||
|
| `cluster_vip` | - | Cluster VIP address |
|
||||||
|
| `dns_management_enabled` | `true` | Enable DNS management |
|
||||||
|
| `use_hosts_file_fallback` | `true` | Add to /etc/hosts |
|
||||||
|
| `dns_ttl` | `360` | DNS TTL |
|
||||||
|
| `create_ptr_record` | `true` | Create PTR record |
|
||||||
|
|
||||||
|
## 🎯 **Benefits**
|
||||||
|
|
||||||
|
### ✅ **Modularity**
|
||||||
|
- Single task file used across multiple contexts
|
||||||
|
- Consistent DNS management approach
|
||||||
|
- Easy to maintain and update
|
||||||
|
|
||||||
|
### ✅ **Flexibility**
|
||||||
|
- Works in playbooks, roles, and standalone
|
||||||
|
- Parameterized for different use cases
|
||||||
|
- Supports multiple DNS providers (extensible)
|
||||||
|
|
||||||
|
### ✅ **Maintainability**
|
||||||
|
- One place to update DNS logic
|
||||||
|
- Clear variable interface
|
||||||
|
- Better error handling and debugging
|
||||||
|
|
||||||
|
### ✅ **Integration**
|
||||||
|
- Seamlessly integrates with cluster setup
|
||||||
|
- Works with existing homelab infrastructure
|
||||||
|
- Compatible with Traefik load balancer setup
|
||||||
|
|
||||||
|
## 🔄 **Integration with Cluster Setup**
|
||||||
|
|
||||||
|
The DNS management now integrates seamlessly with your cluster deployment:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# In fastpass-first-control-plane role
|
||||||
|
- name: Setup network infrastructure for FastPass cluster
|
||||||
|
ansible.builtin.include_role:
|
||||||
|
name: cluster-network-setup
|
||||||
|
vars:
|
||||||
|
cluster_name: "{{ cluster_name }}"
|
||||||
|
cluster_endpoint: "{{ control_plane_endpoint }}"
|
||||||
|
cluster_vip: "{{ ansible_default_ipv4.address }}"
|
||||||
|
control_plane_nodes: "{{ groups['fastpass_control_plane'] }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
This automatically:
|
||||||
|
1. ✅ Creates DNS entry for `fastpass.local.mk-labs.cloud`
|
||||||
|
2. ✅ Configures Traefik load balancer
|
||||||
|
3. ✅ Tests connectivity
|
||||||
|
4. ✅ Provides fallback to /etc/hosts
|
||||||
|
|
||||||
|
## 🚀 **Next Steps**
|
||||||
|
|
||||||
|
1. **Test the refactored approach** with your FastPass cluster
|
||||||
|
2. **Extend to other clusters** (Hub, Internal) using the same pattern
|
||||||
|
3. **Add support for other DNS providers** if needed
|
||||||
|
4. **Create monitoring** for DNS health checks
|
||||||
|
|
||||||
|
This modular approach makes your homelab's DNS management much more maintainable and repeatable across all your Kubernetes clusters!
|
||||||
@@ -209,7 +209,7 @@ private_key_file=~/.ssh/ansible
|
|||||||
remote_user=wed
|
remote_user=wed
|
||||||
|
|
||||||
# (pathspec) Colon-separated paths in which Ansible will search for Roles.
|
# (pathspec) Colon-separated paths in which Ansible will search for Roles.
|
||||||
;roles_path=/Users/rblundon/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles
|
roles_path=./roles
|
||||||
|
|
||||||
# (string) Set the main callback used to display Ansible output. You can only have one at a time.
|
# (string) Set the main callback used to display Ansible output. You can only have one at a time.
|
||||||
# You can have many other callbacks, but just one can be in charge of stdout.
|
# You can have many other callbacks, but just one can be in charge of stdout.
|
||||||
6
ansible/create_jarvis_user.yml
Normal file
6
ansible/create_jarvis_user.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- name: Create jarvis user and deploy SSH key
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- jarvis_user
|
||||||
151
ansible/group_vars/all/semaphore.yml
Normal file
151
ansible/group_vars/all/semaphore.yml
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
---
|
||||||
|
# ============================================================================
|
||||||
|
# Semaphore configuration-as-code
|
||||||
|
# ============================================================================
|
||||||
|
# Drives a freshly-deployed Semaphore instance into its desired state via
|
||||||
|
# the Semaphore REST API. Idempotent: every object is checked first; only
|
||||||
|
# missing ones are created. Existing objects are left alone.
|
||||||
|
#
|
||||||
|
# Loaded from group_vars/all/semaphore.yml so that the configuration is
|
||||||
|
# version-controlled in the homelab repo and survives a wipe-and-redeploy
|
||||||
|
# of the Semaphore VM.
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# API connection (defaults to the local Traefik-fronted service-name URL).
|
||||||
|
# Override semaphore_api_url to point at a specific instance if needed.
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
semaphore_api_url: "https://semaphore.local.mk-labs.cloud/api"
|
||||||
|
semaphore_api_validate_certs: true
|
||||||
|
semaphore_api_token: "{{ vault_semaphore_api_token }}"
|
||||||
|
|
||||||
|
# Feature flag — keeps day1_deploy_semaphore.yml deploy-only by default.
|
||||||
|
# Set true to also run the configuration pass.
|
||||||
|
semaphore_configure: false
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Declarative configuration of the Semaphore instance.
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Top-level shape:
|
||||||
|
#
|
||||||
|
# semaphore_config:
|
||||||
|
# project: single dict — the lab uses one project ("mk-labs")
|
||||||
|
# keys: list of credentials Semaphore stores
|
||||||
|
# repositories: git repos Semaphore can clone
|
||||||
|
# inventories: Ansible inventories from those repos
|
||||||
|
# environments: env-var bundles
|
||||||
|
# templates: task templates that tie everything together
|
||||||
|
#
|
||||||
|
# Each list element has a unique "name" used as the natural identity key.
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
semaphore_config:
|
||||||
|
project:
|
||||||
|
name: mk-labs
|
||||||
|
alert: false
|
||||||
|
max_parallel_tasks: 0 # 0 = unlimited
|
||||||
|
|
||||||
|
keys:
|
||||||
|
# The ansible-vault password. login_password type with empty login
|
||||||
|
# — only the password field is consumed by Semaphore at runtime.
|
||||||
|
- name: ansible-vault-pass
|
||||||
|
type: login_password
|
||||||
|
login: ""
|
||||||
|
password: "{{ vault_ansible_vault_password }}"
|
||||||
|
|
||||||
|
# SSH key for the gitea deploy access (clone the homelab repo).
|
||||||
|
- name: gitea-deploy
|
||||||
|
type: ssh
|
||||||
|
ssh_login: git
|
||||||
|
ssh_private_key: "{{ vault_gitea_deploy_key }}"
|
||||||
|
|
||||||
|
# SSH key for the universal automation account 'wed' — pre-baked in
|
||||||
|
# every mk-labs VM template. This is the canonical user Semaphore
|
||||||
|
# uses to reach the fleet.
|
||||||
|
- name: wed-ssh
|
||||||
|
type: ssh
|
||||||
|
ssh_login: wed
|
||||||
|
ssh_private_key: "{{ vault_wed_ssh_private_key }}"
|
||||||
|
|
||||||
|
# SSH key Semaphore can use to reach the fleet as jarvis (admin
|
||||||
|
# account provisioned by linux-baseline). Retained for jobs that
|
||||||
|
# specifically need jarvis-level access; the default is wed-ssh.
|
||||||
|
- name: jarvis-ssh
|
||||||
|
type: ssh
|
||||||
|
ssh_login: jarvis
|
||||||
|
ssh_private_key: "{{ vault_jarvis_ssh_private_key }}"
|
||||||
|
|
||||||
|
repositories:
|
||||||
|
- name: homelab
|
||||||
|
git_url: "ssh://git@gitea.mk-labs.cloud:2221/rblundon/homelab.git"
|
||||||
|
git_branch: main
|
||||||
|
ssh_key: gitea-deploy
|
||||||
|
|
||||||
|
inventories:
|
||||||
|
- name: production
|
||||||
|
type: file
|
||||||
|
inventory_file: ansible/inventory.yml
|
||||||
|
repository: homelab
|
||||||
|
# wed is the universal automation account pre-baked in every VM
|
||||||
|
# template. Semaphore uses it for fleet-wide jobs.
|
||||||
|
ssh_key: wed-ssh
|
||||||
|
# become_key is Semaphore's sudo PASSWORD slot, not a second SSH
|
||||||
|
# key. wed has passwordless sudo on every host, so reference the
|
||||||
|
# built-in "None" key. (Semaphore rejects an SSH-type key here.)
|
||||||
|
become_key: None
|
||||||
|
|
||||||
|
environments:
|
||||||
|
- name: default
|
||||||
|
env:
|
||||||
|
ANSIBLE_HOST_KEY_CHECKING: "False"
|
||||||
|
ANSIBLE_FORCE_COLOR: "True"
|
||||||
|
# Semaphore runs ansible-playbook from the cloned REPO ROOT (not
|
||||||
|
# from the playbook's directory as I first assumed). Path is
|
||||||
|
# therefore relative to repo root, not playbook dir.
|
||||||
|
ANSIBLE_ROLES_PATH: "ansible/roles"
|
||||||
|
|
||||||
|
templates:
|
||||||
|
- name: "day0_linux_baseline"
|
||||||
|
description: "Apply the mk-labs Linux baseline to one or more hosts."
|
||||||
|
app: ansible
|
||||||
|
playbook: ansible/playbooks/day0_linux_baseline.yml
|
||||||
|
inventory: production
|
||||||
|
repository: homelab
|
||||||
|
environment: default
|
||||||
|
vault_password: ansible-vault-pass
|
||||||
|
arguments: '["--diff"]'
|
||||||
|
survey_vars:
|
||||||
|
- name: target
|
||||||
|
title: "Target host or group"
|
||||||
|
description: "Inventory target (e.g. figment, semaphore_server, all)"
|
||||||
|
required: true
|
||||||
|
type: TextVar
|
||||||
|
default_value: "all"
|
||||||
|
|
||||||
|
- name: "day1_deploy_semaphore"
|
||||||
|
description: "Re-deploy Semaphore + PostgreSQL on figment."
|
||||||
|
app: ansible
|
||||||
|
playbook: ansible/playbooks/day1_deploy_semaphore.yml
|
||||||
|
inventory: production
|
||||||
|
repository: homelab
|
||||||
|
environment: default
|
||||||
|
vault_password: ansible-vault-pass
|
||||||
|
arguments: '["--diff"]'
|
||||||
|
|
||||||
|
- name: "day0_linux_baseline_check"
|
||||||
|
description: "Dry-run the baseline — shows diffs, applies nothing."
|
||||||
|
app: ansible
|
||||||
|
playbook: ansible/playbooks/day0_linux_baseline.yml
|
||||||
|
inventory: production
|
||||||
|
repository: homelab
|
||||||
|
environment: default
|
||||||
|
vault_password: ansible-vault-pass
|
||||||
|
arguments: '["--check","--diff"]'
|
||||||
|
survey_vars:
|
||||||
|
- name: target
|
||||||
|
title: "Target host or group"
|
||||||
|
description: "Inventory target (e.g. figment, semaphore_server, all)"
|
||||||
|
required: true
|
||||||
|
type: TextVar
|
||||||
|
default_value: "all"
|
||||||
4
ansible/group_vars/all/step_ca.yml
Normal file
4
ansible/group_vars/all/step_ca.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
step_ca_url: "https://turnstile.local.mk-labs.cloud:9000"
|
||||||
|
step_ca_fingerprint: "f63c44e76381e359978bd2dca07c928d04ad44b575f0364fa66b5725c7e7891b"
|
||||||
|
step_ca_provisioner_name: "admin"
|
||||||
41
ansible/group_vars/all/vars
Normal file
41
ansible/group_vars/all/vars
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
# file: group_vars/all
|
||||||
|
|
||||||
|
# Proxmox variables
|
||||||
|
proxmox_user: "root@pam"
|
||||||
|
proxmox_password: "{{ vault_proxmox_root_password }}"
|
||||||
|
proxmox_host: "main-street-usa.local.mk-labs.cloud"
|
||||||
|
|
||||||
|
# DNS variables
|
||||||
|
dns_server: "monorail" # .local.mk-labs.cloud"
|
||||||
|
#dns_admin: "admin"
|
||||||
|
base_domain: "local.mk-labs.cloud"
|
||||||
|
# DHCP server
|
||||||
|
#dhcp_server: "matchbox"
|
||||||
|
|
||||||
|
# Terraform variables
|
||||||
|
terraform_server: "infra01"
|
||||||
|
|
||||||
|
# Traefik variables
|
||||||
|
traefik_server: "lightning-lane"
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# JARVIS automation account
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Public key for the 'jarvis' user provisioned by the linux-baseline role on
|
||||||
|
# every host. Public keys are not secret; the matching private key lives on
|
||||||
|
# the JARVIS command centre (carousel-of-progress) and, when needed, in
|
||||||
|
# group_vars/all/vault as vault_jarvis_ssh_private_key.
|
||||||
|
jarvis_ssh_public_key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID5sym5ajFvDyzw395BkHv7qVb66XPTx/OF1p19MGuNo jarvis@mk-labs"
|
||||||
|
|
||||||
|
step_ca_principal_mappings:
|
||||||
|
- local_user: wed
|
||||||
|
principals:
|
||||||
|
- ryan.blundon@protonmail.com
|
||||||
|
- ryan.blundon
|
||||||
|
- ryanblundon
|
||||||
|
- local_user: rblundon
|
||||||
|
principals:
|
||||||
|
- ryan.blundon@protonmail.com
|
||||||
|
- ryan.blundon
|
||||||
|
- ryanblundon
|
||||||
436
ansible/group_vars/all/vault
Normal file
436
ansible/group_vars/all/vault
Normal file
@@ -0,0 +1,436 @@
|
|||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
65653162653536373535643935613236366335356333336264346637323164633739633965656664
|
||||||
|
3434656433323239366665356134386564643135663135360a653232636463656332343565313763
|
||||||
|
61326635636333393730356131356466363063613734653565643766383431363166656532393934
|
||||||
|
3631373264353563650a616362633165666239323563623161656238633737316236303133313034
|
||||||
|
66353461643535373638616364663365643961656635643566613336633466343739386234313532
|
||||||
|
38353066313763643266623739366261646633363962336239623830613265383335383763376534
|
||||||
|
62653865626662383330656530336534366136313965373764353133326139623132646364396337
|
||||||
|
33333366366434393037373361376538376334336265663162336239646237306332623039343032
|
||||||
|
37333832383762663534643638666234623062373734626335323537616334303638376164656634
|
||||||
|
64623962313064363166383930636136383935613237613434373733383836666532363265643739
|
||||||
|
37376333363736326334383864633734393263623536393239393564643131616132373230356633
|
||||||
|
61636165333537356632303034346431353139383065393832323236626331353236666263376666
|
||||||
|
38306631653862343064656135396638636363613139373062653735366565376165353330636162
|
||||||
|
38653530366263356437323433653437373362356166633235386330623333326264333961643434
|
||||||
|
30323130613431353064393138303465316630383462653062326264393035393735396134396665
|
||||||
|
36383963633938363662633035626538663366323461656136323934353731626264396364643337
|
||||||
|
63356337343161366237353135313966616630316362396362343962356564643365626664633165
|
||||||
|
62383765303436303239376365316632353463666664306164313933346162343833303963313835
|
||||||
|
62353565333231646462383664356230623165363333653335343438346233316534333132366634
|
||||||
|
31326138663433663132393761343335656636366237656337666331633062303363633938303536
|
||||||
|
31303238323932336330363064323963306132633961313634616232636163353439363666623230
|
||||||
|
65666632653730303134343032616331363932616532313365633038623135396463316666373637
|
||||||
|
34343736383731363239303330306561356162623962396564323239376661363761336434376264
|
||||||
|
34373037623331643666366165306161356365326261366566323233656538363061636637343164
|
||||||
|
39323130613530386661343839623361303862323763373864626536376562643766643263376665
|
||||||
|
64373334333436653061653962373437366437643034306633343830626230346532653565353135
|
||||||
|
33326339656266616237643362333062346564333563326463393535356465666166626463643132
|
||||||
|
36316263323761653333363632386261633432383431386435363362663734626634353761663035
|
||||||
|
32383464396632396361623531303937383366633131613861646364303662343761323530303139
|
||||||
|
39333866663164363431656233663064383633386261313063646435333666376465626532343636
|
||||||
|
62386166306635353061623365313738306237616430386461343262613039346261353662346462
|
||||||
|
65616261656534336631646434316336646337333661336530633834633037363834346539646466
|
||||||
|
33346466643238343133326339393264613763626532633938613765373262393236643533383661
|
||||||
|
33306233623130666161326365366164333434373463323662316432633263323761316338623065
|
||||||
|
66306332656438303938393430633563303761303239346266386664333837613336316539643736
|
||||||
|
31353234613664313061306433656165373737336166343930653837303532346163613564376661
|
||||||
|
61376237383562353639393565303332633366376632386532333736303738333362353334353366
|
||||||
|
36343166633533303834346265666536353633343564623062613030323934653863343062323136
|
||||||
|
34323635363238623336653062666636646263343731316537346635346235613862623530326633
|
||||||
|
30396338386233663335613661646132386230356631326331653962393336653937376264313931
|
||||||
|
65363465343265643034363963656262666131393632653561626330396166386566396363663538
|
||||||
|
66323935383166623038326437323730363266316530313938373261366363613731656638386634
|
||||||
|
31316261616630306131633936326635333632643731313730303438656563343133373732376537
|
||||||
|
38623330633539653034343364656261316336353466653663646333653636653266373363333732
|
||||||
|
61333461346131366233336162363033623636386634613731303032393738333537393131316539
|
||||||
|
65643238613432306436376432373364656530323331633762393566396531396466653463353832
|
||||||
|
34393662616435343137373364663839613464346564663631343837366530313061326561656664
|
||||||
|
33623163333864346661393634333830336133383337373833346132353531656236363661323338
|
||||||
|
64313663356432373137343461333539386665643130316463336134396436623730666165623939
|
||||||
|
33373832353932386238353866336130356530613766626235316332623132343735636335633437
|
||||||
|
37303766386434373930383663386565383732636635646133393637383963353134633433616431
|
||||||
|
33616464633431666361393931623631313731343863636234646130313136346639323662373236
|
||||||
|
62623830633838326432326339383533373430346635643739646639633739343639636665376333
|
||||||
|
30396238356161373734633562643466643036363239396538613465346238356366363730623965
|
||||||
|
32336533303331363336666238363863313066376230353932323466316432653264346334373931
|
||||||
|
61303066313831376233313261633336643265396139663037333031636666383738313763313366
|
||||||
|
38386138363738353265613363353339323930343934393036343234626162353037326638636236
|
||||||
|
66343634323136663134373737366433616632653737316534633232323237343566623361666131
|
||||||
|
34393331373835613934316235336635666633646465373866356566656261373066653937316339
|
||||||
|
37396366643564333130383237613933613736376161616231666139643030613338333133356336
|
||||||
|
37343362363433653638373335363130313362306236393231646637383736663236376537303533
|
||||||
|
31633230333933666131613764336532373633353132373839326562356438386236643537386231
|
||||||
|
35616662643431383661343937613738393963373865383465306532336137373730653832633930
|
||||||
|
37656661326434633730346364326661653937313561333437383064313933363231393164616464
|
||||||
|
31333664386134376264376339303838656431633966663263303465376161633866376161313531
|
||||||
|
62346266316533326639303661396164376666383864363262316630636561326366373363633063
|
||||||
|
33666263333132323232346235633837363138663539366131303633313662326664373332353664
|
||||||
|
39306235313732376164306164386534346666633037316334366431363063663137356464656234
|
||||||
|
35656164303933306661373932663831346531636530386139373837633263396632643235383361
|
||||||
|
65393939303338656537353130316361366139363933363031393735666336323931373632303663
|
||||||
|
63333137663265353962653861316365643239396562333933383964663730663230353331386638
|
||||||
|
62396435323162663036303334323936633436626136663537376562363430376239356136343261
|
||||||
|
36323062363935643562326161643065333437343331613135383932333835396565646631646437
|
||||||
|
39633035326662653334616366323736323032616264623166326563326361363263623736623739
|
||||||
|
62633762346135626666636463343132303433346330303631656634646537616537363764626564
|
||||||
|
30316539303964626635613338623261613430656432376265386636613566313732386561653564
|
||||||
|
66363538643463653233373433353965623765303038333931623036666435303330633136663966
|
||||||
|
31313964323439376637613530343635376166333765306466353337623633343539313330373437
|
||||||
|
64343930636465636265383261633664313762303533326234626461623563636466643039343336
|
||||||
|
62346462343639323862353036326335383735323337396465613737336661633465363330363161
|
||||||
|
38323561613935303334303261323032616332333231363762303831373961323033626663383637
|
||||||
|
35323134666636353766313330316231323938326532333030383638646230643735653663346634
|
||||||
|
38363261626663393139313031633032343038396433353563363531306232386539303734323463
|
||||||
|
63313938373735383631373665613333303530383335363262306230326665666535333564346163
|
||||||
|
39336132643464666538356461393330616264383632623037623634336530376164336336323336
|
||||||
|
61646165333835333961323439663864386562326131653564623861386336303934346263643036
|
||||||
|
32666632623537376537646634313839363038666336386238343531323664396461633030373334
|
||||||
|
35396463373339633931383636353062396562383763373939633336346463623733303039663733
|
||||||
|
31663834326661623064323132353431366362636466623332363532316435386333636562633562
|
||||||
|
36613465363936623462316136643664336261353938653362393938666266663330323163653338
|
||||||
|
63333732616330323438633038366465353865353965663333376466613834633166303761633361
|
||||||
|
37613863313230653235653034613137303231343961616330316664653333303436356561353562
|
||||||
|
37623839646536363036613964336230373537653130366330633137356661366561386566323165
|
||||||
|
38653633373538633762643935346661363961663265616433383832666635666331366635636637
|
||||||
|
32336532373164373135363533333539623739383330646431356363636430326433376364393265
|
||||||
|
35643561613033623231366362393737663964396266313232666362326436303331653764366436
|
||||||
|
30363135663234356363613065643763353836626133656334653138393562393032623631343130
|
||||||
|
30303936656636366465633163323061333863393532366563316233353466613566316563336539
|
||||||
|
33326137383263393266393166336361656538353963313366353434333864623238333435653836
|
||||||
|
39376138356461663262356665363835653638623031396539353132623737333736353937623533
|
||||||
|
65386333396666633365313262323739633461383464386663313163646632646335646433663834
|
||||||
|
34616663386661363135653765386534633339653232326133396332646136653230393431626637
|
||||||
|
30366433336633643837363434383439343562366164353235653833306138643431316537343931
|
||||||
|
34396535393432383163653231623837633961366437653434623164333333323563666330613866
|
||||||
|
36393561656135303731666638393737653565303836326264373137303264656334653163366433
|
||||||
|
35376362326133666336303732656561326164663832623732613830393063343231323363353366
|
||||||
|
66636233366436363565336231663964303532343962333732313832323762343638356231343461
|
||||||
|
65373062383564346266323362336666613735316161366136303032313039373464383532343932
|
||||||
|
30396530373030303933353264363330353132376164303062623538613632323932373230363838
|
||||||
|
32633766316533316665393033326161373361333166643436356430623262663032646262616633
|
||||||
|
32643436646264343366343862356339626561346561353463616534306139383133656433636331
|
||||||
|
32333735346163353434616530623235373037376664326266343933326439663965653865333766
|
||||||
|
31653163643134346331313331633561643336663130353936323439636331383134646665656630
|
||||||
|
63663866663938663632646664323936613434333731306264306633643335393566343564346537
|
||||||
|
35326132303632373731373532623662373861356534343536613731366666373439343563663737
|
||||||
|
64326339313533323936393362613564333065623731653930363264373061636665313135623062
|
||||||
|
63373565306535373763356664333465343666626439626666393734303962303762393066643139
|
||||||
|
62663334313736663132386232613061326636313664326462353361633362323464653038396662
|
||||||
|
64363862356439633564313065363361313161643962316166643936346539626339396230333633
|
||||||
|
39333132393135613264653363323233643032376266313630313735373966373966386239336635
|
||||||
|
34643739363935353463373434343430633438346136306337393061646139346230636531376537
|
||||||
|
36633861303264633662373365623261303635363836333163623864323338613739383134636237
|
||||||
|
62326561356535626564633038643230646431613866643239646563323035353434313837663863
|
||||||
|
66326530353265626361643738333266346339326532663166656432613631313137396463643864
|
||||||
|
64343339373131363066303437633436306462316166356131366134626331343635323837643136
|
||||||
|
39306461316230663134346563313662616532616239333735303061373138383363386232373062
|
||||||
|
61643838366266613637336433323062336434313836376434636433306135303734376661376361
|
||||||
|
38373438623331653165643837303733393436626166623762623531316164666163316661643761
|
||||||
|
39616539653831336261333335643834663533363233333732643431363836386633663539386638
|
||||||
|
39356336653438663061306230316464616533363036363434663335383530326432376632396338
|
||||||
|
38386130386532333861353362313838383964663861663962353039613565636339346162383331
|
||||||
|
32313337353430343130326466623666326263343438663463376134336131323735663261356263
|
||||||
|
34613638303262366666643036353766653039393739303738366330643033316632616232393032
|
||||||
|
36336161646434373332646663313834623064336437316666623663613861333838363731336564
|
||||||
|
63636633623664353432323836306564616239343731316335333234336465363232326430643231
|
||||||
|
30623063316130396531376237363363386465393838303463336439616333353338366436323634
|
||||||
|
66626463326136343533343263303033333766306632303333376136643137353831323135666430
|
||||||
|
61313663336363356531633866663366333433343433643664663665643335633035303034666334
|
||||||
|
62653233616136656462343930636534636432353237363538356365636635373865353532643764
|
||||||
|
32646431376165616235396133323162373330386664636336336266363961316462613263303131
|
||||||
|
33303635306136303366353331653239306130616464303835363437313566363436663032353061
|
||||||
|
32356639333061636536383238396665393232663562363662366563653831343037626535666432
|
||||||
|
33353261623936313563323564643134666232333839386162663331326461393239623135383530
|
||||||
|
31323861666631663933636338323239386336356339623738646430333136336635643562353263
|
||||||
|
64313931656435383134353063383665646538306661396163653434373031326134336235646461
|
||||||
|
39343734313965313365643135643166366133313465323366633038663333366535633532623966
|
||||||
|
36666134316165613830323933333339336663363964323764313430613130653236336664393863
|
||||||
|
64306437316235306565333238666164353738336539353064343161343834656262653666636663
|
||||||
|
36353063326262653466303534616530616139636166343137666439336335363539393439633436
|
||||||
|
36623963623839623834656431396162396562373330316438383739363637613366613163336138
|
||||||
|
35373730383165316330366332373939643839336634613934653538303866343738656534653263
|
||||||
|
33303361343237356430373266653062313037663230366531366363393937653439363732333036
|
||||||
|
31343365633862623038316536363031356336383461396562626236313038313239623665316439
|
||||||
|
30336137356438343362363536303234346637373833313231663333616263303233336161383130
|
||||||
|
34316265613736383830363639366139313537313661633736303634326237643330663735356561
|
||||||
|
65626136613831376432383363383731663763356432663264346561646535633966643462326232
|
||||||
|
31623930303262616535356633663938323635643462663731366433623961623435303062616263
|
||||||
|
63353836333235336362353039343431313262646137303364613838306339623930666466636132
|
||||||
|
32656434623738333565636164303535393734346462353436313030396264623332393932653861
|
||||||
|
36383533363030356664326332376662616139343065343932656262623334633334633462383635
|
||||||
|
63666439343130623936376636633635613335363264363136643366636535613938373866356336
|
||||||
|
35666632313565633630373039316262316339333035366332356138393261613836633437363136
|
||||||
|
33653033343536623264366466356561323063313031633464353963383661316131643166663566
|
||||||
|
36373937326333393164353234336433656336626134363236303032396531353862333535336466
|
||||||
|
65393865333565386538386665373166383235633739383934643334653763366161396565616166
|
||||||
|
61333666353666393230326134636661376237353937646236343034626135366535383631333035
|
||||||
|
61346231386233326564656636363066396636393966353539666231646464323636303038656562
|
||||||
|
31656238373331303031393034346630643263613365643232663861373336363662356265326164
|
||||||
|
61323866663033636534313365376466303538666463663539623231313632303262326638633539
|
||||||
|
62313239356365313932653735363662666266643765633138393037653662656566656130663133
|
||||||
|
61373531316261646234666361313766626139613762306563343561363961656565666163313532
|
||||||
|
35323837333737366138316164376537613834313135306461633735613362376233306134373537
|
||||||
|
65323339393039336230373237386434333639623762643133363339303265623065326438623531
|
||||||
|
65356632363237613937633132326231333938336639663438653861353761396434643136643238
|
||||||
|
62363162666366653831626531353236623532656437313134343633626666383437363761626331
|
||||||
|
35386431646564653233613632373435623665613335316164636562356264663033366639636439
|
||||||
|
63356231393362663736366431616161633065303537366538393935363033303636653836346132
|
||||||
|
30633036653836656433636631313863303132666531326563303266316566623934666361653932
|
||||||
|
35623265613635343435373361353635343261656233356535303037383433353731313539613463
|
||||||
|
64363334383666663639623735393934646366386437633638613034316366336337316561333731
|
||||||
|
38363339386561373834333037626565623335613563323366656365643032373834616339663838
|
||||||
|
64646534623432323363303032323666643636323536666239616238323932353165663535633465
|
||||||
|
64633934303565396533313165393438373231376664616237373562306130363531393833353365
|
||||||
|
63623033343762326437306536663734386365653131346235303837336236366665346234316163
|
||||||
|
32616539666634653839633739303837646563313364333864343231306663383530313963386434
|
||||||
|
34313965393731653963643336336134343764343065646436303739356530333761386465333333
|
||||||
|
35653363653361366462636162663134333431323866306235343764333035373534656138643933
|
||||||
|
30653962613339313833343532613939636332633236303733313135313932356136383439326635
|
||||||
|
31386565343337333662663762356361623835353830333865613437336532623936343365343231
|
||||||
|
33336137616266303835366662643737666333346433366663666462396531643463373562623237
|
||||||
|
38383537666639363839653538303266303965613762373561643433376664313966326561653764
|
||||||
|
66396566366265343962393633653765643563666634646637623161323538623961393039333036
|
||||||
|
33363530653935386331396533666432626634616463663763396663353133393461623866383061
|
||||||
|
64366132646132663263636131333031643736663031663336623065386266653638376639336334
|
||||||
|
36653932643831303931613532333036323766376235303433633564303062623336646166303533
|
||||||
|
63353063303033623032643333653733393332303466366538353062373666363438366432316131
|
||||||
|
36613335396531663238343139313061613363393463363035366132353439353433646237646265
|
||||||
|
37633964316466636337363331383565323866653036386435376530343661323565666539663230
|
||||||
|
38386232376436623064613232636637313931316535643661306536343661653135313335616534
|
||||||
|
34633761663066316430313361393063623033373636633133653536383764306433346235343761
|
||||||
|
37393764633561653632653565383937383436666662336633633261653861323533303732613738
|
||||||
|
64653739323636613639643465316437356163356238656139663034313738363532373861393333
|
||||||
|
64613038386535396565656538663163313161353831306237313064666566336534646233393137
|
||||||
|
37336265316361613430663961356361653636636235323439306537666363353361643664363631
|
||||||
|
63643631336134323032636463393639613636643130313136326538376461363937643436633561
|
||||||
|
39663433623663346462356437666230313937396132633834386661613436653839616136343234
|
||||||
|
35333437386663353863306166393634363734323636333137343938353461386366326239396236
|
||||||
|
65303939623437376535633463626166653935343033303066383064306332356230623566393062
|
||||||
|
34666566353238653730613561383434343332333732356334623836616334393464373965633334
|
||||||
|
37313564393463663862386535626338336235613132376530666635343832386231366533363562
|
||||||
|
32626162626434366261623431373938646237643462623337653466653538653732393634366639
|
||||||
|
62666231376239393066366336386166646631396632613631313663633435646337313465643231
|
||||||
|
63356566333764333238326165613832643161346366396635663032623133386132666333343337
|
||||||
|
63323637383035363833653162326231616461653062613765363165313638313234343266333334
|
||||||
|
62383362343232363431613364383930376338303839633261656236636264353335333938333731
|
||||||
|
63616666626437643432393438376661616262643939363239353836323036303139666338336261
|
||||||
|
31306437353536623561333531346630643761336235373230373135326361393739613934653361
|
||||||
|
38346532313364633638306665306563646433353038346238313530363163396166353535343537
|
||||||
|
34343330373063383566333335386162326339383835373665363464616139383331646436343365
|
||||||
|
30386564323733393461653662323334656637363566343737356239306462303762383332656239
|
||||||
|
30643439343161636434656338636533396364643632383030646639356534343963666466613566
|
||||||
|
39373833633265623563396363653830393661633636646265643362633731626462636531313362
|
||||||
|
35366331383635643564316461633431646565393863373635323834363934336335653831613330
|
||||||
|
39646262633636343832626362393730643163616565363765346266316636343065393630333866
|
||||||
|
62333931336161636230326132393739616665646462653666346532356265643235333131343635
|
||||||
|
31326638626162356333356261623531646464633139666539373261376230336661313937363036
|
||||||
|
32313464316364623838343231346538303237393137363233366234373031346238303932383461
|
||||||
|
66613537346136313262313337636565383639383863346535393361363930616535626264376565
|
||||||
|
30303236663065363161663836356130363130363339643335653366623065373566353136353933
|
||||||
|
39363761636130646537393166623335353431616462343364383535393661313738343265313138
|
||||||
|
38323066333239616137623233323664616232323262666530373064366138316431643430643462
|
||||||
|
32653262386565396335646431633534663031613536656561643434366464353335313239393464
|
||||||
|
36333866343063656533623432306231343065343530343638653739343731336131626532376566
|
||||||
|
37653833313233386538666464386232353466303035316232646339653533663831323261636330
|
||||||
|
32646166366633656631393762626236356633393130386165643264663437666433336138353938
|
||||||
|
37653866646364333134313366316366636132623764366562623932383239643265646461646434
|
||||||
|
63656233316639616134666635373434323030643136626238646637386634333439616231336136
|
||||||
|
38326431363062326232626238613334356633353362653138643237646339333762616330383934
|
||||||
|
63613235376530373834333834316539343330313862666262633439333062633261646138626434
|
||||||
|
33616162316632366537393939343163333530393939613936323164663034326536666133303365
|
||||||
|
63643337343037363363663235316330316131353064383933323131643036623862303835336633
|
||||||
|
39376134313264333834306330366136643434386566393466313835396466306363663565303065
|
||||||
|
33393431636163376365396139346162346239343838616561373162643931623365336436626636
|
||||||
|
39613030356162363931316166376231303033306366616162366239396333323838363465353261
|
||||||
|
64303561386563383834386166323739626237376164326533616533343338316430366365333966
|
||||||
|
31343233666365663830323030336161623466633261303637373537336333663262383238393833
|
||||||
|
33383033343630663237653338636436346565356238313434346666336436653835326133313038
|
||||||
|
65353530333839373136326132326439306431333334633933663065316531616263633533346431
|
||||||
|
62383862653162613532383136363830313964366161306166343934363865316533643736373431
|
||||||
|
61323135343030346336356232326138376564343131636263336332333239303733323338663830
|
||||||
|
32373639343063353261623831623237663133646535636338353333653237653539656438666436
|
||||||
|
63636537336636313762336531346531313637653834386535313666306636303338306465303764
|
||||||
|
63366133396263636164386339343131653361363831363932303734333634343734636163383539
|
||||||
|
33613430353236616132636431656636633561316161623661373663396462633930343865336236
|
||||||
|
32373534666135303730303663333337643033346231646661393137643161383833626335336561
|
||||||
|
66366433303436313132636230313531316261613564323963626438623530633634363265613939
|
||||||
|
37666636313632353831343238646237666464333039306630343531626339323562346162663130
|
||||||
|
65633133366564306230666436663630316434616634656661306461353866396662376331666630
|
||||||
|
30323166386535633361316633303830623031393531343532633930616439326465613631613838
|
||||||
|
38326630366534363036666433333237363636643366333161343336363936323730313339343132
|
||||||
|
35356231666633386537366236303136663261336532386338316565343239333261613838623861
|
||||||
|
31366531343232653431343436343766386331303133363534616536633337656433326265656161
|
||||||
|
66356235616135363634313835666134346232356663326361396537303339373334323861383161
|
||||||
|
33393438313061613465666536666636643166613463363165393338643066613231636138343537
|
||||||
|
64333731376139353934316631393561356163366237386337393061343235633131613962383731
|
||||||
|
66376261633832323864356564326532356363343762313563393331393933316336373434333237
|
||||||
|
35396531303330396363333163373361643837383766333730303031613665313237383532666264
|
||||||
|
65613237623136336239653566646366376538356362643062386436363466616331336665616432
|
||||||
|
31383365363630663530643764633335336332386332663661393733343038626265383432306630
|
||||||
|
38653861356636313634326266633637653764396233313463393964653739306234666662336432
|
||||||
|
33393139343864346233653763343762616230383131353166396265653031326232656333626264
|
||||||
|
63616339663564363665626338316661623230646534373231313662343736316462663763333364
|
||||||
|
30333137386161336664386536366538313934313039333832323763313264373861666239643466
|
||||||
|
33383334633736333634306262316265323634386635313764376532646364356565396538656137
|
||||||
|
63316232643832383865303934636364313036666237636632393137373933656263646534623230
|
||||||
|
65616231323035643531353430326630353761633234636234343834656664323161383335343235
|
||||||
|
62616533366465303961306134386265303933616236346332623536393236633366333634316264
|
||||||
|
31396361343833623131306266336238343866303361303336346566656639616134383063396235
|
||||||
|
31626633333665373934333961646263663730653331326137383031383736646633356536333431
|
||||||
|
39303632383030613465656236333763393737353865386235333830613665653363393536646630
|
||||||
|
65353733613536653963393831636530636231366266343262376631393062623163313031623230
|
||||||
|
62326561653165306339633439376461346330393231313366666339346536313765363163616630
|
||||||
|
35373564366563656161376336323031346339313734633139383563393966373637616266666265
|
||||||
|
34623330313265373935396130643231353131313163393333396337396666636439633035326635
|
||||||
|
32663762333537663839346531663132613636366639643364373333343262326264366136363331
|
||||||
|
61613833643639656632353931663830613634383334653036323462323262386265313637656535
|
||||||
|
36333834306438633532616335663562383730306337656336663035643136386261326130336363
|
||||||
|
32623330333764616565333162383234656463363432313039666265653563323232613930303765
|
||||||
|
30623834666665636332303862663832303537656664643362643636616265613739356664646462
|
||||||
|
61326466303266626166333730343330396439356663376362666536623539353666636230373533
|
||||||
|
35363461326263366137313037323166396133646430616664343165623533393963623535626237
|
||||||
|
39633362393636373131626364636437343361303435396138363735326235383237633964336138
|
||||||
|
31643935646431386537643733353862666138333238323461623638356535316365653530376464
|
||||||
|
33343465653134613536343563376564663133336532343330666131346663363434623238303862
|
||||||
|
31306331633238623836346466616230356532316232323734356638343532643032633937653061
|
||||||
|
37393265333233626563353963363637653338393964363832663734303566356633623733393164
|
||||||
|
64383536343862393134336638353733373262396563303266346535346266306238616531336162
|
||||||
|
35363638333431396163303530353461363338656363336366376430316464353131623661346366
|
||||||
|
35313930353538343830333337356163613765356361343663613933366464353935336361636436
|
||||||
|
65356465346535613231363932303339646162303238376236323461303062313336656366306563
|
||||||
|
31353464333539343839353764393665393235653537313939373563303436626635663766303336
|
||||||
|
35333838323734386537623334366235653534623664396664656264633735353634663332353364
|
||||||
|
65306132346464363966313963346633353538633936363164393566376630376365316139376132
|
||||||
|
38323039653465346462666439656134393964623563393664643634313638323832356164323863
|
||||||
|
31366535336238663236666162336166313933376531643137343665653765623961333464633332
|
||||||
|
30306265306364643738386561303833326363303836333032393462643764663664613536363835
|
||||||
|
30663937333038663435326637663636383165363632326337653932336130333932333861366235
|
||||||
|
66313566613033383631376132333634653639336666386164613934353230613239383239313038
|
||||||
|
30653162643233636638393036353032353632316166333938313966626133643237376461313065
|
||||||
|
34323762376133393535613864636461616261343031393266666165316236323231323534376465
|
||||||
|
63386363343933316139356163363132343666366132313038643938653865663934383335336364
|
||||||
|
31646563346339323633643366653861323030636138663861636434306238623738636331393538
|
||||||
|
66333765626132346533313261646434633236633432333430613266333161643566326434363633
|
||||||
|
62373033356337393232353566666263353539326564333766303335666135343461386530626562
|
||||||
|
63633137623361366362616432613237353231616465656232373835376463386132663331633737
|
||||||
|
63306136326264643365356634336233303163663135366531643362303666653630363962666637
|
||||||
|
61626539613333306263323564373435613961633439633261373530363137376132326462633035
|
||||||
|
30353838336433313135623530643663643232653364316263356164633661383937393238363262
|
||||||
|
34393666663361613735623435626238646266376533333963653630663462653733373130393338
|
||||||
|
32626361366632633630323363376238343534626230373835353036333065396435653964326534
|
||||||
|
33356466643839626162316438356437623732656664613434613165643666656230656434633638
|
||||||
|
61316134333631326365313532313335633634356466663834666531653365333333616137643835
|
||||||
|
30666664353134313236653337366466623966366131313962346564663432633535363938333261
|
||||||
|
37353464383832373366613531666161323632616236613631653433643562326134623838393135
|
||||||
|
62323533373336663434386166333862366639626562343830396533646138636261326161393339
|
||||||
|
33613961353431653537373931396531623061653163376230663338376636613136353433646231
|
||||||
|
33633236306238336432323134393463653161303662336266313562316337343430373532663930
|
||||||
|
39613133646432343238393762386266303531663032306130653532376262353238636231393539
|
||||||
|
36376332633563633661353835386364633461363437333038363865356237643739323133653235
|
||||||
|
66373931336330626663383136363265363133393239393131623465383433363336333237653131
|
||||||
|
64656662316665356665303765343932363733666362353031656234373363663364666537663030
|
||||||
|
34646233386630633438313166396663383732366233373139343431373463346133316663643036
|
||||||
|
31633536663266383132393032313563653035303034336161356139396636353365636163383031
|
||||||
|
30666637363933643262393065633463313836653530663232303736306537636533343431333966
|
||||||
|
32386330356564613932306466353931393839316562353362303765663263383738363765333136
|
||||||
|
36383036376130306133393166333734316231376165393832383735623838353466353664353834
|
||||||
|
39326136656239626434313930306435333533623533643236393437313038393235386364323766
|
||||||
|
62323537666333613066356236313361376138656232343430363438346261646165623565313435
|
||||||
|
65326532623761343239666664636637613034623736386665303634613737613964333630613533
|
||||||
|
31653731353533613866663166653237663162623236353838646465373734613466616362363833
|
||||||
|
39346335373539376439643937363233373362616334323231623232353061343830383336666466
|
||||||
|
31303663643061653866326632333336626462623835366564356231316263326130393138306330
|
||||||
|
66333532336164633931306136373531666131356130313262313038626138653864633734636132
|
||||||
|
61353638333133383035333937626333376564316465333539653138323739356265613664653536
|
||||||
|
35656136343036363532613335336230373364336432343731326132666662636664356364303335
|
||||||
|
66613736633231393534626539333536626565663231396536363062353037346563643934313236
|
||||||
|
32363138386430633761383065343834376631643539626330313638333534333734333239383632
|
||||||
|
39383833656134393165666533353739303834633330653936643637316639663033363865653631
|
||||||
|
36313735613962393264623938336432336538393937316634626165383934356562353035316533
|
||||||
|
33353735653133636439393763356430303863326235623932623464356636666265653065383736
|
||||||
|
31613666303065653035303131646364386636393035663865336164376536323462666239356333
|
||||||
|
33373562383863323635613634643165336465613734613034366236633835363733306662613462
|
||||||
|
30326565346365633131363331643165346466366666633231643538303430376530393139393063
|
||||||
|
32666664313162303065616261326261353130623564343761633861373034646161643163373533
|
||||||
|
36386665626530313030343032376531656333356332666437383530613834356336386465353539
|
||||||
|
66623062646236333465316137316564363938303966613561643830353332333537373736626438
|
||||||
|
64653239613063646430386631313435306462303566333734663462626530356530663235303166
|
||||||
|
31633366613264316137303334613366366537646261303962646364643238383062643732386436
|
||||||
|
39643430613562663136633130666563396538306633633034323064386136303034306531323564
|
||||||
|
63646633303035353831653438366635646562613639313230396462373161363030386264623033
|
||||||
|
62343031616135346238303337313931643461386363396663333231626661613938626366653837
|
||||||
|
33303265656561313332353463363534666232363561353532643532386133306332333930373161
|
||||||
|
66626135303036633566303961646461383236663737643265346566393963343634623164633966
|
||||||
|
61313031333863383237313633663633333866366230313936396334383361393338656465346437
|
||||||
|
65613763643061386463386431386539656635393435633032343030633738373936613833623938
|
||||||
|
39316239363835633339343161623237656230633763313031643663623466323764663366376165
|
||||||
|
36366530363535376636383561343161643037626639323830396665303238663534633531613735
|
||||||
|
39316639633730376533643932633432353835353439646666653766666338646662643162373263
|
||||||
|
65356563303235633963633232393736636537346637376462626637303535383063373134613732
|
||||||
|
32663763663364633463633738343535316436303365343665356133313836616164343434613133
|
||||||
|
34626434643531343461346332636539636463313539393830613434333933643632313737356564
|
||||||
|
39386137383165616139626363613732626336366461663339346134656530396464323533313265
|
||||||
|
32346535356466383135636638616166313663613565353765346264376535653135356638663538
|
||||||
|
30623834393935636562656639643737373462643137363063663737306361336339653334633665
|
||||||
|
65316237633436303761393766393234326538653633363936303534646566373338623935666538
|
||||||
|
38313761643437313565663762613838636163633066313630353631353934396338353665653330
|
||||||
|
35393661356630313436373761383462396434643535316364383338343433613061353637333563
|
||||||
|
38376562373462316334313632343965326235323231653030666666616163346438626437386637
|
||||||
|
65656163653935656530366239663237633937336166613132356333623964666630386331383331
|
||||||
|
32303166386431643739303363646633376331623166313135653265656636663236363936336462
|
||||||
|
63303135613539663233366362323565396137623264353431373836356233666332633731666364
|
||||||
|
62376565633037373832393366306431613863353137306535393664313866616235633638306365
|
||||||
|
32633761386462386339343066316263663438623330373733333634363736623637636661636331
|
||||||
|
38353835333962633537633864616132643563616437336334326633323636393833363666353261
|
||||||
|
36363732383565623233343439666430303961306263363032383238653265323637313430613133
|
||||||
|
63633338323536386139613233343636326564356564353065386664646230666561336338366436
|
||||||
|
35353162633864633764373535366634303738346236633362626165393632383762343036313930
|
||||||
|
62363864626338393736373938343264356235393763653432306330363363313762333137303362
|
||||||
|
35393061356165666230343135663438303834363533323064626532663662323063386333623166
|
||||||
|
39353037363363373166316238393565353266353665666465333134303234373263663135346364
|
||||||
|
36646463343032326339663130393963663861323130356365396365643265313833353234323330
|
||||||
|
34336661363733613362343739366636336265356464613033343132353031663965656634613831
|
||||||
|
33656466376132656465383664363231653235623036346634666166623532323635313130303836
|
||||||
|
36393064356637623139653333633164666332303539623863383538386262363064356130353337
|
||||||
|
62393063633637383965346139626265666463356362633163363537303166336264346332636363
|
||||||
|
39613735626132366137356365303331633037623132623637383164636565653963626632626338
|
||||||
|
65383663633831613666396534333061643966313366303937333261303135353762656331336638
|
||||||
|
35643539326161646433633862623762626539396137303863616139383832613639653033653933
|
||||||
|
39373734393066613132323739383036313830346239306132656464646462626661633931623932
|
||||||
|
36626163353563633764323466303966636161646532316134383034393733653363363933353738
|
||||||
|
34383563666166323865656430346661633663363635623566336632353633303838303436616266
|
||||||
|
34326131623331616533306465373365396437303764383231356631313335393364643664663864
|
||||||
|
33313033303463376139376466643434383461643264316534306166303163373661643962343030
|
||||||
|
36653665353232363630363437376266306531633934626230653338383664343638313334306636
|
||||||
|
38666162623761366237383236346564333333633162623832656462616662313031316166383465
|
||||||
|
31663362336663353564636335393738333565356432306139363661656663313234396664623832
|
||||||
|
38393630666338663031323464383535303539643931393732616666366661316163626339643437
|
||||||
|
34316532613063353264303462366534613035653834356562646637633137643839653237353937
|
||||||
|
34326230396137383531393962346137643035333834376537363865643366623932303662303839
|
||||||
|
64373431306464363762356563663038343737356165313832613965653065326532356133646137
|
||||||
|
30326232643334656363343533383163643130343836366430333836396463386666623465366336
|
||||||
|
61343236303336623863303630336437613932353832623866633661653566623431653938306238
|
||||||
|
37326630616131646634383539353234323766363633333030613937616632333432366565343537
|
||||||
|
35613237343838333430656336313232653530373863663031386433356337643334303363666532
|
||||||
|
65633033333463366636616138646632636534333963643864383033343463666338373630313232
|
||||||
|
63326365666666663262383664353664623963343366626364363965626435666363306237346130
|
||||||
|
30306661386334653137336464393465646135353436336138616563366163366664346331646666
|
||||||
|
61613334323330663835366163623836363534666531353737656464663935333765326235306566
|
||||||
|
61353962363034663563386137373432656166663661653861396361653930653539363333613435
|
||||||
|
64373731616330396130363464653865303931333637393333386531303365646130646161366263
|
||||||
|
61643234333563386338643331303164323638346639353765656632386262366666376665356164
|
||||||
|
34393464656634303130323738353161643537613337383661343232363961613931613234643361
|
||||||
|
34663938626364636562613332373161323932386532356261353137393533633731653034633966
|
||||||
|
62316666613738383665303433376438303266646264353133303566636436373966343662363561
|
||||||
|
63333662613930323666656166373763303961333332363231396532376564393966333135373966
|
||||||
|
65623664303537376362383861663238663463396537353866666333656664323562373165646633
|
||||||
|
35396661353639356363613834653432346539633135663565376234383866343433383339666362
|
||||||
|
63373330336562323138343934646466373738333039346361623836653231633566316435383636
|
||||||
|
61326535393339616639366563383662636136353162393961303362393866363436663630303762
|
||||||
|
65343632396238623137333462633633653761336635663265326332623631393566323530623562
|
||||||
|
36666431396532303939316662663138356631336434373732393463306336303435626232316638
|
||||||
|
36363733383831363930666132396661633733616464393264343339333166633739346236383833
|
||||||
|
33373962313762323430343161616361636363366334613032323637316261656333633639333066
|
||||||
|
34653635393031323262353037396130383964363037633463653331653965363562326532623037
|
||||||
|
383331306234353238633435663136623634
|
||||||
18
ansible/group_vars/ntp_servers/vars
Normal file
18
ansible/group_vars/ntp_servers/vars
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
# file: group_vars/ntp_servers/vars
|
||||||
|
#Ansible vars template for NTP servers.
|
||||||
|
|
||||||
|
ntp_servers:
|
||||||
|
- 0.us.pool.ntp.org
|
||||||
|
- 1.us.pool.ntp.org
|
||||||
|
|
||||||
|
allowed_networks:
|
||||||
|
- "192.168.1.0/24"
|
||||||
|
- "192.168.2.0/24"
|
||||||
|
- "192.168.3.0/24"
|
||||||
|
- "192.168.5.0/24"
|
||||||
|
- "192.168.9.0/24"
|
||||||
|
- "192.168.10.0/24"
|
||||||
|
- "192.168.250.0/24"
|
||||||
|
- "10.1.71.0/24"
|
||||||
|
- "10.1.82.0/24"
|
||||||
19
ansible/group_vars/proxmox/oidc.yml
Normal file
19
ansible/group_vars/proxmox/oidc.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
# ansible/group_vars/proxmox/oidc.yml
|
||||||
|
#
|
||||||
|
# Proxmox OIDC configuration for Authentik integration.
|
||||||
|
# Client credentials come from vault.yml.
|
||||||
|
|
||||||
|
proxmox_oidc_realm_name: "authentik"
|
||||||
|
proxmox_oidc_issuer_url: "https://authentik.local.mk-labs.cloud/application/o/proxmox/"
|
||||||
|
proxmox_oidc_username_claim: "username"
|
||||||
|
proxmox_oidc_scopes: "openid email profile"
|
||||||
|
proxmox_oidc_autocreate: true
|
||||||
|
proxmox_oidc_default_realm: false
|
||||||
|
proxmox_oidc_comment: "Authentik SSO"
|
||||||
|
|
||||||
|
# ACL entries - grant your Authentik user admin access
|
||||||
|
proxmox_oidc_acl_entries:
|
||||||
|
- path: "/"
|
||||||
|
user: "rblundon@authentik"
|
||||||
|
role: "Administrator"
|
||||||
17
ansible/group_vars/proxmox/vault
Normal file
17
ansible/group_vars/proxmox/vault
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
64613361376364346139313833613465663361336634326430393261366630306466363935613139
|
||||||
|
3634363235343736643230623865386436333734663531310a343965396534336262356234623966
|
||||||
|
39353332626662636666383935383530613139626439373664323063633063316264383331646533
|
||||||
|
3366333837613731310a656462633638376432326365343135373863313665346566383933353630
|
||||||
|
37303565323630633739396433323165326262363863386233343134636236646366633765616432
|
||||||
|
33633165613239653762343935386637393437386431383961306436373765343736313634333933
|
||||||
|
30376463646464303066613561613564353938306664373464333966383664383034616439343735
|
||||||
|
38363966323366343465393530383736393364373361326234356365363163356632393834393464
|
||||||
|
39393530356235383830323065636535383138353864373237333164323436623737383435313261
|
||||||
|
64366362626232386438376131633533633162356432613835656465623762633464353936303236
|
||||||
|
63353633633262633461353963653534663336396134373435303266386162393965343165303335
|
||||||
|
65313436666334383965373837376664323861376162373834363439653539383231346634633737
|
||||||
|
30626431373739633930313937643938343165383536373465613535366562313439396533643864
|
||||||
|
36323032316131333962373732306334373939333363386564653465303261393337333466316130
|
||||||
|
32326533353165393635393130396164636363623937313566343333386562616662383038613565
|
||||||
|
35386638383365633362
|
||||||
59
ansible/host_vars/arcade/vars
Normal file
59
ansible/host_vars/arcade/vars
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora
|
||||||
|
# - 42
|
||||||
|
|
||||||
|
vm_os_distribution: "ubuntu"
|
||||||
|
vm_os_version: "24.04"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "liberty-tree"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.111
|
||||||
|
# vm_mac_address: 'BC:24:11:11:BC:58'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
25
ansible/host_vars/astro-orbiter/vars.yml
Normal file
25
ansible/host_vars/astro-orbiter/vars.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# FILE: ansible/host_vars/astro_orbiter/vars.yml
|
||||||
|
# HOST: astro-orbiter (10.1.71.130)
|
||||||
|
# ROLE: Ollama inference host with AMD RX 5700 GPU passthrough
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
ansible_host: 10.1.71.130
|
||||||
|
ansible_user: wed
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
# LVM root expansion — xlarge template uses sda3 partition, standard VG/LV names
|
||||||
|
common_expand_root_lvm: true
|
||||||
|
common_root_pv: /dev/sda3
|
||||||
|
common_root_vg: ubuntu-vg
|
||||||
|
common_root_lv: ubuntu-lv
|
||||||
|
|
||||||
|
# Ollama — all defaults apply; explicitly documented here for visibility
|
||||||
|
ollama_rocm_version: "6.2"
|
||||||
|
ollama_default_model: "qwen3:8b"
|
||||||
|
ollama_hsa_override_gfx_version: "10.1.0"
|
||||||
|
ollama_data_disk: /dev/sdb
|
||||||
|
ollama_data_vg: ollama-vg
|
||||||
|
ollama_data_lv: ollama-lv
|
||||||
|
ollama_data_dir: /var/lib/ollama
|
||||||
6
ansible/host_vars/backup/vars
Normal file
6
ansible/host_vars/backup/vars
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/backup/vars
|
||||||
|
# mac_address: "98:b7:85:1e:c6:f1"
|
||||||
|
ip_address: "10.1.71.9"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
# primary_interface: "enp1s0f0"
|
||||||
58
ansible/host_vars/big-thunder-mountain/old_vars
Normal file
58
ansible/host_vars/big-thunder-mountain/old_vars
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora
|
||||||
|
# - 42
|
||||||
|
|
||||||
|
vm_os_distribution: "ubuntu"
|
||||||
|
vm_os_version: "24.04"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large-plus"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "general"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.52
|
||||||
|
vm_mac_address: 'BC:24:11:11:BC:58'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
99
ansible/host_vars/big-thunder-mountain/vars
Normal file
99
ansible/host_vars/big-thunder-mountain/vars
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu (clone)
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora (clone)
|
||||||
|
# - 42
|
||||||
|
# - Talos (create)
|
||||||
|
# - 1.11.5
|
||||||
|
|
||||||
|
vm_os_distribution: "talos"
|
||||||
|
vm_os_version: "1.11.5"
|
||||||
|
|
||||||
|
# VM ISO
|
||||||
|
# Talos: talos-v1.11.5-nocloud-amd64.iso
|
||||||
|
|
||||||
|
vm_iso_storage: "templates"
|
||||||
|
vm_iso: "talos-v{{ vm_os_version }}-nocloud-amd64.iso"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
# Comment out for VM create
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "liberty-tree"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large-plus"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.52
|
||||||
|
vm_mac_address: 'BC:24:11:11:BC:58'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
|
|
||||||
|
# Dictionaries for VM resources
|
||||||
|
# - cores (quantity)
|
||||||
|
# - memory (MB)
|
||||||
|
# - virtual disk (GiB)
|
||||||
|
|
||||||
|
vm_definitions:
|
||||||
|
small:
|
||||||
|
cores: 2
|
||||||
|
memory: 2048
|
||||||
|
disk: 8
|
||||||
|
medium:
|
||||||
|
cores: 2
|
||||||
|
memory: 4096
|
||||||
|
disk: 16
|
||||||
|
large:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 32
|
||||||
|
large-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 48
|
||||||
|
xlarge:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 64
|
||||||
|
xlarge-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 128
|
||||||
16
ansible/host_vars/carousel-of-progress/vars.yml
Normal file
16
ansible/host_vars/carousel-of-progress/vars.yml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# FILE: ansible/host_vars/astro_orbiter/vars.yml
|
||||||
|
# HOST: astro-orbiter (10.1.71.130)
|
||||||
|
# ROLE: Ollama inference host with AMD RX 5700 GPU passthrough
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
ansible_host: 10.1.71.131
|
||||||
|
ansible_user: wed
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
# LVM root expansion — xlarge template uses sda3 partition, standard VG/LV names
|
||||||
|
common_expand_root_lvm: true
|
||||||
|
common_root_pv: /dev/sda3
|
||||||
|
common_root_vg: ubuntu-vg
|
||||||
|
common_root_lv: ubuntu-lv
|
||||||
48
ansible/host_vars/city-hall/vars
Normal file
48
ansible/host_vars/city-hall/vars
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Fedora (42)
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
|
||||||
|
vm_clone_source: "fedora-42-small"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "mk-general"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.21
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
11
ansible/host_vars/docker01/vars
Normal file
11
ansible/host_vars/docker01/vars
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/docker01/vars
|
||||||
|
|
||||||
|
# Networking
|
||||||
|
# primary_interface: "enp1s0f0"
|
||||||
|
#mac_address: "BC:24:11:03:A9:7B"
|
||||||
|
ip_address: 10.1.71.211
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
|
||||||
|
# Software
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
12
ansible/host_vars/guest-relations/vars
Normal file
12
ansible/host_vars/guest-relations/vars
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/guest-relations/vars
|
||||||
|
# guest-relations — Guest Relations
|
||||||
|
# VM provisioned by Terraform (pre-pipeline bootstrap)
|
||||||
|
|
||||||
|
# ─── Network ─────────────────────────────────────────────────────────────────
|
||||||
|
ip_address: 10.1.71.40
|
||||||
|
|
||||||
|
# ─── Application ─────────────────────────────────────────────────────────────
|
||||||
|
app_role: identity_provider
|
||||||
|
app_name: authentik
|
||||||
|
app_deployment: docker_compose
|
||||||
60
ansible/host_vars/haunted-mansion/old_vars
Normal file
60
ansible/host_vars/haunted-mansion/old_vars
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora
|
||||||
|
# - 42
|
||||||
|
|
||||||
|
vm_os_distribution: "ubuntu"
|
||||||
|
vm_os_version: "24.04"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "xlarge"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "general"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.61
|
||||||
|
vm_mac_address: 'BC:24:11:C9:3A:13'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
99
ansible/host_vars/haunted-mansion/vars
Normal file
99
ansible/host_vars/haunted-mansion/vars
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu (clone)
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora (clone)
|
||||||
|
# - 42
|
||||||
|
# - Talos (create)
|
||||||
|
# - 1.11.5
|
||||||
|
|
||||||
|
vm_os_distribution: "talos"
|
||||||
|
vm_os_version: "1.11.5"
|
||||||
|
|
||||||
|
# VM ISO
|
||||||
|
# Talos: talos-v1.11.5-nocloud-amd64.iso
|
||||||
|
|
||||||
|
vm_iso_storage: "templates"
|
||||||
|
vm_iso: "talos-v{{ vm_os_version }}-nocloud-amd64.iso"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
# Comment out for VM create
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "liberty-tree"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "xlarge"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.61
|
||||||
|
vm_mac_address: 'BC:24:11:C9:3A:13'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
|
|
||||||
|
# Dictionaries for VM resources
|
||||||
|
# - cores (quantity)
|
||||||
|
# - memory (MB)
|
||||||
|
# - virtual disk (GiB)
|
||||||
|
|
||||||
|
vm_definitions:
|
||||||
|
small:
|
||||||
|
cores: 2
|
||||||
|
memory: 2048
|
||||||
|
disk: 8
|
||||||
|
medium:
|
||||||
|
cores: 2
|
||||||
|
memory: 4096
|
||||||
|
disk: 16
|
||||||
|
large:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 32
|
||||||
|
large-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 48
|
||||||
|
xlarge:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 64
|
||||||
|
xlarge-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 128
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
# primary_interface: "enp1s0f0"
|
# primary_interface: "enp1s0f0"
|
||||||
# mac_address: "98:b7:85:1e:c6:f1"
|
# mac_address: "98:b7:85:1e:c6:f1"
|
||||||
#ip_address: 10.1.71.51
|
#ip_address: 10.1.71.51
|
||||||
hostname: "infra01.{{ base_domain }}"
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
|
||||||
# Software
|
# Software
|
||||||
terraform_version: "1.11.3"
|
terraform_version: "1.11.3"
|
||||||
12
ansible/host_vars/lightning_lane/vars
Normal file
12
ansible/host_vars/lightning_lane/vars
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/lightning_lane/vars
|
||||||
|
# lightning-lane — Traefik Reverse Proxy / Load Balancer
|
||||||
|
# VM provisioned by Terraform (pre-pipeline bootstrap)
|
||||||
|
|
||||||
|
# ─── Network ─────────────────────────────────────────────────────────────────
|
||||||
|
ip_address: 10.1.71.35
|
||||||
|
|
||||||
|
# ─── Application ─────────────────────────────────────────────────────────────
|
||||||
|
app_role: reverse_proxy
|
||||||
|
app_name: traefik
|
||||||
|
app_deployment: docker_compose
|
||||||
11
ansible/host_vars/matchbox/vars
Normal file
11
ansible/host_vars/matchbox/vars
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/matchbox/vars
|
||||||
|
|
||||||
|
# Networking
|
||||||
|
# primary_interface: "enp1s0f0"
|
||||||
|
# mac_address: "98:b7:85:1e:c6:f1"
|
||||||
|
ip_address: 10.1.71.7
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
|
||||||
|
# Software
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
11
ansible/host_vars/n8n/vars
Normal file
11
ansible/host_vars/n8n/vars
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/matchbox/vars
|
||||||
|
|
||||||
|
# Networking
|
||||||
|
# primary_interface: "enp1s0f0"
|
||||||
|
mac_address: "BC:24:11:1B:BB:92"
|
||||||
|
ip_address: 10.1.71.81
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
|
||||||
|
# Software
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
59
ansible/host_vars/peter-pans-flight/old_vars
Normal file
59
ansible/host_vars/peter-pans-flight/old_vars
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora
|
||||||
|
# - 42
|
||||||
|
|
||||||
|
vm_os_distribution: "ubuntu"
|
||||||
|
vm_os_version: "24.04"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "xlarge"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "general"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.62
|
||||||
|
vm_mac_address: 'BC:24:11:AA:8F:3A'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
99
ansible/host_vars/peter-pans-flight/vars
Normal file
99
ansible/host_vars/peter-pans-flight/vars
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu (clone)
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora (clone)
|
||||||
|
# - 42
|
||||||
|
# - Talos (create)
|
||||||
|
# - 1.11.5
|
||||||
|
|
||||||
|
vm_os_distribution: "talos"
|
||||||
|
vm_os_version: "1.11.5"
|
||||||
|
|
||||||
|
# VM ISO
|
||||||
|
# Talos: talos-v1.11.5-nocloud-amd64.iso
|
||||||
|
|
||||||
|
vm_iso_storage: "templates"
|
||||||
|
vm_iso: "talos-v{{ vm_os_version }}-nocloud-amd64.iso"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
# Comment out for VM create
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "liberty-tree"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "xlarge"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.62
|
||||||
|
vm_mac_address: 'BC:24:11:AA:8F:3A'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
|
|
||||||
|
# Dictionaries for VM resources
|
||||||
|
# - cores (quantity)
|
||||||
|
# - memory (MB)
|
||||||
|
# - virtual disk (GiB)
|
||||||
|
|
||||||
|
vm_definitions:
|
||||||
|
small:
|
||||||
|
cores: 2
|
||||||
|
memory: 2048
|
||||||
|
disk: 8
|
||||||
|
medium:
|
||||||
|
cores: 2
|
||||||
|
memory: 4096
|
||||||
|
disk: 16
|
||||||
|
large:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 32
|
||||||
|
large-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 48
|
||||||
|
xlarge:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 64
|
||||||
|
xlarge-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 128
|
||||||
7
ansible/host_vars/pve01/vars
Normal file
7
ansible/host_vars/pve01/vars
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/pve01/vars
|
||||||
|
# mac_address: "98:b7:85:1e:c6:f1"
|
||||||
|
#ip_address: "10.1.71.51"
|
||||||
|
ip_address: "10.10.21.51"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
# primary_interface: "enp1s0f0"
|
||||||
7
ansible/host_vars/pve02/vars
Normal file
7
ansible/host_vars/pve02/vars
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/pve02/vars
|
||||||
|
# mac_address: "98:b7:85:1e:c6:f1"
|
||||||
|
#ip_address: "10.1.71.52"
|
||||||
|
ip_address: "10.10.21.52"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
# primary_interface: "enp1s0f0"
|
||||||
7
ansible/host_vars/pve03/vars
Normal file
7
ansible/host_vars/pve03/vars
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/pve03/vars
|
||||||
|
# mac_address: "98:b7:85:1e:c6:f1"
|
||||||
|
#ip_address: "10.1.71.53"
|
||||||
|
ip_address: "10.10.21.53"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
# primary_interface: "enp1s0f0"
|
||||||
59
ansible/host_vars/space-mountain/old_vars
Normal file
59
ansible/host_vars/space-mountain/old_vars
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora
|
||||||
|
# - 42
|
||||||
|
|
||||||
|
vm_os_distribution: "ubuntu"
|
||||||
|
vm_os_version: "24.04"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large-plus"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "general"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.51
|
||||||
|
vm_mac_address: 'BC:24:11:1A:E8:8C'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
99
ansible/host_vars/space-mountain/vars
Normal file
99
ansible/host_vars/space-mountain/vars
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu (clone)
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora (clone)
|
||||||
|
# - 42
|
||||||
|
# - Talos (create)
|
||||||
|
# - 1.11.5
|
||||||
|
|
||||||
|
vm_os_distribution: "talos"
|
||||||
|
vm_os_version: "1.11.5"
|
||||||
|
|
||||||
|
# VM ISO
|
||||||
|
# Talos: talos-v1.11.5-nocloud-amd64.iso
|
||||||
|
|
||||||
|
vm_iso_storage: "templates"
|
||||||
|
vm_iso: "talos-v{{ vm_os_version }}-nocloud-amd64.iso"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
# Comment out for VM create
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "liberty-tree"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large-plus"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.51
|
||||||
|
vm_mac_address: 'BC:24:11:1A:E8:8C'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
|
|
||||||
|
# Dictionaries for VM resources
|
||||||
|
# - cores (quantity)
|
||||||
|
# - memory (MB)
|
||||||
|
# - virtual disk (GiB)
|
||||||
|
|
||||||
|
vm_definitions:
|
||||||
|
small:
|
||||||
|
cores: 2
|
||||||
|
memory: 2048
|
||||||
|
disk: 8
|
||||||
|
medium:
|
||||||
|
cores: 2
|
||||||
|
memory: 4096
|
||||||
|
disk: 16
|
||||||
|
large:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 32
|
||||||
|
large-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 48
|
||||||
|
xlarge:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 64
|
||||||
|
xlarge-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 128
|
||||||
59
ansible/host_vars/splash-mountain/old_vars
Normal file
59
ansible/host_vars/splash-mountain/old_vars
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora
|
||||||
|
# - 42
|
||||||
|
|
||||||
|
vm_os_distribution: "ubuntu"
|
||||||
|
vm_os_version: "24.04"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large-plus"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "general"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.53
|
||||||
|
vm_mac_address: 'BC:24:11:84:D7:2F'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
99
ansible/host_vars/splash-mountain/vars
Normal file
99
ansible/host_vars/splash-mountain/vars
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu (clone)
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora (clone)
|
||||||
|
# - 42
|
||||||
|
# - Talos (create)
|
||||||
|
# - 1.11.5
|
||||||
|
|
||||||
|
vm_os_distribution: "talos"
|
||||||
|
vm_os_version: "1.11.5"
|
||||||
|
|
||||||
|
# VM ISO
|
||||||
|
# Talos: talos-v1.11.5-nocloud-amd64.iso
|
||||||
|
|
||||||
|
vm_iso_storage: "templates"
|
||||||
|
vm_iso: "talos-v{{ vm_os_version }}-nocloud-amd64.iso"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
# Comment out for VM create
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "liberty-tree"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large-plus"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.53
|
||||||
|
vm_mac_address: 'BC:24:11:84:D7:2F'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
|
|
||||||
|
# Dictionaries for VM resources
|
||||||
|
# - cores (quantity)
|
||||||
|
# - memory (MB)
|
||||||
|
# - virtual disk (GiB)
|
||||||
|
|
||||||
|
vm_definitions:
|
||||||
|
small:
|
||||||
|
cores: 2
|
||||||
|
memory: 2048
|
||||||
|
disk: 8
|
||||||
|
medium:
|
||||||
|
cores: 2
|
||||||
|
memory: 4096
|
||||||
|
disk: 16
|
||||||
|
large:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 32
|
||||||
|
large-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 48
|
||||||
|
xlarge:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 64
|
||||||
|
xlarge-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 128
|
||||||
100
ansible/host_vars/splash/vars
Normal file
100
ansible/host_vars/splash/vars
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts creation via clone or create.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu (clone)
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora (clone)
|
||||||
|
# - 42
|
||||||
|
# - Talos (create)
|
||||||
|
# - 1.11.5
|
||||||
|
|
||||||
|
vm_os_distribution: "talos"
|
||||||
|
vm_os_version: "1.11.5"
|
||||||
|
|
||||||
|
# VM ISO
|
||||||
|
# Talos: talos-v1.11.5-nocloud-amd64.iso
|
||||||
|
|
||||||
|
vm_iso_storage: "templates"
|
||||||
|
vm_iso: "talos-v{{ vm_os_version }}-nocloud-amd64.iso"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
# Comment out for VM create
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "liberty-tree"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "small"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "tomorrowland"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
# Comment out vm_mac_address if new MAC address should be generated
|
||||||
|
|
||||||
|
ip_address: 10.1.71.99
|
||||||
|
vm_mac_address: 'BC:24:11:97:C3:AA'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
|
|
||||||
|
# Dictionaries for VM resources
|
||||||
|
# - cores (quantity)
|
||||||
|
# - memory (MB)
|
||||||
|
# - virtual disk (GiB)
|
||||||
|
|
||||||
|
vm_definitions:
|
||||||
|
small:
|
||||||
|
cores: 2
|
||||||
|
memory: 2048
|
||||||
|
disk: 8
|
||||||
|
medium:
|
||||||
|
cores: 2
|
||||||
|
memory: 4096
|
||||||
|
disk: 16
|
||||||
|
large:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 32
|
||||||
|
large-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 48
|
||||||
|
xlarge:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 64
|
||||||
|
xlarge-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 128
|
||||||
11
ansible/host_vars/sql01/vars
Normal file
11
ansible/host_vars/sql01/vars
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/matchbox/vars
|
||||||
|
|
||||||
|
# Networking
|
||||||
|
# primary_interface: "enp1s0f0"
|
||||||
|
mac_address: "BC:24:11:1C:95:1B"
|
||||||
|
ip_address: 10.1.71.91
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
|
||||||
|
# Software
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
50
ansible/host_vars/sundial/vars
Normal file
50
ansible/host_vars/sundial/vars
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Fedora (42)
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_clone_source: "fedora-42-small"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "general"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "fantasyland"
|
||||||
|
proxmox_host_target: "fantasyland"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.21
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
59
ansible/host_vars/tiki-room/vars
Normal file
59
ansible/host_vars/tiki-room/vars
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts created via cloning.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora
|
||||||
|
# - 42
|
||||||
|
|
||||||
|
vm_os_distribution: "ubuntu"
|
||||||
|
vm_os_version: "24.04"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "general"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "pve03"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
|
||||||
|
ip_address: 10.1.71.23
|
||||||
|
# vm_mac_address: 'BC:24:11:11:BC:58'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
27
ansible/host_vars/turnstile/vars
Normal file
27
ansible/host_vars/turnstile/vars
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/turnstile/vars
|
||||||
|
# turnstile — Smallstep step-ca SSH Certificate Authority
|
||||||
|
# VM provisioned by Terraform (pre-pipeline bootstrap)
|
||||||
|
|
||||||
|
# ─── Network ─────────────────────────────────────────────────────────────────
|
||||||
|
ip_address: 10.1.71.34
|
||||||
|
|
||||||
|
# ─── Application ─────────────────────────────────────────────────────────────
|
||||||
|
app_role: ssh_certificate_authority
|
||||||
|
app_name: step-ca
|
||||||
|
app_deployment: docker_compose
|
||||||
|
|
||||||
|
# ─── step-ca Configuration ───────────────────────────────────────────────────
|
||||||
|
stepca_hostname: turnstile.local.mk-labs.cloud
|
||||||
|
stepca_dns_names: "turnstile.local.mk-labs.cloud,10.1.71.34"
|
||||||
|
stepca_ssh_enabled: true
|
||||||
|
stepca_listen_port: 9000
|
||||||
|
|
||||||
|
# ─── OIDC Provisioner (Authentik) ────────────────────────────────────────────
|
||||||
|
# Client ID and secret stored in vault
|
||||||
|
stepca_oidc_provisioner_name: authentik
|
||||||
|
stepca_oidc_configuration_endpoint: "https://authentik.local.mk-labs.cloud/application/o/step-ca/.well-known/openid-configuration"
|
||||||
|
stepca_oidc_listen_address: ":10000"
|
||||||
|
stepca_oidc_domains:
|
||||||
|
- "local.mk-labs.cloud"
|
||||||
|
- "protonmail.com"
|
||||||
17
ansible/host_vars/turnstile/vault
Normal file
17
ansible/host_vars/turnstile/vault
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
30383930323363386234333433636465393263613336646464666365643730386430353864616334
|
||||||
|
3865343031653162313736656437373666636136653263360a613961646133376262633164393535
|
||||||
|
31363434633634303035663133316230633538363936303266373931313661346563333832653032
|
||||||
|
6239376363646530620a303231363333363233623038326165316463383662656565626534396232
|
||||||
|
62333133623530643932643430663166373930353733363866336533643233373261333130613635
|
||||||
|
31633337376337663833613634666436383862386431636537373363343333323932363761653366
|
||||||
|
61353166613162346436396138316561646165303566376366323462663861616364336539313138
|
||||||
|
30386430373566353761383636626335393463376661356666303861353564313832346333396134
|
||||||
|
30653861363866336331336164323130623230666237356165613934333239386536373664643065
|
||||||
|
33643139346562346663313533643433353462363665323166313364373335366665373435643935
|
||||||
|
65303863663864393238393732303065343364306264396333376233666233346664323334336532
|
||||||
|
38373164383835663163363137643531303163396236623565666436363261393563343133333161
|
||||||
|
36663934303633663062346161636333396135336135616136303664636562363862353764343562
|
||||||
|
39643430396636313139336130656363306562363430346233313530663963366238326334623135
|
||||||
|
62383632613061316262323038303333323739303137363334626637666663666263613132336433
|
||||||
|
65346266393733633632
|
||||||
104
ansible/host_vars/vm_template/vars
Normal file
104
ansible/host_vars/vm_template/vars
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
# file: host_vars/vm_template/vars
|
||||||
|
# Ansible vars template for hosts creation via clone or create.
|
||||||
|
|
||||||
|
# Supported hypervisors:
|
||||||
|
# - Proxmox
|
||||||
|
|
||||||
|
platform: "proxmox"
|
||||||
|
|
||||||
|
# Templates are named in the following format (all lower case): <OS Distribution>-<OS Version>-<VM Size>
|
||||||
|
# Current OS offerings are:
|
||||||
|
# - Ubuntu (clone)
|
||||||
|
# - 24.04
|
||||||
|
# - Fedora (clone)
|
||||||
|
# - 42
|
||||||
|
# - Talos (create)
|
||||||
|
# - 1.11.5
|
||||||
|
|
||||||
|
vm_os_distribution: "ubuntu"
|
||||||
|
vm_os_version: "24.04"
|
||||||
|
|
||||||
|
# VM ISO
|
||||||
|
# Talos: talos-v1.11.5-nocloud-amd64.iso
|
||||||
|
|
||||||
|
vm_iso_storage: "templates"
|
||||||
|
vm_iso: "talos-v{{ vm_os_version }}-nocloud-amd64.iso"
|
||||||
|
|
||||||
|
# This is the Proxmox node where all the VM templates are stored. (Templates are not global.)
|
||||||
|
# Comment out for VM create
|
||||||
|
|
||||||
|
proxmox_clone_node: "fantasyland"
|
||||||
|
|
||||||
|
# Proxmox storage target.
|
||||||
|
|
||||||
|
vm_storage: "general"
|
||||||
|
|
||||||
|
# Current VM sizes are:
|
||||||
|
# - Small: 2 cores, 2GB memory, 8 GiB virtual disk
|
||||||
|
# - Medium: 2 cores, 4GB memory, 16 GiB virtual disk
|
||||||
|
# - Large: 4 cores, 4GB memory, 32 GiB virtual disk
|
||||||
|
# - Large Plus: 4 cores, 4GB memory, 48 GiB virtual disk
|
||||||
|
# - Xlarge: 4 cores, 8GB memory, 64 GiB virtual disk
|
||||||
|
# - Xlarge Plus: 4 cores, 8GB memory, 128 GiB virtual disk
|
||||||
|
|
||||||
|
vm_size: "large-plus"
|
||||||
|
|
||||||
|
# Proxmox does not yet do dynamic load balancing, the host target sets the target for HA groups
|
||||||
|
# and backup groups. (ha_group will be factored out in the next functionality update.)
|
||||||
|
|
||||||
|
ha_group: "pve03"
|
||||||
|
proxmox_host_target: "tomorrowland"
|
||||||
|
|
||||||
|
# Currently, only single NIC VMs using IPv4 are supported via cloning. The IP address also
|
||||||
|
# sets the Proxmox VMID. The VMID is a combination of the 3rd and 4th octet of the IPv4 address.
|
||||||
|
# Comment out vm_mac_address if new MAC address should be generated
|
||||||
|
|
||||||
|
ip_address: 10.1.71.249
|
||||||
|
# vm_mac_address: 'BC:24:11:11:BC:58'
|
||||||
|
|
||||||
|
# Software
|
||||||
|
# Future enhancement will allow specification of additional software to automatically deploy to
|
||||||
|
# the VM after creation.
|
||||||
|
|
||||||
|
#terraform_version: "1.11.3"
|
||||||
|
|
||||||
|
# ---
|
||||||
|
|
||||||
|
vm_clone_source: "{{ vm_os_distribution }}-{{ vm_os_version }}-{{ vm_size }}"
|
||||||
|
hostname: "{{ inventory_hostname }}.{{ base_domain }}" # Change variable to fqdn
|
||||||
|
|
||||||
|
# Dictionaries for VM resources
|
||||||
|
# - cores (quantity)
|
||||||
|
# - memory (MB)
|
||||||
|
# - virtual disk (GiB)
|
||||||
|
|
||||||
|
small:
|
||||||
|
cores: 2
|
||||||
|
memory: 2048
|
||||||
|
disk: 8
|
||||||
|
|
||||||
|
medium:
|
||||||
|
cores: 2
|
||||||
|
memory: 4096
|
||||||
|
disk: 16
|
||||||
|
|
||||||
|
large:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 32
|
||||||
|
|
||||||
|
large-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 4096
|
||||||
|
disk: 48
|
||||||
|
|
||||||
|
xlarge:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 64
|
||||||
|
|
||||||
|
xlarge-plus:
|
||||||
|
cores: 4
|
||||||
|
memory: 8192
|
||||||
|
disk: 128
|
||||||
114
ansible/inventory.yml
Executable file
114
ansible/inventory.yml
Executable file
@@ -0,0 +1,114 @@
|
|||||||
|
# file: inventory.yml
|
||||||
|
proxmox:
|
||||||
|
hosts:
|
||||||
|
main-street-usa:
|
||||||
|
ansible_host: 10.1.71.11
|
||||||
|
ansible_user: wed
|
||||||
|
ansible_become: true
|
||||||
|
tomorrowland:
|
||||||
|
fantasyland:
|
||||||
|
|
||||||
|
magic_kingdom:
|
||||||
|
hosts:
|
||||||
|
main-street-usa:
|
||||||
|
tomorrowland:
|
||||||
|
fantasyland:
|
||||||
|
|
||||||
|
dns_server:
|
||||||
|
hosts:
|
||||||
|
monorail:
|
||||||
|
|
||||||
|
ntp_servers:
|
||||||
|
hosts:
|
||||||
|
sundial:
|
||||||
|
|
||||||
|
load_balancers:
|
||||||
|
hosts:
|
||||||
|
lightning-lane:
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
step_ca_server:
|
||||||
|
hosts:
|
||||||
|
turnstile:
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
authentik_server:
|
||||||
|
hosts:
|
||||||
|
guest-relations:
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
gitea_servers:
|
||||||
|
hosts:
|
||||||
|
mad-tea-party:
|
||||||
|
ansible_user: wed
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
nextcloud_server:
|
||||||
|
hosts:
|
||||||
|
the-grid:
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
semaphore_server:
|
||||||
|
hosts:
|
||||||
|
figment:
|
||||||
|
ansible_host: 10.1.71.37
|
||||||
|
ansible_user: wed
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
n8n_server:
|
||||||
|
hosts:
|
||||||
|
tiki-room:
|
||||||
|
|
||||||
|
ollama_server:
|
||||||
|
hosts:
|
||||||
|
astro-orbiter:
|
||||||
|
ansible_host: 10.1.71.130
|
||||||
|
ansible_user: wed
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
hermes_server:
|
||||||
|
hosts:
|
||||||
|
carousel-of-progress:
|
||||||
|
ansible_host: 10.1.71.131
|
||||||
|
ansible_user: wed
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
honcho_server:
|
||||||
|
hosts:
|
||||||
|
lincoln:
|
||||||
|
ansible_host: 10.1.71.132
|
||||||
|
ansible_user: wed
|
||||||
|
ansible_become: true
|
||||||
|
|
||||||
|
papermc_server:
|
||||||
|
# ansible-galaxy role install engonzal.papermc
|
||||||
|
hosts:
|
||||||
|
arcade:
|
||||||
|
|
||||||
|
dev_servers:
|
||||||
|
hosts:
|
||||||
|
scrim:
|
||||||
|
|
||||||
|
# dhcp_server:
|
||||||
|
# hosts:
|
||||||
|
# matchbox:
|
||||||
|
|
||||||
|
backup_servers:
|
||||||
|
hosts:
|
||||||
|
timekeeper:
|
||||||
|
|
||||||
|
talos_control:
|
||||||
|
hosts:
|
||||||
|
city-hall:
|
||||||
|
ansible_become: true
|
||||||
|
vars:
|
||||||
|
talosctl_version: "v1.12.4"
|
||||||
|
talos_cluster_name: "fastpass"
|
||||||
|
|
||||||
|
# matchbox_server:
|
||||||
|
# hosts:
|
||||||
|
# matchbox:
|
||||||
|
|
||||||
|
terraform_server:
|
||||||
|
hosts:
|
||||||
|
infra01:
|
||||||
5
ansible/mk
Executable file
5
ansible/mk
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
space-mountain
|
||||||
|
splash-mountain
|
||||||
|
big-thunder-mountain
|
||||||
|
peter-pans-flight
|
||||||
|
haunted-mansion
|
||||||
84
ansible/playbooks/add_dhcp_reservation.yml
Executable file
84
ansible/playbooks/add_dhcp_reservation.yml
Executable file
@@ -0,0 +1,84 @@
|
|||||||
|
---
|
||||||
|
- name: Bind VM MAC address to IP address on Ubiquiti
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Set VM MAC address (if defined in vars)
|
||||||
|
delegate_to: "localhost"
|
||||||
|
community.proxmox.proxmox_kvm:
|
||||||
|
api_user: "{{ proxmox_user }}"
|
||||||
|
api_password: "{{ proxmox_password }}"
|
||||||
|
api_host: "{{ proxmox_host }}"
|
||||||
|
node: "{{ proxmox_clone_node }}"
|
||||||
|
vmid: "{{ vm_id }}"
|
||||||
|
net:
|
||||||
|
net0: "virtio={{ vm_mac_address }},bridge=vmbr0,firewall=1"
|
||||||
|
update: true
|
||||||
|
update_unsafe: true
|
||||||
|
when: vm_mac_address is defined
|
||||||
|
|
||||||
|
- name: Get VM MAC address from Proxmox (not defined in vars)
|
||||||
|
when: vm_mac_address is not defined
|
||||||
|
block:
|
||||||
|
- name: Retrieve information about specific VM by name and get current configuration
|
||||||
|
delegate_to: "localhost"
|
||||||
|
community.proxmox.proxmox_vm_info:
|
||||||
|
api_user: "{{ proxmox_user }}"
|
||||||
|
api_password: "{{ proxmox_password }}"
|
||||||
|
api_host: "{{ proxmox_host }}"
|
||||||
|
name: "{{ inventory_hostname }}"
|
||||||
|
config: current
|
||||||
|
register: proxmox_vm_info
|
||||||
|
|
||||||
|
- name: Extract net0 information
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
vm_net0: "{{ proxmox_vm_info.proxmox_vms[0].config.net0 }}"
|
||||||
|
|
||||||
|
- name: Extract MAC address using regex
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
vm_mac_address: "{{ vm_net0 | regex_search('([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}') }}"
|
||||||
|
|
||||||
|
- name: Assign VM MAC address to IP address on Ubiquiti with Terraform
|
||||||
|
when: vm_mac_address is defined
|
||||||
|
delegate_to: "{{ groups['terraform_server'][0] }}"
|
||||||
|
block:
|
||||||
|
- name: Create a directory if it does not exist
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "~/homelab/terraform/unifi-dhcp"
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Create Unifi provider file from template
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: templates/unifi_provider.tf.j2
|
||||||
|
dest: ~/homelab/terraform/unifi-dhcp/provider.tf
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Create Unifi user (host) file from template
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: templates/unifi-user.tf.j2
|
||||||
|
dest: ~/homelab/terraform/unifi-dhcp/{{ inventory_hostname }}.tf
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Configure Unifi via Terraform
|
||||||
|
community.general.terraform:
|
||||||
|
project_path: ~/homelab/terraform/unifi-dhcp
|
||||||
|
state: present
|
||||||
|
force_init: true
|
||||||
|
|
||||||
|
# - name: Add line to hosts file
|
||||||
|
# delegate_to: "{{ groups['dhcp_server'][0] }}"
|
||||||
|
# become: true
|
||||||
|
# ansible.builtin.lineinfile:
|
||||||
|
# path: /etc/dnsmasq.d/hosts.conf
|
||||||
|
# regexp: "# {{ inventory_hostname }}$"
|
||||||
|
# line: "dhcp-host={{ vm_mac_address | lower }},{{ ip_address }} # {{ inventory_hostname }}"
|
||||||
|
# state: present
|
||||||
|
# # restart dnsmasq service
|
||||||
|
# - name: Restart service dnsmasq
|
||||||
|
# delegate_to: "{{ groups['dhcp_server'][0] }}"
|
||||||
|
# become: true
|
||||||
|
# ansible.builtin.service:
|
||||||
|
# name: dnsmasq
|
||||||
|
# state: restarted
|
||||||
13
ansible/playbooks/add_dns_entry.yml
Executable file
13
ansible/playbooks/add_dns_entry.yml
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
# Replacement for add_technitium_dns_entry.yml
|
||||||
|
# This playbook uses the modular task file approach
|
||||||
|
|
||||||
|
- name: Add DNS entry using Technitium DNS
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Include Technitium DNS entry task
|
||||||
|
ansible.builtin.include_tasks: tasks/add_technitium_dns_entry.yml
|
||||||
|
vars:
|
||||||
|
host_name: "{{ inventory_hostname }}"
|
||||||
95
ansible/playbooks/add_service_route.yml
Normal file
95
ansible/playbooks/add_service_route.yml
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
---
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# FILE: playbooks/add_service_route.yml
|
||||||
|
# DESCRIPTION: Ensures all services in the Traefik dynamic config directory
|
||||||
|
# are routed and have DNS CNAME records on monorail.
|
||||||
|
#
|
||||||
|
# 1. Syncs boilerplates/traefik/dynamic/ to lightning-lane
|
||||||
|
# 2. Scans the directory for service configs
|
||||||
|
# 3. Extracts all hostnames from Host() rules (supports multi-host)
|
||||||
|
# 4. Creates CNAME records for each hostname -> lightning-lane
|
||||||
|
#
|
||||||
|
# PREREQUISITES:
|
||||||
|
# - Service dynamic config YAML committed to boilerplates/traefik/dynamic/
|
||||||
|
# - vault_technitium_api_key defined in group_vars/all/vault
|
||||||
|
#
|
||||||
|
# USAGE:
|
||||||
|
# ansible-playbook -i inventory.yml playbooks/add_service_route.yml
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
- name: Sync Traefik routes and ensure DNS records
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
vars:
|
||||||
|
base_domain: "local.mk-labs.cloud"
|
||||||
|
dns_server: "monorail"
|
||||||
|
traefik_host: "lightning-lane.local.mk-labs.cloud"
|
||||||
|
traefik_user: "wed"
|
||||||
|
traefik_dynamic_path: "/opt/docker/traefik/dynamic/"
|
||||||
|
dynamic_config_dir: "{{ playbook_dir }}/../../boilerplates/traefik/dynamic"
|
||||||
|
|
||||||
|
# Files in the dynamic directory that are NOT service routes
|
||||||
|
exclude_configs:
|
||||||
|
- default.yml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
# ── Step 1: Sync dynamic config to lightning-lane ──
|
||||||
|
- name: Sync Traefik dynamic configuration to lightning-lane
|
||||||
|
ansible.builtin.shell: >
|
||||||
|
rsync -av --delete
|
||||||
|
{{ dynamic_config_dir }}/
|
||||||
|
{{ traefik_user }}@{{ traefik_host }}:{{ traefik_dynamic_path }}
|
||||||
|
register: sync_result
|
||||||
|
changed_when: "'sending incremental file list' in sync_result.stdout"
|
||||||
|
|
||||||
|
# ── Step 2: Discover hostnames from Traefik router rules ──
|
||||||
|
- name: Find all dynamic config files
|
||||||
|
ansible.builtin.find:
|
||||||
|
paths: "{{ dynamic_config_dir }}"
|
||||||
|
patterns: "*.yml"
|
||||||
|
register: config_files
|
||||||
|
|
||||||
|
- name: Read config files
|
||||||
|
ansible.builtin.slurp:
|
||||||
|
src: "{{ item.path }}"
|
||||||
|
register: slurped_configs
|
||||||
|
loop: "{{ config_files.files }}"
|
||||||
|
when: item.path | basename not in exclude_configs
|
||||||
|
|
||||||
|
- name: Extract all hostnames from Host() rules
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
hostnames: >-
|
||||||
|
{% set hosts = [] -%}
|
||||||
|
{% for result in slurped_configs.results if result.content is defined -%}
|
||||||
|
{% set content = result.content | b64decode -%}
|
||||||
|
{% for match in content | regex_findall('Host\(`([^`]+)`\)') -%}
|
||||||
|
{% for h in match.split(' || ') -%}
|
||||||
|
{% set h = h | regex_replace('`', '') | trim -%}
|
||||||
|
{% if h.endswith('.local.mk-labs.cloud') and h not in hosts -%}
|
||||||
|
{% set _ = hosts.append(h) -%}
|
||||||
|
{% endif -%}
|
||||||
|
{% endfor -%}
|
||||||
|
{% endfor -%}
|
||||||
|
{% endfor -%}
|
||||||
|
{{ hosts | unique | list }}
|
||||||
|
|
||||||
|
- name: Display hostnames to create
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: "Hostnames found: {{ hostnames }}"
|
||||||
|
|
||||||
|
# ── Step 3: Create DNS CNAME records ──
|
||||||
|
- name: Create DNS CNAME record for each hostname
|
||||||
|
effectivelywild.technitium_dns.technitium_dns_add_record:
|
||||||
|
api_url: "http://{{ dns_server }}.{{ base_domain }}"
|
||||||
|
api_token: "{{ vault_technitium_api_key }}"
|
||||||
|
zone: "{{ base_domain }}"
|
||||||
|
name: "{{ item }}"
|
||||||
|
type: "CNAME"
|
||||||
|
cname: "lightning-lane.{{ base_domain }}"
|
||||||
|
ttl: 360
|
||||||
|
validate_certs: false
|
||||||
|
loop: "{{ hostnames }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item }}"
|
||||||
18
ansible/playbooks/add_technitium_dns_entry.yml.backup
Executable file
18
ansible/playbooks/add_technitium_dns_entry.yml.backup
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
- name: Add entry to Technitium DNS
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: "Create DNS entry for {{ inventory_hostname }}"
|
||||||
|
delegate_to: localhost
|
||||||
|
effectivelywild.technitium_dns.technitium_dns_add_record:
|
||||||
|
api_url: "http://{{ dns_server }}.{{ base_domain }}"
|
||||||
|
api_token: "{{ vault_technitium_api_key }}"
|
||||||
|
zone: "{{ base_domain }}"
|
||||||
|
name: "{{ inventory_hostname }}.{{ base_domain }}"
|
||||||
|
type: "A"
|
||||||
|
ipAddress: "{{ ip_address }}"
|
||||||
|
ptr: true
|
||||||
|
ttl: 360
|
||||||
|
# validate_certs: false
|
||||||
20
ansible/playbooks/configure_proxmox_oidc.yml
Normal file
20
ansible/playbooks/configure_proxmox_oidc.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
# ansible/playbooks/configure_proxmox_oidc.yml
|
||||||
|
#
|
||||||
|
# Configures Proxmox OIDC authentication with Authentik.
|
||||||
|
# Only targets one node since realm config is cluster-wide.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# cd ansible
|
||||||
|
# ansible-playbook -i inventory.yml playbooks/configure_proxmox_oidc.yml
|
||||||
|
#
|
||||||
|
# To also set up ACL entries for your user:
|
||||||
|
# ansible-playbook -i inventory.yml playbooks/configure_proxmox_oidc.yml \
|
||||||
|
# -e '{"proxmox_oidc_acl_entries": [{"path": "/", "user": "rblundon@authentik", "role": "Administrator"}]}'
|
||||||
|
|
||||||
|
- name: Configure Proxmox Authentik OIDC
|
||||||
|
hosts: main-street-usa
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: proxmox
|
||||||
|
tags: [proxmox-oidc]
|
||||||
37
ansible/playbooks/configure_unbound.yml
Executable file
37
ansible/playbooks/configure_unbound.yml
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
- name: Master playbook to install and configure unbound
|
||||||
|
hosts: unbound_servers
|
||||||
|
become: true
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Permit traffic in default zone for dns service
|
||||||
|
ansible.posix.firewalld:
|
||||||
|
service: dns
|
||||||
|
permanent: true
|
||||||
|
immediate: true
|
||||||
|
state: enabled
|
||||||
|
|
||||||
|
- name: Create the directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /etc/systemd/resolved.conf.d
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
|
||||||
|
- name: Put `unbound.conf` in the correct place
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: ../roles/common/files/unbound.conf
|
||||||
|
dest: /etc/systemd/resolved.conf.d/unbound.conf
|
||||||
|
mode: '0644'
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
|
||||||
|
- name: Restart service systemd-resolved
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: systemd-resolved
|
||||||
|
state: restarted
|
||||||
|
|
||||||
|
- name: Install unbound via role
|
||||||
|
ansible.builtin.import_role:
|
||||||
|
name: Anthony25.unbound
|
||||||
23
ansible/playbooks/create_vm.yml
Executable file
23
ansible/playbooks/create_vm.yml
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: Master playbook to create VM
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
- name: Proxmox Create VM Playbook
|
||||||
|
ansible.builtin.import_playbook: proxmox_create_vm.yml
|
||||||
|
|
||||||
|
- name: Set cloud-init network
|
||||||
|
ansible.builtin.import_playbook: populate_cloud_init.yml
|
||||||
|
when: vm_os_distribution == "ubuntu"
|
||||||
|
|
||||||
|
- name: DNS Playbook
|
||||||
|
ansible.builtin.import_playbook: add_dns_entry.yml
|
||||||
|
|
||||||
|
- name: DHCP Playbook
|
||||||
|
ansible.builtin.import_playbook: add_dhcp_reservation.yml
|
||||||
|
|
||||||
|
- name: Start VM Playbook
|
||||||
|
ansible.builtin.import_playbook: proxmox_start_vm.yml
|
||||||
|
|
||||||
|
- name: Set Hostname Playbook
|
||||||
|
ansible.builtin.import_playbook: set_hostname.yml
|
||||||
23
ansible/playbooks/create_vm_from_clone.yml
Executable file
23
ansible/playbooks/create_vm_from_clone.yml
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: Master playbook to create VM from a template
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
- name: Proxmox Clone VM Playbook
|
||||||
|
ansible.builtin.import_playbook: proxmox_clone_vm.yml
|
||||||
|
|
||||||
|
- name: Set cloud-init network
|
||||||
|
ansible.builtin.import_playbook: populate_cloud_init.yml
|
||||||
|
when: vm_os_distribution == "ubuntu"
|
||||||
|
|
||||||
|
- name: DNS Playbook
|
||||||
|
ansible.builtin.import_playbook: add_dns_entry.yml
|
||||||
|
|
||||||
|
- name: DHCP Playbook
|
||||||
|
ansible.builtin.import_playbook: add_dhcp_reservation.yml
|
||||||
|
|
||||||
|
- name: Start VM Playbook
|
||||||
|
ansible.builtin.import_playbook: proxmox_start_vm.yml
|
||||||
|
|
||||||
|
- name: Set Hostname Playbook
|
||||||
|
ansible.builtin.import_playbook: set_hostname.yml
|
||||||
6
ansible/playbooks/day0_baseline.yml
Normal file
6
ansible/playbooks/day0_baseline.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- name: Apply day0 baseline
|
||||||
|
hosts: "{{ target | default('all') }}"
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- day0-baseline
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user