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.

questionAnswers(4)

yourAnswerToTheQuestion