Używanie przepisu Chef do dołączania wielu linii do pliku konfiguracyjnego
Próbuję stworzyć przepis Chef, aby dodać wiele linii (20-30) do konkretnego pliku konfiguracyjnego.
Wiem, że zalecany jest wzórzmień całe pliki konfiguracyjne zamiast dołączać do pliku, ale nie podoba mi się to podejście z wielu powodów.
Jak dotąd jedynym rozwiązaniem, które znalazłem, było użyciecookbook_file
a następnie użyj zasobu bash, aby to zrobić:
cat lines_to_append >> /path/configfile
Oczywiście to nie zadziałałoby poprawnie, ponieważ dodawałoby plik wielokrotnie, za każdym razem, gdy uruchamiasz klienta-szefa. Musiałbym utworzyć mały skrypt bashowy, aby najpierw sprawdzić konkretny ciąg, ijeśli nie znaleziono, dołącz do pliku.
Ale to wydaje się pokonać cel używania Chef. Musi być lepszy sposób.
Jednym z obiecujących rozwiązań byłoliniowa książka kucharska ze społeczności OpsCode. Jego celem było rozwiązanie tego problemu. Niestety, funkcjonalność jest niekompletna, błędna, a kod jest po prostu szybkim hackiem. Dalekie od bycia solidnym rozwiązaniem.
Inną opcją, którą oceniłem, byłaaugeas. Wydaje się dość potężny, ale dodałby kolejną warstwę abstrakcji do systemu. Overkill, w moim przypadku.
Biorąc pod uwagę, że jest to jedno z najbardziej oczywistych zadań dla każdego administratora, czy jest jakieś łatwe i piękne rozwiązanie w Chef, którego nie widzę?
EDYTUJ: oto jak do tej pory rozwiązuję:
cookbook_file "/tmp/parms_to_append.conf" do
source "parms_to_append.conf"
end
bash "append_to_config" do
user "root"
code <<-EOF
cat /tmp/parms_to_append.conf >> /etc/config
rm /tmp/parms_to_append.conf
EOF
not_if "grep -q MY_IDENTIFIER /etc/config"
end
Działa, ale nie jestem pewien, czy jest to zalecany wzór Chef.