From df2c53db8dea7548a4942f7b89aff2fe4066bbaf Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Sun, 19 Apr 2026 16:57:05 +0000 Subject: [PATCH] =?UTF-8?q?[infra]=20TrueNAS=20decommission=20=E2=80=94=20?= =?UTF-8?q?remove=20active=20references=20from=20Terraform=20+=20configs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TrueNAS VM 9000 at 10.0.10.15 was operationally decommissioned 2026-04-13. The subagent-driven doc sweep in 5a0b24f5 covered the prose. This commit removes the remaining in-code references: - reverse-proxy: drop truenas Traefik ingress + Cloudflare record (truenas.viktorbarzin.me was 502-ing since the VM stopped), drop truenas_homepage_token variable. - config.tfvars: drop deprecated `truenas IN A 10.0.10.15`, `iscsi CNAME truenas`, and the commented-out `iscsi`/`zabbix` A records. - dashy/conf.yml: remove Truenas dashboard entry (&ref_28). - monitoring/loki.yaml: change storageClass from the decommissioned `iscsi-truenas` to `proxmox-lvm` so a future re-enable has a valid SC (Loki is currently disabled). - actualbudget/main.tf + freedify/main.tf: update new-deployment docstrings to cite Proxmox host NFS instead of TrueNAS. - nfs-csi: add an explanatory comment to the `nfs-truenas` StorageClass noting the name is historical — 48 bound PVs reference it, SC names are immutable on PVs, rename not worth the churn. Also cleaned out-of-band: - Technitium DNS: deleted `truenas.viktorbarzin.lan` A and `iscsi.viktorbarzin.lan` CNAME records. - Vault: `secret/viktor` → removed `truenas_api_key` and `truenas_ssh_private_key`; `secret/platform.homepage_credentials.reverse_proxy.truenas_token` removed. - Terraform-applied: `scripts/tg apply -target=module.reverse-proxy.module.truenas` destroyed the 3 K8s/Cloudflare resources cleanly. Deferred: - VM 9000 is still stopped on PVE. Deletion (destructive) awaits explicit user go-ahead. - `nfs-truenas` StorageClass name retained (see nfs-csi comment above). Co-Authored-By: Claude Opus 4.7 (1M context) --- config.tfvars | Bin 9056 -> 8826 bytes stacks/actualbudget/main.tf | 3 +- stacks/dashy/conf.yml | 7 ----- stacks/freedify/main.tf | 2 +- .../monitoring/modules/monitoring/loki.yaml | 2 +- stacks/nfs-csi/modules/nfs-csi/main.tf | 5 ++++ stacks/reverse-proxy/main.tf | 1 - .../modules/reverse_proxy/main.tf | 26 ------------------ 8 files changed, 9 insertions(+), 37 deletions(-) diff --git a/config.tfvars b/config.tfvars index 751afa8ec9d13f13cebb8a4a8999a5f0b27d13c2..6db485755b169d6b7240265ef4898e3ac6ac0118 100644 GIT binary patch literal 8826 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�`9-2zen2by<0H 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 literal 9056 zcmV-mBcI#=M@dveQdv+`08zQ>YBZH!N;J#>WBE2T5WB&qAg9?L`Aos;OrU&{-9@Jh zhMb)ZX1x+ecZbgBd#rO020}GcyQmvS6s?o!Ei#Rjkd>|t;)Hc52ZC<|mzDN?WjE^T zabNvIk~7R5xR_kRR>0UBiI%uH(=zWGi*Q>N_62ZQNRtQN7jX@jpeIJOoJa*;j%to6 zxOR$@Bq}k+=T%hdiH!=xM>E|#o$2a(vmVJW<}4{jO+NwVU7sMFwK(`!cUp6lx)6F5 zgxRkC%28Q-R+iZX`z1aC0L=k(mQT>Jt^uoBzy8$j4QuqLj01GylS5P#6W|E`&LMsh0IdGZ1o%{|BD?t!f7>9F9~e z8nt<^JFOl(ROJ0m&-k$u0yi=3)nA|y&NNT6&fuA_opoFFdu?I}HN#rVg3r4P4*|e= zv=M0BiCjn;VVWI6g=b$Rqe)(YaujPuetAfBQiJtxitw#MuGc71wQ7DDqn8dD;#K_~ zF&LWD?g&WWk~V{8Cg0S({Pi;pofIDEi3DBZ$cPI5lj|J2G1A7d!^XnM(5)*ecNdwZ zb(s6{gik2YSnUmZy{8X=Tugv;l+Fgptz+qz!VQ547VY#1Pu z`riw9{$a&z<7J@-^`=s;jT3~qNti%1G^Y4WQ4QQjgY*%LK2ELdxX)rwlu?*iSz&8^ z7zOlhIrLsqf7Dj~nz7|4ir)8@?T6$jV3=)}*iDlNBIHQUTYSfZsBe9N!!0D;0`9p; z7CBmT(pa!Qq8$3`f$gJlwO;`yZEfmq-MG;WejZvmc(u+E;DSnFQagVX5lcov2$?3| zT~8VD>Y0QTQy2Y7LV#y-!MeUkxn50L%RUs41a5C}s$7cx|BfDx-E3R_L<5`8IP&=~ z79;>EP=_0rw`=8~FBq{^2&hkkkK~zG#=y-BxF%Km=)1CSNVN<2Aa6&ZyU~6UN*S_b z6n89d*LSG5tcbY`sy@H`WW3{I$20t|1c%I)K1b+muN4}(=7T?oaw&)UV~$3VGyfIG z%55rtVsrLtJ4(Zqzu)19tVNwX^=HaTFy~x3fO3S^lHg}JSjKzUR*v0%K<6E&C&9zL z;j0)3Z6Y{4^XGiC^&1<0didNbJeZ*y154VB#CLChyg&MHhVp7D*yy_(EvhS_b&3Az zWSV;XK6ppZ>ETW=r#N!ry1mmzm7IjD^pnG}yRTdwj+>6WnROF&RcMzXm?ytX_t=vA zn(cV2yPU_#ftc#RnM2JT)KY4+Ke=Z%`oTyg{YtG`!o3BObY7 zGK2Y5g>@4YPFd+ks4qW2@a=ycpY6^<8`X7pd^TflFj8|8C!kIG(Gb_<-v1!%1I{9a!qA! zrl7!p82`!!oSlGy?g17e7b}~HG!_-rdQ6(d4O==Yfh&r;qISJN3f(X$5e40H2Vxe^ z&Ritc0Wwc*oq+s?92&nghN)Ng2qUpB8@lEAl94MqNFYI^zEX&qSd4f7jfV-c6T)6Ljh7jl2gE!7q1AKnuwR&>r+8h6 z+y;@Fya!$-<%~*Rbx((I)@^IitLC&w7*%0zNsU`VBouQ@b zBwX;`-7s$!p08z$(Wi|IEK)5T47Gj-pIz zo8U;32I2kEAu6&%ChOHr4f$TFX>$4vviY1%ZgWW59YtQ4- zYcS6!;TobKAe-A`Wac$Pd z;hN~X#Hqt?PRTl#snjkCGIz(79?b#R+W@Pq9X<6+76u*T-)g$)u}^1mjuxCxhB2TX zDG%G`%g`=Z@;{Y+~EQC{^w?@}qUVJFh>JWF%IJ8RmQ+wC{q;$A`l^?PAvgMXlHqLN2{ z3W`A3TV*A%%VYe>-LWWjyRpo%tujGqfO~FU(HIr!s*(B@{S7Hh+-1qu({kJP?HR0&6^XuB&r{y6!V2!~aR<&f7$8GW4ZKwG$cB>(I`N@;wA$sI%KzHNTN=>+chMU%XYr?m~0VoTF&B!o-7PJl-8J=RdUe)f%M%UpcwhCI0>`N~ zEZYP%FgTN3W908&l;d!q8q{9i?Z3&DGJo*V_y4OPZ9=sM<;nYNu9I*Zju24KkE+%U z_fnlK=iBzGUH8@tbjNgo+XK|NSALKfs{Eg#2!X>Tv~neG$=5iL_`RQ}C%}F_H93`; zmZ@S{FS&x`fA!IP11H0Y%EHuZliOhPX)kWi!6!^GQ9AtD!2OyMf2f=|!j(h26WQ&vBYaa64H3bk{ax$bGS10KXwsgfc%jXh z-H)ItxI*&+vGQ4Q<0_vBDJ#)t;p7`xY{63>jKR5nG{__C+V?lEp^|7bLaxsnaFY2c+gxZ?n9 zOww!>J7TK_qVt*=-eO}uLzd|O$m*nI@k5uibz=bWD zLv*a!M>2=~IkDDd;UB6!>vWr09Ka62WU2>AEJ`DgEPmi>>ZtyG-uPG8=5mE%%E(e= z;IH~GKpFxth?nQrNg>OdOSp_A)30bIjPg!=ivJ>Rg~L0-9)r(TU!QqgkS8A-MAkRM z*qfqM9bpSJ%rUE;LkJ1eJwo z@^ZBW0Fb|20hCEIOR}G{M-P59KUhC(#aUP^7F=s^zBrc(uL8=-QS)7lZ5q6y8g$Z#Cx9qs}HkIaW zGHDm(8PuDy>DcwHhw4VO3|?*+$dSe1hG_&;R}$A-IZ2ppd5d3Ohvd>-S;1zQpx+x4 z>|D_@W_xCJ1L}2kA)6w2!*8yYmPTjM=@``GlKzx@xqGeNPsU26Py$dF0|$OfeyAJY z;FFlKkH?SWNX7XLnq6$YZLGYpz>Yd&2w*750RcQ^@arA+4_0GX*K8za`R5}7v$>tF zh={qn3lsb)WZ_b!26|i_y1cQ(RJ?NsFcjg2@Hop$YxRtP29(u9Ity{^^ezNA z6jHwI<*S3l>v@Zk_MNU=MQ8Dtm;Uu1_tF1A>1bG1ak&{@#&RwwJ7hoJrXoVe5hYcX ziGuUgp##6Ee=8pkCd-;4wJfXld1>8UrSEAw@`*8FUUMv&0<80+Yb|i9DA@b4u0d3+ zJsBi-45)H>tyRcaT@<&tnT5>Uou~#d)>Z$3l-YHQ+Rc3I5{#YE3cA~Ddv-6t{;0@D zuDvb67d{@BDrtT;i$dy`65V-G9j#@Prv@sUV!?lmvfCjY_)q_qtx!m%cATz9wsi8D z*(mwrJV)<6s?Qg7+tPTtzWSFnyTePfsEi&`iXcig%J+K9kx>(O?eMV7e-9EJ>!MvG zmv^lZE!qMr8OLognbi?Jl=h=ZKsv)dQj5f6h9UMbyS^oD z8%6FxRjn=XuYlKcus?e;v}LwYC!=?U|02CNpcuftg$|QE#M6YUIp$slp*0wGx}%tS z>GA5i21_Fqlx}Qb{gvaQYv&6JPuo?!NlPZJjV7Kcq9?s8b1V7_S%DY4k0MOIG>Pjl zA^;flfc&K9uNN0Zn@uYsdOO9_Sky`&gSkzC&!rBk{cZ=lnVO)H!BE0){zNZkEzY!f zD(aW)Ng)kQqQr8g>Bp@(@M?QeC-Exv*8woZva1XdyGc^GX%cnrIEt3Ohmi!VKWk5=}3if5zE ze^eGtQ`&i{5U9sdPX*8Au%Ly`hxqPc^G^#9Nav!ka>2{l-HaYvYep7izQup zy@h8i$(1Dd#c$cCWP;7^G4}x9NzaDC_%Hb+ltuynkz5wE?F6w9S#LGc^OK(@Fh09- zWGV*}5IER)RX^Un*XP?9l|b(P^NymmCV9PSMO2Yb)R>v85wDk(A_b5jzMz(S>jKM1>3rEeqt0GgkK|$sP)p5RSuyy?xNec!J<6b3N;Czc>#VVjrZ3H z?Kj+01DTjAw(ZJk!&d=czeUZ<+jCPUW=H*T1eqv%v+VN-+3@Z2BxwEUF4?BKY58%<{vaAUU`#!g$=h8WLMaz3& zbiCEj7@WS_rC!0qm`Vf)n%z=!%H;|-dn{PJ&FWm916K-EGKV?c}2%ghrX$}=!CrWJCBlHodnAcH(JH8ban*lh!&(pmtb zFo}LT;REHj${{vn%rQwffO!>DV;AShQy@hfRIYrT5VWhLj`bvQReUbtHB#qKqP26L za0j~Zd1vk7f1a@em%s7tK*Tq-UK2HjWdwN9aRiitI}m>VNm(!ae;mh~|3QHL>5UoK z#}dGOWZr{sfxTN!v0|MGqiF5Z@x3qY>yOF3;J1Se7|AP{J4BZhdfmGc?WMR2Yr#N% z4UAb~^Gwktf$#OXb^=d2y**A4^~mJPPOUcPBqMuXH1?6r6WB? z43)I{h=G&;!FhIuF6+@w@mLFg5>>TbbHz?$0%7^{u1!pk6sPLwvS}SF=n!2YF;ElmZ+fkC#nK^MMuT4@bm;5v3Xf|H# zk@88>W3#!oxe2HSRA&$2_8t!6jHhN2dW9gz%Fo$&%vPc!1AAZfHs78#j6`@U=m2Tb zEW{Cn=9IEl7Wu^cNJ7-b;Fw#ppz%77oLbjBQAmPP)^)w0_V7ip)aZ5_PKr3OZvBCk zaBWohb3YV~Ww|&gRS$_9*2fy_ph-2Z#(e9fN}p5WgVw)b$)U#Er#MLR?}yD;p8QjZ;nqS;RE8T2|D(6V zQ@3ux5Vk_*&X+1dq-LIUnhispl;k>nLjOWEDO2n&w%1xMeyfN8?|ilB9>D+EZXNYe z6B4wLk1Crj+qQ)Kp1XJNSNYLia5c2fU^D4&Q?=L#s2?P4YIgoWCvPJL@C!}JJuWzD zGr-JWBuw$@jqR7c`+m1)bD5xXLJ_UPJWxBG!rrxP2r`G<=(1uNXSTLgAmX`YlSXRC zqmEy+M&X{`NJW~=wKldXvSEowxNp+H=&CH5jna&cgj#neR|KC4wq+2CBbjI~b%7o$ z*`sdwexP2k4MO#1h3I{pGuh3ezUltE?-9iWJrgQf*sZ3JgeLOH3mOWD-6`TFrH7_cuC#OD;K|0TavA|+@JBIb8##>a547a`6?Im?ISYC5? zTv2&y1DAZ+Z)X{liNbH3#DNaG%(QG01{<|R6wXIXqk6qt-7v`&*-vcX@&bqvl>`=m zoY+0`^;9J*_J3d|u38iuIEiQVv^FTWK!=p@$v@Q(t}pL}y&#+)F4LTs#^(ejaK~c< zOa=N`+!k#U(0I9^fxN9835VW;4>%Q=C4^M@t8Fe=Pmr@thfji%NG zq4#ySsA)~Y;h>2hb3lHaqtuRMEYYNtNY*@FHZLB@#elTH^`x^B#U$fQ-B^1O80P62 zY23Sm-&N2>p#qW0(*(S(*(^GB5c7Cz;4;seIulHPH1th*Cr16iEo7!gw|V2x=(Z*; z`B=Ud)hJR1F@RDX;d?d&?Hu~_wJt}P)~F{cH~xsG3(;%eAo?ItKRG=H!Hy8XQWa7Z znd`B0MaMs3{zb$U%j7>wSBV z2MG8#(lU>ipkAGy0$;rZbsqT&x>}gZ%IYrH^=n^WGND=BZK{_*b8q1|<2WNHr^W~x z9oo++@1-I}7$I~uoilvE2)Lz<(XFQO)pv%<*exXRq4G2eMCDvEiPc^XseXN6uwr}brTGD{saKubv*h`*P@v)l{X z4lq`T%sP5F+`+GD1J8z-TT_7Eq|4`*J&4W9I?kR;7JPE0aPLJXIKN~NxN`MG3^$4) zV*YF1S|-LvYtPMPO7YnI03K)BE3f|#q2$Z;LUsd`Xb17p!(U2UWpf&uZe=c}@&1>K zI}hX{PYrt#$pb z?}z&DIP)lS@G(V4e*9R7FOlbjDMwrq#0O^AzMmT}8W%xnl@jV;O1X1iE3h{}HtZE; zcH=*NqMl&9mA4Zg6x@9q@q)&;xX5Xxgb@)%TRe^8ahu(M%=dS#@6X#hI(;@d{87@15}l*JZomLnxROx;T(he7mQRVQaZ4Yp z0W}T$6)dau1BPah7Vx&{7DiZjc?|Q|bl@oW?)BN|W;D3cZ?Ffiry#I-5|Aboa+p^WEl>PUs&wk?WE=dgkl6YWSejCKFi{y)c`2A(8= zYbQ)V@vK?!*NsOtKIPROiQcdWdM!PmiRQDmISN4W?Pl(lUUF_zOW1TUL6vnMEwkt7 zPO$~=LNfO^oPzVRLCt>5%#3V`E%;$oeQ62<8@+@^8=tVM_vYreJZNln2nyc1qHr%D zhgADGOEhZ#=&Hk88f|i+9ZL^8a#jPyws+C=0&2H)THB)4A{|`>Po5(of0&Y$k_5F( zH30;Y;JzCTs&mne*uz)D^sE^xrk`BuAd|Fe>FbWQfmx<;vA)w2MGn12vR>``T60MY zAN&uYQ39nUgKzN=HJxXZ%60+%i2P{S6rvQt)R(4S(kKlZP*sF^5FLBc3p?7v_j^)N zmm{88THm^yHTMY2G)xt3f+mvul~aXCYOz$m7gW%LmOhYS^TL^W_jV@SZbX;#(doeU zG{>mv1R&o4ts_V^0~3~RC%i&;8ZN7=+#M)wgfy(IV~U=AkL*ANp8G>r4L%Jqt9_0$ zZSqsK74TjTj`~~>d5JA02A(nc6#`H1We@G@*RQJtPAdjx_e9Z6s)nEtNKpmWmQ*C% zzB;+SUc2PJX?ArA+@vYApmZDE^hkvP5TXq!?YiDmT0sGm8ur!fe-Q-!)W6SFH%@ws zIk_rYx9@cNRY3f{3WEY@h`CA!_j*ru^+sv53tGxu&1}jq=&DeEK0B*;n^*5;ia6^o zBxb)IXM}R0FP_{u2(Yat=+u}W1*V8FFjz9b>rIJk}bOPa^b;cf0 zyWqmb*LD|@!&xuKSiJ~_WVm^xZ*2~HFZ+nCu7}`i<&Hj?MdL@CyQ{h9XDVoF9tw0~L%jq}-6+ zWBtmj_Lg0zFw4bZKE+3YDe1mwIaT)`Da@gGU?*NOE!2vx7d+4o#_;cQYlK>~`$GU4 z_qas2z=p82Xc{E4`Ui)AQVoxj!OG%w6gT%GPRj=WdmJIh(HJDU04K7*5xP0LbVGb( z3vC(MqiZrTjNLX&(D%+GXmO5VK!<#uq%XtN8tmmgL8<=L{03?yk%H~Py>*RX^-Ce` zs#gyOtdv@X{f(FnMrU|7srVf;zQO9o!vc@>Q+Bsy5i__zwj*?Y zY$yMvlP9xVUJe+cIemD`=}ZVATo&};LR9SYl^;JcxDP%OU(CTynP#xIABE{lHBE)* z6pvHa{t}qz1Q;@1RXt85TQP7^l=R3m^&z0kEpi*{9yw68Km^%%LjczzWL2S6GO}eA zgEbt7j`(6PCFcR2j zQ!^1FstNu6ugeI8Mafy?cyW=a{yYYfFz$bYVbp*^ZD%l2U0m&Viar%WOzUR@p8-OY z9?qze0vZYG%HFCG+Ij?P`(<&J)xI}XVdj9K+x9;;wDi+0`8Y3<%{XO?(0g>XwrIJ} zQXDrQ$sOq#ztE;!gg|LZM_s8FJ6_Wo{3Pw0bN_w5YuQcON*MfGTZiZ?!L$(LgdU7{ zS8})o7Ye|^*2(`kH?)j7)-nrn$bCW>rkf>=$~b4#CGwl$=2GX$|5XWgxRk$Fk&npX z=|rjxMuQ=twObBZFeki$`F{o#k*xdsn4RyY#eI*(nHAP*KCU)JPh5f=afnggn8DRaIZk$LrKA~A<-2-}