niedziela, 15 maja 2011

Automatyzacja Solaris Zones w Illumos/OpenIndiana

Prosty przykład na automatyzacje tworzenia Zon w Illumos/Solaris 11/OpenIndiana.


Nazwa zony i fizycznego interfejsu sieciowego:

ZNAME="il1"
NIC="nge0"


Tworzymy wirtualną kartę sieciową oraz kontener, do którego będziemy instalować zonę:


dladm create-vnic -l ${NIC} ${ZNAME}
zfs create -o canmount=off -o mountpoint=/zones rpool/zones


Konfiguracja strefy. W podanym przykładzie mamy:
- montowany katalog /code z globalnej strefy
- ograniczenie CPU do 0.5 rdzenia
- ograniczenie pamięci do 512MB i swap do 768MB


cat >${ZNAME}.cfg << EOF
create
set autoboot=true
set zonepath=/zones/${ZNAME}
set ip-type=exclusive
add fs
set dir=/code
set special=/code
set type=lofs
end
add net
set physical=${ZNAME}
end
add capped-cpu
set ncpus=0.5
end
add capped-memory
set physical=512m
set swap=768m
end
EOF


Podstawowa konfiguracja systemu zony.
Uwaga, wszystkie parametry muszą się zgadzać z istniejącą infrastrukturą.
Jeśli przykładowo nie będzie wpisu w DNS dla zony, to konfigurator będzie prosił o manualne podanie poprawnego hostname/dns itp:


cat > ${ZNAME}.sysidcfg << EOF
system_locale=C
terminal=xterms
network_interface=primary {
hostname=${ZNAME}
default_route=10.10.10.1
ip_address=10.10.10.12
netmask=255.255.255.0
protocol_ipv6=no
}
security_policy=NONE
name_service=DNS {
domain_name=example.com
name_server=10.20.20.20,10.20.20.21
}
nfs4_domain=dynamic
timezone=Poland
root_password=passwPassWorD
EOF


Konfiguracja zony:


zonecfg -z ${ZNAME} -f ${ZNAME}.cfg


Utworzenie ZFSu i instalacja:


zfs create -o quota=50g rpool/zones/${ZNAME}
chmod 700 /zones/${ZNAME}
ptime zoneadm -z ${ZNAME} install


Po instalacji wrzucamy konfigurację i odpalamy zainstalowaną strefę:

zoneadm -z ${ZNAME} ready
cp ${ZNAME}.sysidcfg /zones/${ZNAME}/root/etc/sysidcfg
zoneadm -z ${ZNAME} boot
zlogin -C ${ZNAME}


Jeśli wszystkie przekazane parametry były poprawne, to powinniśmy dostać ekran logowania, w innym wypadku konfigurator poprosi o korektę.

Przykład przetestowany na OpenIndiana b148.

Otwarte pliki w Solaris/Illumos

Jak szybko sprawdzić jakie mamy otwarte pliki w Solarisie/Illumosie?
Najprościej za pomocą pfiles:


