odpowiedź Ryler jest dobra w tym konkretnym przypadku, ale wpadłem na problemy za pomocą innych odmian Europejska moduł szablonu.
[example]
127.0.0.1 timezone="Europe/Amsterdam" locales='["en_US", "nl_NL"]'
Jest to jego oryginalny przykład i działa dobrze.
Poniższe odmiany działają z szablonem. Zasadniczo, jeśli jest to ciąg, należy pamiętać o użyciu wewnętrznych podwójnych cudzysłowów lub cała struktura jest analizowana jako pojedynczy ciąg. Jeśli są to tylko liczby lub "prawda" lub "fałsz" (nie "tak"), wszystko jest w porządku. W tej odmianie nie mogłem pracować z szablonem, gdyby miał zewnętrzne cytaty.
Nie przeprowadziłem wyczerpującego sprawdzenia, które wewnętrzne przypadki użycia są wykonywane i nie łamią się poza modułem szablonu.
Używam odpowiedzi 2.2.1.
[example:vars]
# these work
myvar1=["foo", "bar"]
myvar2=[1,2]
myvar3=[True,False]
# These fail, they get interpreted as a single string.
myvar4=[yes, no]
myvar5=[foo,bar]
myvar6='["foo", "bar"]'
@ryanyuyu To nie tylko nie jest ten sam kod co w pytaniu, ale także dokładne rozwiązanie, którego szukał OP. Testowałeś to? Ryler zrobił, ja też: I działa. To powinna być zaakceptowana odpowiedź, a nie odrzucona. – udondan
Tak, można również potwierdzić, że to działa. Jest to dobre na przykład do użycia z instrukcją "with_items". Możesz nawet tworzyć podobne do dictów obiekty. Używam tego do definiowania użytkowników uwierzytelniania nginx i haseł w pliku inwentaryzacji: nginx_auth = '[{"user": "user1", "pass": "pass1"}, {"user": "user2", "pass" ":" pass2 "}] ' –
Czy to jest najmodniejsze z możliwych rozwiązań dla plików ini?Co się stanie, jeśli masz ponad 20 obiektów i 5 hostów do skonfigurowania? Byłbym szczęśliwy, ale to działa na razie. – JohnnyQ