Chef i cookbooki bez metadata.rb

W firmie korzystamy z Chefa, niby robi swoją robotę, ale nie przepadam za nim z różnych względów. Jedna z rzeczy, która mnie drażni, to wersjonowanie i niekompatybilność (bardziej: pozorna kompatybilność) pomiędzy wersjami. W Debianie Jessie, którego mam na desktopie jest chef w wersji 11, który generalnie działał. Na serwerach mamy Chefa 12.

Ostatnio instaluję cookbook nodejs:

knife cookbook site install nodejs
Installing nodejs to /home/rozie/chef-repo/cookbooks
Checking out the master branch.
Pristine copy branch (chef-vendor-nodejs) exists, switching to it.
Downloading nodejs from the cookbooks site at version 2.4.2 to /home/rozie/chef-repo/cookbooks/nodejs.tar.gz
Cookbook saved: /home/rozie/chef-repo/cookbooks/nodejs.tar.gz
Removing pre-existing version.
Uncompressing nodejs version 2.4.2.
removing downloaded tarball
No changes made to nodejs
Checking out the master branch.
ERROR: IOError: Cannot open or read /home/rozie/chef-repo/cookbooks/nodejs/metadata.rb!

Zacząłem szukać i widywać różne dziwne rozwiązania na nieistniejące metadata.rb, przez chwilę przyszło mi dogenerowanie „brakującego” pliku na podstawie obecnego metadata.json, ale… coś mnie tknęło i postanowiłem najpierw spróbować z nowszym Chefem u siebie na lapku.

Ależ oczywiście, że instalacja Chefa w wersji 12 rozwiązała problem.

Orange, wvdial i modem Huawei E1752C

Ponieważ w ramach jednego projektu (hm, na razie nic nie nadaje się do publikacji) klikałem na dwa modemy GSM, to obok mojego Huawei E3131 w laptopie pojawił się pożyczony modem GSM Huawei E1752C z kartą sieci Orange. Dla pamięci i gdyby komuś miało się przydać – konfiguracja dostępu do internetu dla sieci Orange pod Linuksem.

W lsusb Huawei E1752C jest widoczny jako:

new high-speed USB device number 11 using ehci-pci
New USB device found, idVendor=12d1, idProduct=141b
New USB device strings: Mfr=3, Product=2, SerialNumber=4
Product: HUAWEI Mobile
Manufacturer: HUAWEI Technology

w dmesg jako:

Bus 002 Device 011: ID 12d1:141b Huawei Technologies Co., Ltd.

Sam modem działał od kopa (kernel 4.1.0-1-amd64, Debian unstable) i nie wymagał żadnych ingerencji, ale zaznaczam, że trafił do mnie jako używka, więc nie wiem, czy było grzebane.

Szybka przeróbka mojej konfiguracji dla Aero2, w oparciu o oficjalne instrukcje ze strony Orange nie zakończyła się sukcesem. Poszukiwania w sieci naprowadziły mnie na ten artykuł nt. konfiguracji modemu GPRS dla sieci Orange w Debianie. Potwierdzam, działa. Ale IMO trochę przydługie, więc postanowiłem skrócić do wersji mniej więcej minimalnej. Skończyłem z takim konfigiem do wvdial:

[Dialer orange-pin]
Modem = /dev/ttyUSB0
Init1 = ATZ
Init2 = AT+CPIN=1234

[Dialer orange]
Modem = /dev/ttyUSB0
Init3 = AT+CGDCONT=1,"IP","internet"
Username = "internet"
Password = "internet"
Phone = "*99#"
Dial Command = ATDTW
Stupid Mode = yes
Dial Attempts = 0

Najpierw trzeba wywołać wvidal orange-pin, a gdy się zakończy, można połączyć się z siecią przy pomocy wvidal orange. Jak widać, kluczową różnicą było ustawienie parametru Dial Command.

Samo połączenie z Orange można uruchomić na Linuksie prościej, ponieważ na desktopie da się wyklikać konfigurację w network manager. Sprawdzone na Debianie Jessie z kernelem w okolicach 4.0. Czasem jednak może przydać się wersja bardziej ręczna, szczególnie jeśli ktoś nie ma GUI w maszynce.

Korzystając z apt-dater – parę uwag

Od pewnego czasu korzystam z opisywanego kiedyś narzędzia apt-dater do aktualizacji hostów w środowiskach większych, niż kilka własnych testowych maszyn. Garść praktycznych uwag nt. używania w takich środowiskach.

  1. W okolicy wersji 1.0 zmienił się format pliku (teraz jest XML), przez co linkowany wyżej opis jest nieaktualny. Zmian wymagał też skrypt generujący konfigurację apt-datera na podstawie danych z Chefa.
  2. Warto podzielić hosty na grupy – raz, że łatwiej decydować, gdzie wykonujemy aktualizację w danym momencie, dwa, że każdy host to osobne procesy w momencie działań więc… może być tego za dużo, jeśli zaczniemy aktualizować listę pakietów wszędzie jednocześnie (tak, mam skonfigurowane limits na workstacji, tak walnąłem w limity, jak leciałem hurtem).
  3. Sama aktualizacja to nie wszystko, trzeba jeszcze zrestartować procesy korzystające ze starych bibliotek. Kiedyś był checkrestart, teraz jest bardziej popularny –  i nieźle współpracujący z apt-daterneedrestart.
  4. Niezależnie od podziału na grupy, można ad hoc zaznaczyć hosty do wykonania operacji (polecenie tag). Sposób niezbyt intuicyjny, bo najpierw zaznaczamy hosty [t], następnie zatwierdzamy je do wykonania [;], a na końcu wybieramy polecenie do wykonania.
  5. Apt-dater przyspiesza pracę, ale nie udało mi się (i nie tylko mi), uniknąć podłączania do każdej sesji po zakończeniu aktualizacji i zamykania jej. Nawet, jeśli cała aktualizacja przeszła pomyślnie, bez interaktywnych pytań i nie ma nic do restartu. Gdyby się komuś udało – proszę o komentarz.
  6. Odpowiednio ustawione hold lub apt_preferences to podstawa, jeśli ma się jakieś dziwne (czytaj: 3rd party) pakiety, których autorzy niezupełnie umieją paczkować Debian way.

W każdym razie apt-dater bardzo ułatwia i przyspiesza pracę. Generalnie polecam.