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 content
parametrem 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 BD
zrzutó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 ...
Odpowiedzi:
W tym celu można użyć polecenia powłoki ze zmienną base64.
Eric
źródło
Sposób, w jaki to robimy dla naszej konfiguracji ansible:
- Szyfrujemy poszczególne wrażliwe materiały (niewielki podzbiór naszego repozytorium) za pomocą https://www.agwa.name/projects/git-crypt/ - Wszyscy zawsze zatwierdzamy za pomocą znaczników git - Okresowo sprawdzamy, czy są jakieś niepodpisane pliki
Zaletą git-crypt jest to, że ponieważ polega on na filtrach git, szyfrowanie jest przezroczyste. Ponadto możesz przyznać programistom dostęp do repozytorium bez narażania zaszyfrowanej zawartości (będzie ignorować zaszyfrowane pliki, jeśli nie będzie można uzyskać klucza deszyfrującego).
źródło