Używamy Ansible Vault do przechowywania haseł, kluczy prywatnych do certyfikatów itp. W naszym repozytorium git w Ansible Playbook. Wszystkie nasze prywatne dane są w formie tekstowej, więc możemy przechowywać je w zmiennych. Są one następnie używane w szablonach lub z contentparametrem modułu kopiowania.
Teraz mamy plik Java KeyStore, który niestety ma format binarny. Jako taki nie może być przechowywany w zmiennej - a przynajmniej nie wiem, jak to zrobić. Jaki byłby najłatwiejszy sposób na prawidłowe zaszyfrowanie naszego pliku, gdy jest on w git, ale dostępny podczas działania ansible-playbook?
Co próbowałem już bez powodzenia:
- Kodowanie pliku binarnego w base64, przechowywanie zakodowanych danych w zmiennej i używanie modułu szablonu z
{{base64_data | b64decode}}. Prowadzi do wieluEF BF BDzrzutów szesnastkowych wynikowego pliku. Trzy bajty kodują znak zastępujący Unicode w UTF-8, więc występuje problem z interpretacją danych binarnych jako tekstu. - Kodowanie pliku binarnego w base64, przechowywanie zakodowanych danych w zmiennej i używanie modułu kopiującego z
content="{{base64_data | b64decode}}". Ansible narzeka na: „Zmienna wstawiła nowy parametr do argumentów modułu”. Gdy używasz pojedynczych cudzysłowów zamiast podwójnych cudzysłowów, Ansible skarży się na „ciąg argumentu analizujący błąd” i kopię wszystkich danych binarnych, zrzuconych do terminala ...