Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár pasztor@ek.szte.hu



Hasonló dokumentumok
Operációs Rendszerek II. labor alkalom

A perzisztens adatkezelő rendszer tesztelése és demonstrálása a GRID környezetben

Gyors tippek linuxra

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozás alapjai óra. Morvai Flórián, 2010 Dr. Dévényi Károly előadásvázlata alapján

Operációs Rendszerek II. labor. 2. alkalom

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

Szkriptnyelvek. 1. UNIX shell

S z á m í t ó g é p e s a l a p i s m e r e t e k

2. lépés: openssh szerver telepítés sudo apt-get install openssh-server

Néhány kihagyhatatlan Linux tipp és trükk. Ezeket a tippeket olvasóink osztották meg velünk

chmod umask chown, chgrp

Mérési útmutató a Secure Shell (SSH) controll és audit című méréshez

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

A FEJLESZTÉS KIHÍVÁSAI

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

SysVinit / Upstart / Systemd. Zahemszky Gábor mérnök tanácsadó

KÜRT Zrt. Logelemzés heti riport Felhasználói fiók, illetve felhasználói csoportkezelési műveletek

Operációs Rendszerek példatár. Utolsó frissítés: február 10.

Mi is a git? Csapatban dolgozni Git pro eszközök. Git bevezető. Szabó Adrienn Adatbányászat és Webes Keresés Kutatócsoport

Nagios NSCA Indirect Monitoring, Passive Check

Telepítési dokumentáció. Naviscon Informatikai Zrt Budapest, Montevideó utca 16/b.

BackupPC. Az /etc/hosts fájlba betehetjük a hosztokat, ha nem a tejles (fqdn, DNS név) névvel hivatkozunk rájuk: # /etc/hosts #

Code review és continous integration toolok BME-MIT

Source control systems. Horváth Ernő, Dr. Pozna Claudiu Radu

(NGB_TA024_1) MÉRÉSI JEGYZŐKÖNYV

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése

Hálózati rendszerek adminisztrációja JunOS OS alapokon

Sintony SAK 41. Kezelési utasíitás 8AA D0-20/10/99 - UK -

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Windows hálózati adminisztráció segédlet a gyakorlati órákhoz

Samba. SMB/CIFS hálózat, heterogén hálózatok. Készítette: Sallai András

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

SSH haladóknak. SSH haladóknak

Windows hálózatok. IP cím. Hálózati kapcsolatok nyomonkövetése. < Windows

Hálózatok építése és üzemeltetése

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

Fábián Zoltán Hálózatok elmélet

Üzemeltetési kihívások 2015

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

S z á m í t ó g é p e s a l a p i s m e r e t e k

Hálózati architektúrák és Protokollok GI Kocsis Gergely

OPERÁCIÓS RENDSZEREK II GYAKORLAT

SAMBA. Forrás: Lajber Zoltán: SAMBA alapok dia, SZIE

Az alábbiakban néhány Linux parancsra látunk példákat, feladatokat.

Page 2. File vizsgálatok (test argumentumai) Logikai értelmű vizsgálatok. Feltételes végrehajtás. test argumentumainak logikai kombinációja

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

Cisco Catalyst 3500XL switch segédlet

10. Gyakorlat: Alkalmazások publikálása Remote Desktop Szervízen keresztül

S z á m í t ó g é p e s a l a p i s m e r e t e k

Mérési útmutató az Access Control (ACC) cím méréshez

CentOS 7 OTRS telepítése, beállítása

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

IP alapú komunikáció. 2. Előadás - Switchek 2 Kovács Ákos

Szalai Ferenc

Adatbiztonság GI. Dr. Bencsáth Boldizsár. Access control Some slides: William Stallings and Lawrie Brown Computer Security: Principles and Practice

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

BASH SCRIPT SHELL JEGYZETEK

Miről lesz szó? Setup Project készítése. Tulajdonságok. 1. Készítsünk egy setup project alkalmazást egy már elkészített, lefordított programhoz.

2. gyakorlat: Tartományvezérlő, DNS, tartományba léptetés, ODJ, Core változat konfigurálása, RODC

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

FOKSZ Mérnökinformatikus záróvizsga szóbeli tételsor

PC Connect. Unique ewsletter. program leírás

Operációs Rendszerek. Windows Parancssor

Hálózati architektúrák és Protokollok MI 7,8. Kocsis Gergely

Adatbiztonság a gazdaságinformatikában

Postfilter. Kadlecsik József KFKI RMKI

FTP szerver telepítése

1. Ismerkedés a Hyper-V-vel, virtuális gépek telepítése és konfigurálása

