Wszystkie wpisy, których autorem jest Krzysztof Jozwiak

OpenWrt: 3ginfo

Instalacja

root@Gargoyle:/$ opkg install 3ginfo
Installing 3ginfo (1-52) to root...
Downloading http://ecco.selfip.net/backfire/ar71xx/packages/3ginfo_1-52_all.ipk.
Installing uhttpd (28) to root...
Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/uhttpd_28_ar71xx.ipk.
Configuring uhttpd.
Configuring 3ginfo.

Pierwsze uruchomenie – test z konsoli

root@Gargoyle:/$ 3ginfo
Status: Rozlaczony
Czas polaczenia: -
Przeslano danych: - / -
Operator: Orange
Tryb pracy: EDGE
Sila sygnalu: 48%
Urzadzenie: huawei E173
MCC MNC: 260 03
LAC: 1644 (5700)
LCID: - (-)
RNC: - (-)
CID: 1467 (5223)
CSQ: 15
RSSI: -83 dBm

Strona WWW

Domyślnie, usługa po włączeniu będzie działała na porcie 81.

Więcej informacji

Więcej: http://eko.one.pl/?p=openwrt-3ginfo

Disaster & Recovery: Kolejność odtwarzania

Scenarius 1: Systemy zostały skompromitowane, należy odtworzyć usługi przez ponowną ich instalacje na nowych systemach.

Kolejność instalacji systemów.

  1. Serwer backupów (by móc otworzyć backupy z określonego dnia) oraz server svn-a (SVN jest jednym z sposobów backupowania konfiguracji),
  2. Serwer instalacyjny: skąd będą instalowane systemy: na obecną chwile repozytoria z własnymi pakietami (wymagane przez puppet-a)
  3. Puppet master (pakiety z puppetlabs.com, patrz: http://projects.puppetlabs.com/projects/1/wiki/Puppet_Ubuntu, powód: wersja w ubuntu nie ma obslugi szukania i instalacji modułów z forge.puppetlabs.com, musi być wesja 2.7.14 lub nowsza)
  4. Serwery pozostałych usług będą otwarzanie na podstawie konfiguracji zapisanych w Puppecie.

Disaster & Recovery: puppet

Niestety (albo stety, jako że jako admin powinienem mieć to w małym palcu) od czasu do czasu przeinstalowywuje swoje serwery. Jak szybko otworzyć konfiguracje? Plan dla puppet-a.

1. Konifguracja trzymana jest w SVN. Pozwala to kontrolować zmiany w plikach konfiguracyjnych jak również otworzyć konfiguracje z zdalnego serwera SVN.
2. Należy przekonfigurować puppet-a aby brał konfigurację z innych katalogów niż domyślnie. W pliku /etc/puppet/puppet.conf w sekcji main zmieniłem ustawienia:

manifestdir =/etc/puppet/ziutus_puppet@linuxexpert.pl/manifests
manifest=/etc/puppet/ziutus_puppet@linuxexpert.pl/manifests/site.pp
modulepath = /etc/puppet/modules:/usr/share/puppet/modules:/etc/puppet/ziutus_puppet@linuxexpert.pl/modules

3. Plik /etc/puppet/puppet.conf jest twardym linkiem do pliku z repozytorium (łatwiej się odtwarza konfigurację)

Ciekawym opisem jak trzymać konfigurację puppet-a w systemach kontroli wersji znajduje się na stronie:
http://projects.puppetlabs.com/projects/1/wiki/puppet_version_control
Moja uwaga: proponują tam trzymać CAŁĄ konfigurację w systemie kontroli wersji, ja zdecydowałem się na inne rozwiązanie (przeniesienie części konfiguracji do innych katalogów i wskazanie ich w głównym pliku puppet-a) gdyż korzystam także z zewnętrznych modułów, a ich na razie nie chce trzymać w repozytorium. Jak będzie trzeba, po prostu sobie znowu je zainstaluje…

SVN: automatyczna aktualizacja strony po zmianach w repozytorium

Repozytoria SVN czesto wykorzystuje sie do sledzenia zmian w kodach stron a także trzymania podstawowej wersji strony (tzw. produkcyjnej). Jak zagwarantowac że zmiany od razu trafią do katalogu strony?

svn2web

Jest to prosty skrypt php, który gwarantuje że ZMIEINIONE pliki trafią do katalogu strony (export może być także przez ftp lub scp). W cenu wpłączenia własności wydajemy polecenie:

svn propset svn2web KATALOG_DOCELOWY KATALOG_DO_SYNCHRONIZACJI

np:

cd /projects/linuxexpert.pl/trunk/
svn propset svn2web "file:/home/le/www/linuxexpert.pl/linuxexpert.pl" .
svn commit -m "Upload commits to server using svn2web"

Niestety nie aktualizuje wszystkich plików, tylko te, które zostały zmienione więc nie nadaje się do implementacji, gdy mamy już jaką starą stronę i chcielibyśmy ją podczepić pod svn (chyba ze zrobimy ręcznie aktualizację).

Jak to wyłączyć?

$ svn propdel svn2web  .
property 'svn2web' deleted from '.'.

ZALETY: szybkie
WADNY: nie synchronizuje wszystkiego

Wiecej o tym skrypcie:
http://www.itforeveryone.co.uk/svn2web.html
http://svn2web.sourceforge.net/

Ubuntu: LDAP i PAM – ciekawe rozwiązanie dystrybucyjne…

Przeglądałem dzisiaj konfigurację systemu PAM pod względem konfiguracji z LDAP-em i ujrzałem wpis z bardzo ciekawego tool-a: pam-auth-update. Pozwala ono w łatwy sposób przekonfigurować autoryzację PAM tak aby korzystała z LDAP-a, NIS-a, Kerberos-a czy też usunąć konfigurację wspierającą to.
Program korzysta z debconf i pozwala w łatwy sposób przełączać konfigurację:



 ┌─────────────────────────────────────────────────────────────────────────────────────┤  ├──────────────────────────────────────────────────────────────────────────────────────┐
 │ Pluggable Authentication Modules (PAM) determine how authentication, authorization, and password changing are handled on the system, as well as allowing configuration of     │
 │ additional actions to take when starting user sessions.                                                                                                                       │
 │                                                                                                                                                                               │
 │ Some PAM module packages provide profiles that can be used to automatically adjust the behavior of all PAM-using applications on the system.  Please indicate which of these  │
 │ behaviors you wish to enable.                                                                                                                                                 │
 │                                                                                                                                                                               │
 │ PAM profiles to enable:                                                                                                                                                       │
 │                                                                                                                                                                               │
 │    [*] Unix authentication                                                                                                                                                    │
 │    [ ] LDAP Authentication                                                                                                                                                    │
 │                                                                                                                                                                               │
 │                                                                                                                                                                               │
 │                                                                                                                                                                   │
 │                                                                                                                                                                               │
 └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘



Puppet: moje uwagi po krótkim zapoznaniu się

Puppet to dobre narzędzie pozwalające skrócić czas reinstalacji systemu a także prowadzania zmian w środowisku, umożliwia też wprowadzanie standaryzacji. Uczę się go od kilku tygodni i powoli dochodzę do pewnych wniosków.
Podstawowym problemem jest dokumentacja a raczej pomoc dla początkujących ;). Prawda jest taka iż podstawowy tutorial pozwala tylko nauczyć się podstaw a rzeczy których się tam uczymy w ogóle nie przydają się w zaawansowanych środowiskach. Powód? Aby zobaczyć jakie zmiany chce puppet wprowadzić do systemu należy zakodować wszystkie nasze elementy to w postaci typów. Proste moduły pozwalają przenosić zmiany ale nie pokazują co zmieniają, po prostu to zmieniają.
Po takiej długim okresie istnienia programu mógłbym spodziewać się większej ilości gotowych modułów dobrej jakości, jak na razie nie jest ich dużo :/

