Én OpenVPN drop-in ændrede alle tunneller: instans kontra skabelon
En drop-in under instansmappen rører én tunnel; skabelonmappen rører dem alle. Læs den sammensmeltede unit, før du vælger en sti.
En genstartsregel, der er tilføjet for én tunnel, begynder at gælde for alle tunneller på maskinen. Det er ikke en systemd-fejl; det er forskellen mellem en instans-drop-in og en skabelon-drop-in. Den sti, du skriver filen under, afgør, hvor mange tjenester der arver den.
Vælg omfanget før indstillingen. De to mapper ser næsten identiske ud, og kun én af dem er begrænset til den instans, du mente.
Symptomet: én ændring, alle tunneller
En instansspecifik drop-in ligger under en mappe, der er opkaldt efter den fulde instans, for eksempel [email protected]. En skabelon-drop-in ligger under [email protected], med @-tegnet og intet instansnavn imellem. Den første gælder kun for office. Den anden gælder for hver tjeneste, der instantieres ud fra den skabelon.
Skabelonformen når ikke en separat [email protected]-skabelon, og den når ikke ubeslægtede tjenester med openvpn i navnet.
Vælg den mappe, der passer til omfanget
Begge mapper ligger under /etc/systemd/system/. Hvis du udelader den sidste system-komponent, opstår der en sti, som systemd ikke læser som en systemtilsidesættelse, og det er en stille måde at få en korrekt udseende fil til at gøre ingenting. Skriv den fulde sti én gang, og brug den igen.
En drop-in har også brug for den rigtige sektionsoverskrift. Tjenesteindstillinger hører under [Service]. En fil med indstillinger, men uden sektion, ignoreres eller afvises, og uniten fortsætter med at opføre sig som før, mens filen ligger der og ser autoritativ ud.
Behold formålet i filnavnet, hvis du tilføjer mere end én drop-in. Leksikografisk rækkefølge afgør sammenfletningen, og et navn, der siger, hvad filen gør, gør den rækkefølge læsbar.
Læs den sammensmeltede unit, før du skriver
Læs den sammensmeltede unit, før du skriver noget. systemctl cat [email protected] udskriver hoveduniten og hver drop-in, der gælder, i sammenfletningsrækkefølge. Sammenlign den med en anden instans, når du overvejer en skabelonændring. Den sammenligning viser præcis, hvilke tjenester der ville arve ændringen.
En instansfil sletter ikke skabelonindstillinger. Begge flettes, så en skabelonværdi, du har glemt, kan stadig være i kraft.
Andre navngivne drop-ins, køretidsindstillinger og konfiguration fra pakker deltager også. Antag ikke, at den fil, du redigerede sidst, er hele uniten. Det sammensmeltede output er uniten.
Hold unitpolitik ude af profilen
Hold unitpolitik og VPN-konfiguration adskilt. En profildirektiv bliver ikke gyldig systemd-syntaks, fordi den ligger under [Service]. En genstartsindstilling hører heller ikke i en .ovpn-fil.
Den adskillelse er også grunden til, at en genstartsregel ikke er det samme som den peer-genopretning, som OpenVPN selv har. Beslut, hvilken adfærd du vil have, før du vælger et omfang.
Anvend det, og verificér instansen
Efter ændringen skal du genindlæse managerens definitioner med systemctl daemon-reload. Den genindlæsning genstarter ikke tunnellen; den læser kun unitfiler igen. Anvend derefter den livscyklushandling, du havde til hensigt, på den præcise instans.
Verificér ved at læse den indlæste unit igen og ved at overvåge den adfærd, du ændrede. En genstart, der bærer aktivt arbejde, fortjener en planlagt afbrydelse, ikke en hurtig test på en produktionstunnel. Notér tilsidesættelsens formål og omfang ved siden af udrulningen, så den næste person ved, om filen var beregnet til at blive delt.
Hvis politikken virkelig er delt, skal du bevidst flytte den til skabelonen og kontrollere en anden instans, før du kalder det færdigt.systemd unit-referencen dokumenterer drop-in-forrang og sammenfletningsrækkefølge.