chore: script populate_zones - rattache serveurs aux 3 zones SANEF (DMZ deja faite, EMV pour hostname *emv*, LAN par defaut sur le reste)
This commit is contained in:
parent
785916246f
commit
9e2a5d81f4
58
populate_zones.sql
Normal file
58
populate_zones.sql
Normal file
@ -0,0 +1,58 @@
|
||||
-- Rattache chaque serveur à une des 3 zones SANEF :
|
||||
-- - DMZ : déjà attribuée via le script update_zone_dmz.sql (depuis xlsx)
|
||||
-- - EMV : serveurs avec 'emv' dans le hostname (zone PCI-DSS)
|
||||
-- - LAN : tous les autres (par défaut)
|
||||
-- Idempotent. Ne touche pas aux serveurs déjà en DMZ.
|
||||
|
||||
\echo '═══ AVANT ═══'
|
||||
|
||||
SELECT COALESCE(z.name, '∅ NULL') AS zone, COUNT(*) AS nb
|
||||
FROM public.servers s
|
||||
LEFT JOIN public.zones z ON s.zone_id = z.id
|
||||
GROUP BY z.name
|
||||
ORDER BY z.name NULLS FIRST;
|
||||
|
||||
\echo '═══ 1) Création zones LAN et EMV si absentes ═══'
|
||||
|
||||
INSERT INTO public.zones (name, description, is_dmz)
|
||||
SELECT 'LAN', 'Zone LAN par défaut (Satellite vpdsiasat2)', false
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.zones WHERE LOWER(name) = 'lan');
|
||||
|
||||
INSERT INTO public.zones (name, description, is_dmz)
|
||||
SELECT 'EMV', 'Zone EMV (PCI-DSS, hostname contient ''emv'')', false
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.zones WHERE LOWER(name) = 'emv');
|
||||
|
||||
\echo '═══ 2) Affectation EMV (hostname contient ''emv'', sauf DMZ) ═══'
|
||||
|
||||
UPDATE public.servers s
|
||||
SET zone_id = (SELECT id FROM public.zones WHERE LOWER(name) = 'emv' LIMIT 1),
|
||||
updated_at = NOW()
|
||||
WHERE LOWER(s.hostname::text) LIKE '%emv%'
|
||||
AND ( s.zone_id IS NULL
|
||||
OR s.zone_id NOT IN (SELECT id FROM public.zones
|
||||
WHERE is_dmz = true OR LOWER(name) = 'dmz') );
|
||||
|
||||
\echo '═══ 3) Affectation LAN par défaut (zone_id NULL restants) ═══'
|
||||
|
||||
UPDATE public.servers
|
||||
SET zone_id = (SELECT id FROM public.zones WHERE LOWER(name) = 'lan' LIMIT 1),
|
||||
updated_at = NOW()
|
||||
WHERE zone_id IS NULL;
|
||||
|
||||
\echo '═══ APRÈS ═══'
|
||||
|
||||
SELECT COALESCE(z.name, '∅ NULL') AS zone, COUNT(*) AS nb
|
||||
FROM public.servers s
|
||||
LEFT JOIN public.zones z ON s.zone_id = z.id
|
||||
GROUP BY z.name
|
||||
ORDER BY z.name NULLS FIRST;
|
||||
|
||||
\echo '═══ Vérification : EMV doit contenir uniquement les hostnames *emv* ═══'
|
||||
|
||||
SELECT z.name AS zone, COUNT(*) AS nb,
|
||||
MIN(s.hostname::text) AS exemple_min,
|
||||
MAX(s.hostname::text) AS exemple_max
|
||||
FROM public.servers s
|
||||
JOIN public.zones z ON s.zone_id = z.id
|
||||
WHERE LOWER(z.name) = 'emv'
|
||||
GROUP BY z.name;
|
||||
Loading…
Reference in New Issue
Block a user