Klient szefa kuchni nie aktualizuje książki kucharskiej z serwera

9

Mam książkę kucharską kucharza (dla apache2). Nie działa na jednym węźle. Więc próbuję go ulepszyć i zaktualizować, ale wydaje się, że węzeł nie pobiera nowej wersji. Udało mi się przesłać wszystko na serwer szefa kuchni z mojego komputera lokalnego knife upload ., co się powiedzie, i drukuje, że przesłał zmienione fragmenty książki kucharskiej apache2.

Kiedy ręcznie uruchamiam (jako root) chef-clientw węźle, widzę, że kontaktuje się z serwerem, uzyskuje listę uruchomień itp. Jednak pliki receptur w nim /var/cache/chef/cookbooks/apache2są starymi plikami. I przepis się nie udaje (ponieważ nie ma zmian, które wprowadziłem).

Jak sprawić, aby klient szefa kuchni w węźle korzystał z nowej zaktualizowanej wersji książki kucharskiej apache2? Czy muszę podnieść numer wersji w książce kucharskiej (nie robiłem tego)?

chef-client -l debug wynik:

[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)

Jestem nowym szefem kuchni, więc mogłem popełnić błąd dla początkujących.

Rory
źródło
Przejdź do interfejsu sieciowego kucharz-serwer i sprawdź, czy są zmiany w książce kucharskiej.
Draco Ater
1
Upewnij się, że uciekłeś knife cookbook upload <cookbook_name>. Jeśli to nie rozwiąże problemu, spróbuj uruchomić wersję, a następnie uruchomić, knife cookbook list <cookbook_name>aby upewnić się, że naprawdę ją poprawnie przesyłasz. Alternatywnie uruchom knife cookbook download(w innym katalogu), aby zanotować, co serwer uważa za właściwy kod.
Tejay Cardon

Odpowiedzi:

6

Myślę o kilku rzeczach, które mogą ci pomóc.

  1. Sprawdź, czy przesyłana wersja książki kucharskiej jest najnowszą wersją

    Częstym problemem związanym z wersjonowaniem książek kucharskich jest to, że możesz modyfikować lokalnie książkę kucharską w wersji 1.0.0 i przesyłać ją, ale na serwerze szefa kuchni jest już przesłana książka kucharska w wersji 1.0.1. W takim przypadku klienci szefa kuchni zazwyczaj pobierają najnowszą wersję (chyba że podano inaczej), a zmiany nigdy nie będą synchronizowane z lokalną pamięcią podręczną.

    Możesz zobaczyć wszystkie aktualne wersje książki kucharskiej na Chef Server poprzez: knife cookbook show apache2

    Jednym z rozwiązań jest to, o którym wspomniałeś - zwiększ swój numer wersji ponad to, co istnieje na Chef Server, tj. 1.0.2 i prześlij.

    Inną metodą jest usunięcie wszelkich innych książek kucharskich apache2 z Chef Server i ponowne przesłanie tej, którą chcesz. Nie wymaga to aktualizacji numerów wersji, a wynik końcowy jest taki, że Chef Server miałby jedną książkę kucharską apache2.

  2. Sprawdź, czy twoje zmiany rzeczywiście trafiają na serwer szefa kuchni

    Za pomocą opcji knife cookbook show apache2 <cookbook version> recipes default.rb Zamień wersję, ścieżkę i nazwę pliku - na przykład, jeśli chcesz wyświetlić szablon o nazwie foo.erb:knife cookbook show apache2 0.1.0 templates foo.erb

    To polecenie zażąda pliku z serwera Chef Server i wyświetli dane wyjściowe w twoim terminalu. Jest to prosty sposób na określenie, czy dokonane zmiany są przesyłane knife cookbook upload.

Poza tym, jeśli to nie pomoże, dodanie szczegółów knifewersji, chef-serverwersji, chef-clientwersji, a także dziennika debugowania z knife cookbook upload apache2 -VVbyłoby pomocne w dalszym debugowaniu.

Mike Fiedler
źródło
1
Dziękuję bardzo za tę odpowiedź ... doprowadziło mnie to do wniosku, że mieliśmy ograniczenia związane z książkami kucharskimi w naszym środowisku produkcyjnym, a nie w środowiskach / production.rb, ale ustawione przez berkshelf! Nawet nie wiedziałem, że to może zrobić. W każdym razie, po ponownym przesłaniu środowiska produkcyjnego.rb, nowy szef kuchni wybrał naszą najnowszą książkę kucharską.
Colin Curtin,
2

Najpierw debuguj wszystkie wersje książek kucharskich na serwerze, a następnie sprawdź, którą wersję książki kucharskiej pobiera klient. jeśli jest stary, po prostu sprawdź, czy serwer ma zaktualizowaną wersję. jeśli tak jest, proszę przejść do interfejsu użytkownika serwera szefa kuchni i sprawdzić env. być może skonfigurowałeś środowisko, w którym określone są ograniczenia książek kucharskich. Zaktualizuj tam wersję, a zacznie działać ponownie.

zedfauji
źródło
1

Inną przyczyną może być to, że nie wszystkie zależności książki kucharskiej są obecne na serwerze szefa kuchni. Właśnie na to wpadłem i pojawiła się nowa wersja mojej książki kucharskiej, knife cookbooks listale mój klient nie używał nowej wersji. Po pewnym debugowaniu odkryłem, że Berkshelf ani nóż nie przesłali nowej zależności dla mojej książki kucharskiej. Po przesłaniu tego klient zaczął korzystać z nowszej wersji.

Michael Grubb
źródło
Upewnij się, że uruchomiłeś przesyłanie książki kucharskiej z nożem <nazwa_booka>
Net Runner