Tak samo jest z modułem lineinfile
do dodawania jednej linii w pliku, czy istnieje sposób na dodanie kilku wierszy?
Nie chcę używać szablonu, ponieważ musisz dostarczyć cały plik. Chcę tylko dodać coś do istniejącego pliku, niekoniecznie wiedząc, co plik już zawiera, więc szablon nie jest opcją.
template
, ale używanielineinfile
jest przeciwieństwem . Jest to również silna czerwona flaga, że „nie wiesz, co jest w pliku”, co prowadzi do znacznego ryzyka nieznanych błędów.Odpowiedzi:
Możesz to zrobić za pomocą pętli . Oto przykład użycia
with_items
pętli:źródło
msg: this module requires key=value arguments
. Podany przykład ma to poprawne - po prostu nie podążałem za przykładem.Możesz spróbować użyć
blockinfile
zamiast tego.Możesz zrobić coś takiego
źródło
blockinfile
Moduł wypracowała cudownie za każdym razem wybrałem się go używać. Szczególnie podoba mi się intuicyjne zachowanie opcjiinsertafter
/insertbefore
options.blockinfile
?Jeśli chcesz skonfigurować zestaw unikalnych linii właściwość = wartość, polecam bardziej zwięzłą pętlę. Na przykład:
Korzystanie z dyktu zgodnie z sugestią Alix Axel i dodawanie automatycznego usuwania pasujących zakomentowanych wpisów,
źródło
Oto wolna od szumów wersja rozwiązania, które ma być używane with_items:
Dla każdego elementu, jeśli istnieje on w pliku fruit.txt, nie jest podejmowane żadne działanie.
Jeśli element nie istnieje, zostanie dołączony na końcu pliku.
Bułka z masłem.
źródło
To nie jest idealne rozwiązanie, ale możesz do niego dzwonić
lineinfile
. Używając tego zinsert_after
, możesz uzyskać pożądany wynik:źródło
Udało mi się to zrobić za pomocą
\n
parametru line.Jest to szczególnie przydatne, jeśli plik może zostać zweryfikowany, a dodanie jednej linii generuje nieprawidłowy plik.
W moim przypadku dodawałem
AuthorizedKeysCommand
iAuthorizedKeysCommandUser
do sshd_config za pomocą następującego polecenia:Dodanie tylko jednej opcji generuje plik, który nie przejdzie weryfikacji.
źródło
Aby dodać wiele linii, możesz użyć pliku blokowego:
aby dodać jedną linię, możesz użyć lininfile:
źródło
Aby dodać wiele linii, możesz użyć
lineinfile
modułu zawierającegowith_items
również zmiennąvars
tutaj, aby było to proste :)źródło