LPS:CFEngine3/Implementace

Z HelpDesk

Seznam toho, co CFEngine vlastně spravuje. Ve skutečnosti je toho trochu více (kontroluje, že běží NTP, ...). Zde jsou uvedeny ty nejdůležitější změny, které by mohly ostatní překvapit.

Jak zjistím, jestli něco spravuje

Pokud běží procesy cfengine:

ps xfa |grep cf-
22160 pts/0    S+     0:00          \_ grep cf-
13626 ?        Ss   140:15 /var/cfengine/bin/cf-execd
13634 ?        Ss   143:35 /var/cfengine/bin/cf-serverd
13644 ?        Ss    54:00 /var/cfengine/bin/cf-monitord

a chcete zjistit, jestli spravuje /etc/resolv.conf, pak stačí:

grep -r /etc/resolv.conf /var/cfengine/inputs/ 
/var/cfengine/inputs/services/base/fcopy.cf:    "file[/etc/resolv.conf]"      string => "default";
/var/cfengine/inputs/services/network/resolver.cf:     "resolv_conf" string => "/etc/resolv.conf";

Protože CFEngine používá výhradně absolutní cesty, tak když grep nic nevrátí, CFEngine s ním nic nedělá.

Co vlastně spravuje

Toto je jen přehled, kam všude CFEngine šahá, pokud upravuje nějaký soubor, pak je v jeho záhlaví většinou komentář:

##############################################################
#  CF3 - spravuje CFEngine3 - vsechny upravy budou zruseny!  #
# ---------------------------------------------------------- #
# Hint: pouzij /etc/sysctl.d/ nebo se domluv se spravcem     # 
# http://helpdesk.zcu.cz/wiki/LPS:CFEngine3/Implementace #
##############################################################

ale:

  • existují soubory (např. /etc/hostname) kde nejsou komentáře povoleny.
  • soubory, které mají svůj vzor na AFS (nejčastěji /afs/zcu.cz/common/etc/), protože se hlídá, zda nejsou rozdílné (např. /etc/krb5.conf)

Systém

/etc/apache2/mods-available/ssl.conf

Je generovan kompletne z templatu, volby lze pripadne upravit u jednotlivych hostingu vyjma SSLCipherSuite.