Z pewnością coś tu dopisze…

puppet: synchronizacja modułów

Nie zawsze, nie wszystkie informacje są dostępne w takiej formie jak powinny być. Czasem trzeba dodać nowe fakty, nowe rozwiązania. Jak je przesłać na klienta? Możemy skorzystać z opcji synchronizacji wtyczek (ang. plugin) w sekcji „main”:

pluginsync=true

Efekt:

Jun 25 16:03:52 ziutus puppet-agent[18319]: Starting Puppet client version 2.6.4
Jun 25 16:03:53 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/facter]/ensure) created
Jun 25 16:03:54 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/facter/iptables.rb]/ensure) defined content as '{md5}47bbd812e6fd7a7bdff3435c50b4687d'
Jun 25 16:03:56 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider]/ensure) created
Jun 25 16:03:57 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider/firewall]/ensure) created
Jun 25 16:03:58 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider/firewall.rb]/ensure) defined content as '{md5}f4c747685c2c8ef97fe78732c8153c75'
Jun 25 16:04:01 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider/firewall/ip6tables.rb]/ensure) defined content as '{md5}37ccb43da0c5950d33213a1082bde094'
Jun 25 16:04:03 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/provider/firewall/iptables.rb]/ensure) defined content as '{md5}09095f4df985ff6beea50e8db5c36fb7'
Jun 25 16:04:03 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/test]/ensure) removed
Jun 25 16:04:05 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/type/firewall.rb]/ensure) defined content as '{md5}babcbf3938183329b6b78795f8abaf2b'
Jun 25 16:04:05 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/type/iptables.rb]/ensure) removed
Jun 25 16:04:05 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/util]/ensure) created
Jun 25 16:04:07 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/util/firewall.rb]/ensure) defined content as '{md5}0adc814705c4f92a8191ff274801f708'
Jun 25 16:04:08 ziutus puppet-agent[18319]: (/File[/var/lib/puppet/lib/puppet/util/ipcidr.rb]/ensure) defined content as '{md5}225adf61f5de40fa04b4e936e388b801'