pengantar
Pada CI pribadi dan Repositori Kontrol Sumber seperti Gitlab-ce dimungkinkan untuk menyalin ~ / .vault_pass.txt ke server dan membiarkannya digunakan oleh CI untuk mendekripsi file menggunakan Ansible.
Masalah
Pada Repositori CI dan Source Control publik seperti Bitbucket, tidak mungkin untuk menyalin ~ / .vault_pass.txt ke server CI itu sendiri.
Diskusi
Dalam Bitbucket adalah mungkin untuk mendefinisikan variabel dienkripsi, tetapi ketika ini berkas diperiksa variabel terkait hanya VAULT adalah:
ANSIBLE_ASK_VAULT_PASS
ANSIBLE_VAULT_PASSWORD_FILE
Variabel-variabel ini bukan pilihan untuk menyelesaikan masalah seperti ketika ANSIBLE_ASK_VAULT_PASS
set ansible-vault
masih meminta:
user@host $
Vault password:
Ketika kata sandi yang sama dimasukkan, itu dapat membuka file yang dienkripsi, tetapi tujuannya adalah untuk membuka file tanpa perlu file atau memasukkan kata sandi dalam prompt.
Upaya lain untuk menyelesaikan masalah sedang berjalan export ANSIBLE_ASK_VAULT_PASS=<ansible-vault-password>
, tetapi mode interaktif tetap ada.
Pilihan lain adalah export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt
, tetapi kemudian file ini perlu didorong ke repositori, tetapi repositori Kontrol sumber tidak boleh mengandung kata sandi.
Jawaban:
--vault-password-file
sebagai gantinya dapat menunjuk ke skrip yang dapat dieksekusi yang menulis ke stdout. Fitur yang kurang dikenal ini harus menyelesaikan masalah Anda.Pertama, tulis skrip sederhana yang dapat dieksekusi yang mencetak variabel lingkungan sistem, dan periksa itu ke dalam kontrol sumber Anda. Kemudian, gunakan fitur variabel terenkripsi Bitbucket untuk mengatur variabel lingkungan itu menjadi rahasia Anda-kubah. Akhirnya, jalankan seperti:
ansible-playbook site.yml --vault-password-file ./mypass.sh
.Referensi:
http://docs.ansible.com/ansible/playbooks_vault.html#running-a-playbook-with-vault
https://groups.google.com/forum/#!topic/ansible-devel/1vFc3y6Ogto
sumber
echo $VAR
misalnya dan var ini akan diatur di UI BitBucket?([Errno 8] Exec format error). If this is not a script, remove the executable bit from the file.
Menggunakan
menghasilkan:
Berdasarkan posting ini , yang berikut ini didefinisikan dalam bitbucket-pipeline:
sumber
Anda dapat mengatur tes yang tidak menjalankan produksi, dan memuat file yang berbeda untuk itu.
Buat host_vars / localhost / vault yang hanya berfungsi untuk instalasi pengujian lokal.
Dengan begitu Anda bisa menggunakan kata sandi brankas terbuka yang hanya berfungsi untuk brankas host lokal itu.
sumber