2. Tartományvezérlő, DNS, Core konfigurálása, Powershell

Private Cloud architektúra keretrendszer

Linux alapok gyakorlat

Bazaar ismertető. Timár András

Symfony kurzus 2014/2015 I. félév. Controller, Routing

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

A héj vezérlő szerkezetei I.

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Summer of LabVIEW The Sunny Side of System Design

Csatlakozás a pandora.inf.elte.hu-re Linux alapparancsok

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Windows hálózati adminisztráció segédlet a gyakorlati órákhoz

3. Gyakorlat: Bevezetés a vbs script-be és a powershell-be, AD recycle bin

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

Git verziókövető rendszer alkalmazása a projektek nyomon követésére

Operációs rendszerek 1.

Munkavegzes tavoli bejelentkezessel

DWL-G520 AirPlus Xtreme G 2,4GHz Vezeték nélküli PCI Adapter

Farkas Szilveszter Magyarországi Web Konferencia Budapest, október 3.

Hálózati architektúrák és Protokollok GI Kocsis Gergely

Adatbázis másolás Slony-I segítségével

Hálózatok építése és üzemeltetése

Utolsó módosítás:

Mikrotik 6.22 telepítés

Konfiguráció menedzsment ansible-vel. Kadlecsik József MTA Wigner FK

Oracle Audit Vault and Database Firewall. Gecseg Gyula Oracle DBA

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Átírás:

Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár pasztor@ek.szte.hu

Áttekintés 2 Probléma felvetése: konfiguráció verziókezelten Igények áttekintése Saját megoldás nyújtotta lehetőségek Saját megoldás bemutatása, működése

puppet Lehetséges megoldások a konfiguráció terítésére 3 cfengine... Saját megoldás

4 Miért legyen saját fejlesztés Olyan dolgokhoz kellett, ami nem tömeges (dns zóna+cfg, dhcp, munin, icinga, akár puppet is!) Szabályozás kell, hogy ki és mit módosíthat Az alap konfighoz képest valami ++ (pl. m4 preprocess) Szintaxis ellenőrzés, ha van Commit-re automatikus terítés Egyszerű legyen új elemeket hozzáadni Bővíthető legyen a pluginkészlete

5 A múlt CVS, cvspserver Shell scriptekkel pre-commit ellenőrzések Modulonként (cvs) megadható check scriptek Shell scriptekkel post-commit terítés

Problémák, tanulságok a régi megoldásnál 6 rugalmatlan keretrendszer Nincs tranzakció a cvs-nél (lényegében egy felturbózott rcs) Post-commit minden funkcióhoz, szerverenként külön kulcs Kulcsok elérési jogosultságait szabályozni local userek felé A szerver jön, saját munkapéldányt update-lni a repóból, és utána reload/restart Emiatt minden szerveren, a megfelelő init.d scriptbe bele kell nyúlni

Terv & Megoldás 7 SVN, ssh-key alapú user azonosítás Így minden az svn user jogaival fut Egyszerű, áttekinthető pre-commit script pluginekkel Egyszerű, áttekinthető post-commit script pluginekkel Általános funkciógyűjtemény: m4 előfeldolgozásra, XY szintaxisellenőrzésre, XY konfig terítésére,... Egykulcsos (ssh) belépési pont post-commit terítéshez Önkonfigurálhatóság, mint a CVS-nél

A net SVN repó I. 8 dhcp dhcp kirk spock dns cfg-kirk cfg-spock zones

A net SVN repó II. 9 icinga modules objects munin stylsheets munin-conf.d plugin-conf.d plugins templates

A net SVN repó III. 10 scripts svnag post-commit.d pre-commit.d bin cfg syslog-ng

Önjáró 11 Az svn user home-jában a repo mellett egy working copy root@kirk:/var/lib/svn# ls -lg net/hooks/ grep ^l lrwxrwxrwx 1 svn 52 Apr 21 2012 commit-access-control.cfg ->../../working_copy/scripts/commit-access-control.cfg lrwxrwxrwx 1 svn 38 Apr 21 2012 post-commit ->../../working_copy/scripts/post-commit lrwxrwxrwx 1 svn 37 Apr 21 2012 pre-commit ->../../working_copy/scripts/pre-commit

A munkapéldány oldaláról 12 pasztor@intrepid:~/net$ ls -lg scripts/ total 28 -rw-rw-r-- 1 pasztor 740 Nov 7 02:09 commit-access-control.cfg -rw-rw-r-- 1 pasztor 6161 Nov 7 02:09 common-functions.sh -rwxrwxr-x 1 pasztor 986 Nov 7 02:09 post-commit drwxrwxr-x 3 pasztor 4096 Nov 7 02:09 post-commit.d -rwxrwxr-x 1 pasztor 1182 Nov 7 02:09 pre-commit drwxrwxr-x 3 pasztor 4096 Nov 7 02:09 pre-commit.d

