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-client
w węźle, widzę, że kontaktuje się z serwerem, uzyskuje listę uruchomień itp. Jednak pliki receptur w nim /var/cache/chef/cookbooks/apache2
są 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.
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 uruchomknife cookbook download
(w innym katalogu), aby zanotować, co serwer uważa za właściwy kod.Odpowiedzi:
Myślę o kilku rzeczach, które mogą ci pomóc.
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.
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
knife
wersji,chef-server
wersji,chef-client
wersji, a także dziennika debugowania zknife cookbook upload apache2 -VV
byłoby pomocne w dalszym debugowaniu.źródło
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.
źródło
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 list
ale 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.źródło