Kami menggunakan Ansible Vault untuk menyimpan kata sandi, kunci pribadi untuk sertifikat, dll. Di repositori git Playbook Ansible kami. Semua data pribadi kami yang ada adalah dalam bentuk teks, sehingga kami dapat menyimpannya dalam variabel. Ini kemudian digunakan dalam template atau dengan content
parameter modul salin.
Sekarang, kami memiliki file Java KeyStore, yang sayangnya memiliki format biner. Dengan demikian, itu tidak dapat disimpan di dalam variabel - atau setidaknya saya tidak tahu bagaimana melakukannya. Apa cara termudah untuk membuat file kita dienkripsi dengan benar sementara itu berada di git, tetapi tersedia saat dijalankan ansible-playbook
?
Apa yang sudah saya coba tanpa keberhasilan:
- Pengkodean file biner di base64, menyimpan data yang dikodekan dalam variabel dan menggunakan modul template dengan
{{base64_data | b64decode}}
. Mengarah ke banyakEF BF BD
dump hex dari file yang dihasilkan. Tiga byte mengkodekan karakter pengganti Unicode di UTF-8, jadi ada masalah dengan menafsirkan data biner sebagai teks. - Pengkodean file biner di base64, menyimpan data yang dikodekan dalam variabel dan menggunakan modul salin dengan
content="{{base64_data | b64decode}}"
. Kemungkinan mengeluh dengan "Variabel memasukkan parameter baru ke dalam argumen modul." Saat menggunakan tanda kutip tunggal dan bukan tanda kutip ganda, Ansible mengeluh dengan "string argumen parsing kesalahan", dan salinan dari semua data biner, dibuang ke terminal ...
Jawaban:
Anda dapat menggunakan perintah shell dengan variabel base64 untuk melakukan itu.
Eric
sumber
Cara kami melakukannya untuk pengaturan yang memungkinkan kami adalah:
-Kami mengenkripsi materi sensitif individual (sebagian kecil dari repositori kami) menggunakan https://www.agwa.name/projects/git-crypt/ -Kita semua selalu berkomitmen menggunakan tag tanda git -Kami secara berkala memeriksa apakah ada file yang tidak ditandatangani
Keuntungan dari git-crypt adalah karena bergantung pada filter git, enkripsi menjadi transparan. Plus, Anda dapat memberikan akses ke repositori kepada pengembang tanpa mengurangi konten terenkripsi (itu akan mengabaikan file yang dienkripsi jika tidak ada kunci dekripsi yang dapat diperoleh).
sumber