pre-commit I. 13 REPOS="$1" TXN="$2" MAILTO="net-admin@bibl.u-szeged.hu" WC=/var/lib/svn/working_copy SVNLOOK=/usr/bin/svnlook SVNSPEC=( "-t" "$TXN" "$REPOS" ) wd=$(mktemp -d) LOGFILE=$wd/log.pre-commit.txt # stdout, stderr megy a logba, fd3 megy orig stderr-re exec 3>&2 >>$LOGFILE 2>>$LOGFILE. $WC/scripts/common-functions.sh trap 'echo "Error happened..."; final_mail "SVN pre-commit faliure"; rm -r $wd ' ERR set -e

pre-commit II. 14 svnlook log "${SVNSPEC[@]}" >$wd/svn.log svnlook dirs-changed "${SVNSPEC[@]}" >$wd/svn.dirs-changed svnlook changed "${SVNSPEC[@]}" >$wd/svn.changed do_post_report=false for i in ${WC}/scripts/pre-commit.d/* ; do echo Test: ${i##*/}. $i done # Finish up $do_post_report && final_mail "SVN Pre-commit report" true rm -r $wd # All checks passed, so allow the commit. exit 0

pre & post -commit diff I. 15 TXN vs. REV: -TXN="$2" +REV="$2" SVNSPEC: -SVNSPEC=( "-t" "$TXN" "$REPOS" ) +SVNSPEC=( "-r" "$REV" "$REPOS" ) Logfile: -LOGFILE=$wd/log.pre-commit.txt +LOGFILE=$wd/log.post-commit.txt

pre & post -commit diff II. 16 Trap msg: -trap 'echo "Error happened..."; final_mail "SVN pre-commit faliure" ; rm -r $wd ' ERR +trap 'final_mail "SVN Post-commit faliure" ; rm -r $wd' ERR Test vs. Doing: -for i in ${WC}/scripts/pre-commit.d/* ; do - echo Test: ${i##*/} +for i in ${WC}/scripts/post-commit.d/* ; do + echo Doing: ${i##*/} Mail Subject: -$do_post_report && final_mail "SVN Pre-commit report" true +$do_post_report && final_mail "SVN Post-commit report" true

pre-commit.d 17 pasztor@intrepid:~/net$ ls -lg scripts/pre-commit.d/ total 32 -rw-rw-r-- 1 pasztor 95 Nov 7 02:09 00_check_log_message -rw-rw-r-- 1 pasztor 299 Nov 7 02:09 01_access_control -rw-rw-r-- 1 pasztor 98 Nov 7 02:09 20_dns_cfg_kirk -rw-rw-r-- 1 pasztor 100 Nov 7 02:09 20_dns_cfg_spock -rw-rw-r-- 1 pasztor 91 Nov 7 02:09 20_dns_zones -rw-rw-r-- 1 pasztor 93 Nov 7 02:09 30_dhcp_cfg_dhcp -rw-rw-r-- 1 pasztor 93 Nov 7 02:09 30_dhcp_cfg_kirk -rw-rw-r-- 1 pasztor 95 Nov 7 02:09 30_dhcp_cfg_spock

post-commit.d 18 pasztor@intrepid:~/net$ ls -lg scripts/post-commit.d/ total 44 -rw-rw-r-- 1 pasztor 98 Nov 7 02:09 00_update_working_copy -rw-rw-r-- 1 pasztor 270 Nov 7 02:09 20_icinga -rw-rw-r-- 1 pasztor 198 Nov 7 02:09 20_munin -rw-rw-r-- 1 pasztor 158 Nov 7 02:09 25_munin-node -rw-rw-r-- 1 pasztor 158 Nov 7 02:09 30_dns_cfg_kirk -rw-rw-r-- 1 pasztor 162 Nov 7 02:09 30_dns_cfg_spock -rw-rw-r-- 1 pasztor 157 Nov 7 02:09 40_dns_zones -rw-rw-r-- 1 pasztor 156 Nov 7 02:09 50_dhcp_cfg_dhcp -rw-rw-r-- 1 pasztor 153 Nov 7 02:09 50_dhcp_cfg_kirk -rw-rw-r-- 1 pasztor 156 Nov 7 02:09 50_dhcp_cfg_spock -rw-rw-r-- 1 pasztor 123 Nov 7 02:09 99_commit_email

