• Chef – instalacja klienta i dodanie go przez użycie knife

    Instalacja klienta jest prosta: wykonujemy jeden skrypt, który ściągnie i zainstaluje wszystko:

    [root@server1 ~]# curl -L https://www.opscode.com/chef/install.sh | sudo bash
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 19602  100 19602    0     0  16096      0  0:00:01  0:00:01 --:--:-- 16106
    el 6 i686
    Getting information for chef stable  for el...
    downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=&p=el&pv=6&m=i686
      to file /tmp/install.sh.1537/metadata.txt
    trying wget...
    sha1    d85315adde9ff0889358ea96341a1e38aabe4e36
    sha256  db1dd569f3f99f56d2446b30f5f75b2bf6b7d786f93e6b3be60b14c297639acc
    url     https://packages.chef.io/stable/el/6/chef-12.11.18-1.el6.i386.rpm
    version 12.11.18
    downloaded metadata file looks valid...
    downloading https://packages.chef.io/stable/el/6/chef-12.11.18-1.el6.i386.rpm
      to file /tmp/install.sh.1537/chef-12.11.18-1.el6.i386.rpm
    trying wget...
    Comparing checksum with sha256sum...
    
    WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
    
    You are installing an omnibus package without a version pin.  If you are installing
    on production servers via an automated process this is DANGEROUS and you will
    be upgraded without warning on new releases, even to new major releases.
    Letting the version float is only appropriate in desktop, test, development or
    CI/CD environments.
    
    WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
    
    Installing chef
    installing with rpm...
    ostrzeżenie: /tmp/install.sh.1537/chef-12.11.18-1.el6.i386.rpm: Nagłówek V4 DSA/SHA1 Signature, identyfikator klucza 83ef826a: NOKEY
    Przygotowywanie…                    ################################# [100%]
    Aktualizowanie/instalowanie…
       1:chef-12.11.18-1.el6              ################################# [100%]
    Thank you for installing Chef!
    

    Gdy mamy skonfigurowany knife, dodanie kolejnego klienta nie stanowi problemu:

    [root@server1 ~]# knife bootstrap server1.localnet -N sevrrver1
    Creating new client for server1
    Creating new node for server1
    Connecting to server1.localnet
    root@server1.localnet's password: 
    server1.localnet -----> Existing Chef installation detected
    server1.localnet Starting the first Chef Client run...
    server1.localnet Starting Chef Client, version 12.11.18
    server1.localnet resolving cookbooks for run list: []
    server1.localnet Synchronizing Cookbooks:
    server1.localnet Installing Cookbook Gems:
    server1.localnet Compiling Cookbooks...
    server1.localnet [2016-06-10T21:20:44+02:00] WARN: Node server1 has an empty run list.
    server1.localnet Converging 0 resources
    server1.localnet 
    server1.localnet Running handlers:
    server1.localnet Running handlers complete
    server1.localnet Chef Client finished, 0/0 resources updated in 08 seconds
    

  • Unix: nmon – monitorowanie systemu – prawdziwy kombajn

    nmon_linux

    Jednym z moich ulubionych programów do monitorowania systemu jest nmon. Pozwala on podglądać co się dzieje w systemie na żywo jak również zapisywać dane do pliku by później zrobić analizę. Chłopcy z IBM-a przygotowali bardzo ładną prezentacje o tym programie: nmon na youtube. Strona domowa projektu nmon.sourceforge.net


  • Linux i konsole szeregowe

    Jakie konsole jakie szeregowe ma system?

    Teoretycznie wszystkie pliki /dev/ttyS* są konsolami, jednak nie wszystkie są prawdziwe, cześć z nich po prostu rezerwują miejsce.

    Prawdziwe możemy znaleźć przeszukując dmesg (ale pamiętać należy ze ten bufor jest cały czas nadpisywany więc może kłamać)

    [root@server1 ~]# dmesg | grep tty
    [    0.000000] console [tty0] enabled
    [    0.842783] 00:05: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
    [    0.863343] 00:06: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
    

    Czy port szeregowy pracuje naprawdę, możemy użyć programu setserial:

    [root@server1 ~]# setserial -g /dev/ttyS[0123]
    /dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
    /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
    /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
    /dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
    

    Programy do pracy z konsolami szeregowymi to np. minicom.


  • Linux: dodawanie dysków online

    Cała sztuka polega na przeskanowaniu jeszcze raz magistrali scsi. Możesz wykonać to następującą komendą:

     for HOST in `ls /sys/class/scsi_host/`; do echo "Scanning $HOST"; echo "- - -" > /sys/class/scsi_host/$HOST/scan;  done
    

    Efekt w logu jest następujący

    Jan  4 05:48:08 master1 kernel: sd 2:0:2:0: [sdc] Cache data unavailable
    Jan  4 05:48:08 master1 kernel: sd 2:0:2:0: [sdc] Assuming drive cache: write through
    Jan  4 05:48:08 master1 kernel: sdc: sdc1
    

    Następnie należy po prostu sformatować dysk :).


  • puppet: hash i templates

    Wykorzystanie hash-y jest bardzo wygodne, gdyż pozwala utrzymać strukturę danych z informacją o ich wykorzystaniu. Wyobraźmy sobie, że chcemy zarządzać plikiem /etc/exports zarządzającym wyeksportowanymi systemami plików. Niech nasz hash opisujący udostępniane pliki ma postać:

    	$fs= 
    	{		
    		"/export/repos/"  =>
    			{
    				"10.40.0.20" => 
    				{ 
    					"server"  => "10.40.0.20",
    					"options" => "ro",
    				},				
    			},
    		"/export/ks" =>
    			{
    
    				"10.40.0.20" => 
    					{ 
    						"server"  => "10.40.0.20",
    						"options" => "ro",
    					},				
    			
    
    				"10.40.0.21" => 
    					{
    						"server" => "10.40.0.21",
    						"options" => "rw",
    					},
    			},
    
    	}	
    

    Wtedy template może wyglądać następująco:

    <% @fs.each do |fs_key, fs_machines| %>
    <%= fs_key %> <% fs_machines.each do |machine, options| %> <%= machine %>(<%= options['options'] %>) <% end %> 
    <% end %>
    

  • Puppet i hiera: debugowanie

    Hiera czyli hierarchiczna baza danych bardzo często używana jest razem z puppetem. Jak sprawdzić jakie dane ona przekaże do puppeta? Spójrz na przykłady poniżej:

    [root@master1 ~]# hiera -d classes environment=lab1
    DEBUG: Sat Dec 20 18:59:05 -0500 2014: Hiera YAML backend starting
    DEBUG: Sat Dec 20 18:59:05 -0500 2014: Looking up classes in YAML backend
    DEBUG: Sat Dec 20 18:59:05 -0500 2014: Looking for data source lab1
    DEBUG: Sat Dec 20 18:59:05 -0500 2014: Found classes in lab1
    ["u4y_base"]
    

    albo przykład bardziej skomplikowany:

    [root@master1 node]# hiera -d classes environment=lab1 ::fqdn=master1
    DEBUG: Wed Feb 11 19:53:03 +0100 2015: Hiera YAML backend starting
    DEBUG: Wed Feb 11 19:53:03 +0100 2015: Looking up classes in YAML backend
    DEBUG: Wed Feb 11 19:53:03 +0100 2015: Looking for data source lab1/node/master1
    DEBUG: Wed Feb 11 19:53:03 +0100 2015: Found classes in lab1/node/master1
    ["apache",
     "firewall_trojans_ignore",
     "u4y_dhcpd",
     "u4y_dhcpd::c_dhcp_client_firewall",
     "u4y_dns_server",
     "u4y_firewall",
     "u4y_nfs",
     "u4y_nfs::c_server_firewall",
     "u4y_host",
     "u4y_repo_sync",
     "u4y_host::c_install",
     "u4y_pxelinux",
     "u4y_pxelinux::c_centos",
     "u4y_firewall::c_service",
     "u4y_puppet_server",
     "u4y_kickstart_server",
     "u4y_kickstart_server::c_kickstart_file",
     "u4y_repo_sync::c_centos6",
     "u4y_repo_sync::c_centos7",
     "u4y_tftp_server",
     "u4y_users::c_users",
     "u4y_sshd",
     "u4y_packages::c_packages",
     "u4y_selinux"]
    
    

  • VIOS: Link aggregation

    Aby utworzyć urządzenie Link Aggregation ent5 z adapterami fizycznej sieci Ethernet ent3 i ent4 oraz adapterem zapasowym ent2, należy wpisać następującą komendę:

    mkvdev -lnagg ent3,ent4 -attr backup_adapter=ent2
    
    ent5 available
    

    Aby dodać adapter ent8 do Link Aggregation ent5 należy wykonać polecenie:

    cfglnagg -add ent5 ent8
    

    Więcej: http://www-01.ibm.com/support/knowledgecenter/8205-E6D/p7hcg/cfglnagg.htm?cp=8205-E6D%2F0-8-3-8-2-17


  • SVN: Tworzenie backupów i odtwarzanie repozytoriów

    Tworzenie backupów repozytoriów SVN

    Backup tworzymy korzystając z polecenia svnadmin dump:

    svnadmin dump path_to_repo > backup_file 
    

    Prawdzimy przykład:

    svnadmin dump /data/svn/repos/unix_admin/ | gzip -9 > ./unix_admin_20141010_2039.dump.gz
    

    Przydatną opcją jest -q (quite) powodująca wyświetlanie tylko komunikatów błędów.

    Odtwarzanie repozytoriów SVN

    Jak już mamy zainstalowany pakiet subversion i skonfigurowany główny katalog repozytoriów, poszczególne
    projekty możemy odtworzyć korzystając z polecenia:

    svnadmin load path_or_repo < backup_file
    

    Prawdziwy przykład:

    svnadmin load /data/svn/repos/unix_admin/ < unix_admin_20141010_2039.dump
    

  • VIOS, AIX i wirtualizacja sieci czyli sea – shared ethernet adapter

    Tworzenie SEA (Sherad Ethernet Adapter)

    Do stworzenia SEA adaptera potrzebujemy:

    • fizycznego adaptera, do którego podłączymy się, oznaczmy go PHYS
    • wirtualnego adaptera, oznaczmy go VIRT
    • domyślny VLAN ID, oznaczmy go VLAN
    mkvdev -sea PHYS -vadapter VIRT -default VIRT -defaultid VLAN
    

    SEA z kanałem kontrolnym w środowisku dual VIOS

    Jeżeli używamy dwóch VIOSów, możemy stworzyć konfigurację, w której jeden SEA na jednym VIOSie pracuje w standby i bierze ruch z drugiego, gdy pojawią się jakieś problemy.
    Tworzymy wtedy prywatny kanał komunikacji (przy wykorzystaniu virtualnego interfejsu i dedykowanego VLAN-a). Komenda tworząca w tym wypadku adapter SEA to:

    mkvdev -sea PHYS -vadapter VIRT -default VIRT -defaultid VLAN -attr ha_mode=auto ctl_chan=CONT
    

    Gdzie PHYS, VIRT VLAN to znane wcześniej nam oznaczenia intefesjów ale pojawiają się nowe wartości: –attr ha_mode=auto (VIOSy między sobą decydują który interface jest zapasowy
    a który podstawowy oraz ctl_chan=CONT, który określa wirtualny interfejs do komunikacji między VIOSami.

    np:

    mkvdev -sea ent4 -vadapter ent6 -default ent6 -defaultid=1 -attr ha_mode=auto ctl_chan=ent5
    

    Manualny failover w tym wypadku można osiągnąć przez:

    chdev -dev ent20 -attr ha_mode=standby 
    
    chdev -dev ent20 -attr ha_mode=auto