/etc/apache2/sites-available/*

Všechny volby SSLCipherSuite zakomentuje, povolene typy šifrování hlídáme z globálního konfiguráku /etc/apache2/mods-available/ssl.conf, nelze obejít.

/etc/apt/apt.conf

Vlastní základní nastavení pro dpkg a apt, použij /etc/apt/apt.conf.d/

/etc/apt/sources.list

Kopíruje vlastní dle verze debianu, pro svoje rozšíření použij /etc/apt/sources.list.d/

/etc/apt/preferences

Kopíruje vlastní dle verze debianu, pro svoje rozšíření použij /etc/apt/preferences.d/

/etc/hosts.allow

Řádkové úpravy pro jednotlivé služby, možno upravovat, pokud tam něco bude CFEnginu chybět, tak si to doplni.

/etc/krb5.conf

Kopíruje se dle vzoru z /afs/zcu.cz/common/etc/

/etc/modules

Přidava ipmi_si a ipmi_devintf záznamy, po přidání řádku modul zavede. Ostatní řádky je možné upravovat.

/etc/nagios/nrpe.d/zcu.cfg

Kopíruje se dle vzoru z /afs/zcu.cz/common/etc/nagios/nrpe_local.cfg

/etc/ntp.conf

Udržuje konfiguraci dle RT#186029 na klientech, servery mají lehce odlišnou konfiguraci. Nelze obejít.

/etc/passwd

Řádková úprava, kde si vynucuje hodnotu 'x' v pozici hesla uživatele root. Nelze obejít.

/etc/shadow

Řádková úprava pro nastavení hesla uživatele root. Nelze obejít.

/etc/services

Přidávají se řádky pro naše služby, zatím jen pro afsadm

/etc/resolv.conf

Kopiruje se resolv.conf dle doporuceneho nastaveni od hostmastera, prakticky odpovida /afs/zcu.cz/common/etc/resolv.conf.linux

/etc/ssh/sshd_config

Udržuje požadovanou konfiguraci sshd, nelze obejít.

/etc/sudoers

Provádí se řádkové úpravy, v plánu generovat z template.

/etc/sysctl.conf

Používá se template, pro lokální úpravy je možné využít /etc/sysctl.conf.d/, ale lepší je integrace do template.

/etc/vim/vimrc.local

Předkonfigurovaný vim, nastavuje se obarvení syntaxe, změny barev u komentářů a pod. Pokud chceš změnu, domluv se se správcem.

/root/.config/mc/ini

Spravuje konfiguraci pro Midnight Commander, všechny úpravy budou zrušeny, nelze obejít.

/root/.mc/

Stará konfigurace Midnight Commanderu, bez milosti a nahrady smazana.

/root/.bash_logout

Kopiruje se z template, nelze obejít, domluv se s adminem.

/root/.bashrc

Kopiruje se z template, nelze obejít, domluv se s adminem.

/root/.k5login

Spravuje CF3, nové uživatele přidává, pokud je někdo navíc přidán ručně, začne na to upozorňovat. Nutné informovat správce.

/root/.profile

Kopiruje se z template, nelze obejít, domluv se s adminem.

/root/.screenrc

Předkonfigurovaný screen, pokud chceš změnu, domluv se se správcem.

Cron

/var/spool/cron/crontabs/root

Řádkové úpravy, hlídá že tam jsou ty řádky které tam chceme a které tam být naopak nemají být. Je možné upravovat příkazem crontab -e, pokud smažete nebo změníte nucený řádek, pak jej tam CFEngine znovu přidá.

FibreChannel

Pokud je nalezena FC karta (dle lspci) pak jsou nainstalovány balíky pro správu fibrechannelu (multipath-tools, firmware-qlogic, qla-tools), pokud karta není, pak jsou balíky odstraněny.

Firewall

Konfigurace

Konfigurační soubory /etc/iptables/rules.v4 a /etc/iptables/rules.v6 jsou generovány z templatů CFEngine3, jakýkoliv zásah do nich bude znamenat vrácení do původního stavu a restart firewallu. Jediná možnost ovlivnit konfiguraci je přes úpravu politiky CFEngine.

Soubory jsou načítány skriptem /etc/init.d/iptables-persistent z balíku iptables-persistent

Změna firewallu

Pokud není možné provést úpravu firewallu přes CFEngine, pak je možno vytvořit změnu přímo příkazem iptables. To vydrží ale jen do:

  • restartu => nastartuje se firewall dle konfigurace v /etc/iptables/
  • změně v /etc/iptables/ => provede se aktualizace a restart firewallu
  • vypnutí firewallu => pokud není politika pro INPUT nastavena na DROP, pak to znamená vypnutý firewall a to není přípustné => restart firewallu

Vypnutí firewallu

Je nutné vypnout také CFEngine, prože se jinak bude snažit firewall nahodit:

/etc/init.d/cfengine-community stop
/etc/init.d/iptables-persistent flush

Pro jeho obnovu stačí aktivovat CFEngine:

/etc/init.d/cfengine-community start

Přečti si, co znamená vypnutí CFEngine.

NRPE - Nagios

Kontroluje a udržuje celou část potřebnou pro monitoring stroje přes NRPE, tedy potřebné balíky a konfigurace v /etc/nagios/.

Oracle

/dev/shm

Oracle vyžaduje (oproti Debianu) mít /dev/shm místo /run/shm jinak nefunguje. CFEngine hlídá, že tomu tak je, že má také vhodnou velikost a místo /run/shm vytváří symlink.

Profil

aktuálnost /etc/skel/ -> /root/

Hlídá se aktuálnost vzorů v /etc/skel/ proti souborům v /root/, změny CFEngine hlásí, nevrací zpět.

/root/.bash_aliases

Řádkové úpravy, přidání některých aliasů, např. ohledně fibrechannelu.

Syslog - syslog-ng

Soubor /etc/syslog-ng/syslog-ng.conf je brán jako základ z Debian balíku podle verze nainstalovaného syslogu, protože konfigurace syslogu se hodně mění s každou verzí. Specifické věci (pro ZČU jde o logování na centrální log servery a výpis na /dev/tty63) jsou uloženy do /etc/syslog-ng/conf.d/50zcu-client.conf. Ostatní soubory jsou systémové a je možno si do /etc/syslog-ng/conf.d/ přidat svoje pravidla.

Virtualizace - Xen

Pokud je stroj virtuální, pak jsou některé balíky odstraněny a opačně. Jde o balíky regulující výkon CPU nebo pro SMART disků.

WebAuth

Na stroji zařazený do třídy group_webauth se předpokládá běh apache s webauthem (nikoliv webkdc). Udržuje potřebné balíky a konfiguraci webauthu v /etc/apache2/mods-available/ včetně symlinků v mods-enabled. Dále hlídá práva v /etc/webauth/

Jsem zoufalý aneb jak vypnout CFEngine

CFEngine je monitorován Nagiosem, takže pošlete (upozorněte) správce serveru, proč jste to vypnuli a domluvte se na správném řešení. Sice před jeho nastartováním se snažím pídit po důvodech (hledám kdo a proč), ale pokud je nenajdu, cfengine nastartuji.

Dočasně

/etc/init.d/cfengine-community stop

Vydrží jen do rebootu nebo opětovného startu cfengine.

Na (skoro) věčné časy

/etc/init.d/cfengine-community stop
vim /etc/default/cfengine3

Neupravujte /etc/init.d/cfengine-community (např. vložením 'exit 0'), protože při aktualizaci balíku se může přepsat a cfengine opět nastartuje.

Na věčné časy nebo do reinstalace

apt-get remove --purge cfengine-community

Nepoužívat bez vědomí správce!

Nebojím se naučit novou věc

Doporučení: První úpravu je vhodné udělat pod dohledem administrátora, uvědomte si, že špatným zásahem můžete ovlivnit celou infrastrukturu!

V návodu červeně vyznačené části je třeba upravit tak, aby odpovídaly tomu, co chceš provést. Pokud jsi ve skupině system:administrators (lze zjistit příkazem pts mem system:administrators) pak se přihlaš na stroj, kterých chceš upravit a připrav si prostředí:

ssh root@SERVER
cd /root
if [ ! -d /root/cf ] ; then git clone file:///afs/zcu.cz/project/software/git/cfengine.git cf ; fi
cd /root/cf
git checkout devel
git pull

Udělej a otestuj úpravu:

vim templates/etc/iptables/rules.v4.tmpl
cf-agent -Kf /root/cf/promises.cf
less /etc/iptables/rules.v4

Ulož změny do gitu, používáme 3 větve (devel, testing, production), je nutné změnu dostat do všech tří, vždy po příkazu git push je vhodné si odskočit na kafe a potom zkontrolovat nagios, jestli se něco nestalo:

git diff
git commit -a
git push
git checkout testing
git pull
git log devel # seber ID tveho commitu do schranky
git cherry-pick ID_tveho_commitu
git push
git checkout production
git pull
git cherry-pick ID_tveho_commitu
git push

Co se vlastně stalo? Upravili jsme soubor templates/etc/iptables/rules.v4.tmpl, který se v systému ukáže jako /etc/iptables/rules.v4. Přípona .tmpl slouží pro rozlišení obyčejného souboru (bez této přípony), který se "tupě" kopíruje a souboru typu template v kterém se mohou zpracovávat proměnné cfengine a logické operátory. Výsledný soubor po zpracování může vypadat výrazně odlišně. Například:

[%CFEngine uniapps_zcu_cz:: %]
-A SHELL -s 147.228.232.113/32 -p tcp -m tcp --dport 22 -j ACCEPT -m comment --comment "pevna VPN pro uzivatele uniapps, RT#185156"
[%CFEngine uniapps_zcu_cz|morpheus_civ_zcu_cz|daphne_civ_zcu_cz:: %]
-A SHELL -s 147.228.0.0/16 -p tcp -m tcp --dport 22 -j ACCEPT -m comment --comment "pro Linuxove helpsaky"

Se první záznam pro IP 147.228.232.113/32 vygeneruje pouze na stroji uniapps.zcu.cz, kdežto druhý řádek na strojích morpheus.civ.zcu.cz, daphne.civ.zcu.cz a také na uniapps.zcu.cz.