post-commit példák 19 pasztor@intrepid:~/net$ cat scripts/post-commit.d/20_munin if egrep -q '^munin/' <$wd/svn.dirs-changed >/dev/null ; then do_post_report=true rsync -ach --delete munin/ root@monitor.bibladm.intra:/etc/munin/ ssh root@monitor.bibladm.intra muninpermfix fi pasztor@intrepid:~/net$ cat scripts/post-commit.d/25_munin-node if egrep -q '^munin(/ plugins/ plugin-conf.d/)$' <$wd/svn.dirs-changed >/dev/null ; then do_post_report=true ssh root@monitor.bibladm.intra muninrestart fi

common-functions.sh 20 final_mail () {} debug_and_run () {} check_dns_config () {} affected_zonefiles () {} check_dns_zones () {} do_dns_config () {} get_new_serial () {} store_new_serial () {} check_dhcp_config () {} do_dhcp_config () {}

common-functions.sh mélyvíz 21 prepare_m4_dir () {} # function prepare_m4_dir ( [ options ] dirname [M4 macro definitions] ) : generated dir's name # Options: # -f filelist: give a manualy precreated list of files, to do # macroprocessing on # -F listfunc: function get list of changed files, to generate the list # of files to do macroprocessing on # -g MACRONAME: define an m4 macro, which contain the name of the # generated dir # -G rsyncdir: Instead of mkdir, do an rsync copy of rsyncdir as the # initial gendir # -c :??? regenerate only the changed files???

DNS++ 22 pasztor@intrepid:~/net$ cat scripts/pre-commit.d/20_dns_cfg_kirk if grep "^dns/cfg-kirk/" $wd/svn.dirs-changed >/dev/null ; then check_dns_config dns/cfg-kirk fi pasztor@intrepid:~/net$ cat scripts/pre-commit.d/20_dns_zones if grep "^dns/zones/" $wd/svn.dirs-changed >/dev/null ; then check_dns_zones dns/zones fi pasztor@intrepid:~/net$ cat scripts/post-commit.d/30_dns_cfg_kirk if egrep -q '^dns/cfg-kirk/' <$wd/svn.dirs-changed >/dev/null ; then do_post_report=true do_dns_config dns/cfg-kirk 'root@kirk.bibladm.intra:/etc/bind/' fi pasztor@intrepid:~/net$ cat scripts/post-commit.d/40_dns_zones if egrep -q '^dns/zones/' <$wd/svn.dirs-changed >/dev/null ; then do_post_report=true do_dns_zones dns/zones 'root@kirk.bibladm.intra:/var/cache/bind/' fi

svnag: Deploy 23 pasztor@intrepid:~/net$ cat svnag/makefile HOST=$(shell uname -n) install: [ -d /root/.ssh ] install -d -m 700 -o root -g root /root/.ssh grep svnag /root/.ssh/authorized_keys echo \ 'command="/usr/local/sbin/svnag" ssh-rsa AAA... svn@kirk' \ >>/root/.ssh/authorized_keys install -m 755 -o root -g root bin/svnag /usr/local/sbin/svnag [ -e cfg/$(host).cfg ] && install -m 644 -o root -g root \ cfg/$(host).cfg /etc/svnag.cfg \ install -m 644 -o root -g root cfg/default.cfg /etc/svnag.cfg

svnag: Config 24 monitor: rsync_allowed=( "/etc/munin" "/etc/icinga" ) nagiosdaemon="icinga" modules_allowed=( muninrestart muninpermfix nagiosrestart nagiospermfix ) kirk, spock: rsync_allowed=( "/etc/bind" "/var/cache/bind" "/etc/dhcp" ) modules_allowed=( bindpermfix bindreload dhcppermfix dhcprestart )

svnag: Security modules 25 rsync_server="rsync --server "... check_modules_allowed () { [ "${SSH_ORIGINAL_COMMAND:0:${#rsync_server}}" = "${rsync_server}" ] && return 0 for i in ${!modules_allowed[@]} ; do [ "${SSH_ORIGINAL_COMMAND}" = "${modules_allowed[$i]}" ] && return 0 done do_error } check_modules_allowed

svnag: modules 26 case "$SSH_ORIGINAL_COMMAND" in rsync*) rok=0 for i in ${!rsync_allowed[@]} ;do p=". ${rsync_allowed[$i]}/" [ "${SSH_ORIGINAL_COMMAND: -${#p}:${#p}}" = "$p" ] \ && rok=1 done [ $rok -eq 1 ] && exec $SSH_ORIGINAL_COMMAND do_error ;; muninrestart) /etc/init.d/munin-node restart ;;...

27 Köszönöm a figyelmet!