pfiles /proc/*


lub


ps -ef -o pid | sort | xargs pfiles

środa, 11 maja 2011

Lokalne repozytorium OpenIndiana - mini howto

Cel: utworzenie lokalnego repozytorium IPS OpenIndiana dla buildu oi_148 działające na porcie 8080.

1. Najlepiej utworzyć repozytorium na systemie z tą samą wersją IPS (tutaj b148).
2. Pobieramy repozytorium dla buildu b148:

wget -c http://dlc.openindiana.org/repos/oi_148.tar.bz2

3. Weryfikujemy sumy kontrolne archiwum z sumami zawartymi w pliku http://dlc.openindiana.org/repos/oi_148.tar.bz2.md5:

digest -a md5 oi_148.tar.bz2

4. Rozpakowujemy archiwum do docelowego katalogu np /repo/:

cd /repo/ && gtar xjf ~/oi_148.tar.bz2

5.Dodajemy dedykowaną instancję serwisu pkg/server:

svccfg -s svc:/application/pkg/server add oi_148 
svccfg -s svc:/application/pkg/server:oi_148 addpg pkg application
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/inst_root=/repo/oi_148
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/port=8080
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/pkg_root=/
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/readonly=true
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/threads=50

6. Upewniamy się, że publisher repozytorium jest openindiana.org:

/usr/lib/pkg.depotd -p 8080 -d /repo/oi_148 --set-property publisher.prefix=openindiana.org
(tutaj po wystartowaniu serwera zabijamy go za pomocą CTRL-C)

7. Startujemy serwis repozytorium:

svcadm refresh svc:/application/pkg/server:oi_148
svcadm enable svc:/application/pkg/server:oi_148

8. IPS powinien już działać, można ustawić publishera dla openindiana.org na lokalnym hoście:

pkg set-publisher -O http://localhost:8080 openindiana.org

Oczywiście repozytorium nie ogranicza się tylko do localhostu.

wtorek, 10 maja 2011

Konfiguracja sieci w OpenIndiana

Prosty przykład w jaki sposób ustawić statyczny adres IP dla interfejsu rtls0:


ipadm create-addr -T static -a local=10.10.10.10/24 rtls0/v4


Od tego momentu interfejs rtls0 posiada statyczny adres 10.10.10.10 na masce 24 bitowej.
Ustawienie jest stałe - tzn po restarcie serwera rtls0 nadal posiada ustawiony adres.
Zapominamy tym samym o /etc/hostname.rtls0 /etc/netmasks itd.

Do pełni szczęścia ustawmy jeszcze domyślną bramkę na 10.10.10.1:

route -p add default 10.10.10.1


Parametr '-p' (persistent) sprawia, że system pamięta domyślna droga routowania po restarcie.
Zapominamy tym samym o edycji /etc/defaultrouter.

Przedstawiony przykład jest zalecanym sposobem na konfigurację sieci i dotyczy OpenIndiany, Illumosa oraz Solaris 11.

Oczywiście należy pamiętać również o systemie nazewniczym i usłudze NWAM, więcej w starszym poście dotyczącym sieci w OpenSolaris.

sobota, 21 sierpnia 2010

Illumos i dodatkowe repo 145

Pracując przy kilku projektach, w tym Illumos.org, utworzyłem repozytorium IPS.
Celem było udostępnienie nowszych buildów niż Oracle udostępniło w pkg.opensolaris.org,
oraz szybsze testowanie i znaczne ułatwienie kompilacji konsolidacji ONNV i Illumos.

Repozytorium jest połączeniem podstawowych konsolidacji Solarisa:
- ONNV
- IPS
- CAIMAN

Paczki są w wersjach 145, dodatkowo IPS i CAIMAN mają bugfixy z buildów 146 i 147.

Podam prosty przykład jak zrobić aktualizację z b134 do b145.

Najpierw aktualizujemy OpenSolaris do najnowszej wersji (b134):

pkg set-publisher -O http://pkg.opensolaris.org/dev opensolaris.org
pkg refresh --full
pkg install -v SUNWipkg
pkg image-update -v
init 6

Po restarcie z wersji 134 robimy update do buildu 145:

wget http://hg.illumos.org/illumos-gate/raw-file/9d56504d6906/usr/src/tools/scripts/onu.sh
chmod +x onu.sh
./onu.sh -Ot os-devel_145 -U os-devel -u http://91.194.74.69:10000


Więcej informacji jak zbudować Illumos jest na wiki projektu:
https://illumos.org/projects/illumos-gate/wiki

Dodam tylko, że oprócz Illumos.org trwają prace nad dodatkowym projektem, który niedługo ujrzy światło dzienne :)

poniedziałek, 8 marca 2010

OpenSolaris b134

Nie było jeszcze oficjalnego maila, jednak repozytorium http://pkg.opensolaris.org/dev zostało zaktualizowane do wersji b134.

PKG powinien pokazać dostępne nowe wersje paczek:

# pkg refresh --full
# pkg image-update -vn

Również dostępne są obrazy iso na genunix.

Zabezpieczenia w Crossbow

Dzięki projektowi Crossbow, tworząc wirtualny interfejs sieciowy (VNIC) w OpenSolaris możemy nałożyć na niego ciekawe restrykcje, które mają znaczenie jeśli delegujemy VNIC do wirtualnej maszyny xVM lub Kontenera/Zony ze stosem TCP/IP typu exclusive.

# dladm create-vnic -l e1000g0 dmz1
# dladm set-linkprop -p maxbw=2 -p priority=low -p protection=mac-nospoof,ip-nospoof,restricted -p allowed-ips=192.168.10.11 dmz1
# dladm show-linkprop -p maxbw,priority,protection,allowed-ips dmz1

W tym przykładzie:
  • maxbw - ograniczamy ruch sieciowy do 2mb/s
  • priority - ustawiamy niski priorytet ruchu sieciowego na interfejsie
  • mac-nospoof - po zmienia adresu MAC pakiety są dropowane na poziomie kernela
  • ip-nospoof - pakiety są dropowane na poziomie jądra, jeśli jest ustawiony inny adres IP niż podany w 'allowed-ips'
  • allowed-ips - lista dozwolonych adresów IP, jakie można przypisać na interfejsie
  • restricted - wszystkie inna protokoły sieciowe za wyjątkiem IPv4, IPv6, ARP są dropowane