Ansible Vault'u genel CI'lerde ve BitBucket gibi Kaynak Kontrol Depolarında kullanmak için en iyi uygulamalar nelerdir?


11

Giriş

Gitlab-ce gibi özel bir CI ve Kaynak Kontrol Depolarında bir ~ / .vault_pass.txt dosyasını sunucuya kopyalamak ve Ansible kullanarak dosyaların şifresini çözmek için CI tarafından kullanılmasına izin vermek mümkündür.

Sorun

Bitbucket gibi genel CI'lerde ve Kaynak Kontrol Depolarında ~ / .vault_pass.txt dosyasını kendi başına CI sunucusuna kopyalamak mümkün değildir.

Tartışma

Bitbucket'te şifrelenmiş değişkenleri tanımlamak mümkündür, ancak bu dosya işaretlendiğinde VAULT ile ilgili tek değişkenler şunlardır:

  • ANSIBLE_ASK_VAULT_PASS
  • ANSIBLE_VAULT_PASSWORD_FILE

Bu değişkenler, sorunun ANSIBLE_ASK_VAULT_PASSayarlanmasının ansible-vaulthala istendiği gibi sorunu çözme seçeneği değildir :

user@host $
Vault password:

Aynı parola girildiğinde şifrelenmiş dosyayı açabilir, ancak amaç dosyayı bir dosyaya ihtiyaç duymadan veya bir parola girmeden açmaktır.

Sorunu çözmek için bir başka girişim de çalışıyordu export ANSIBLE_ASK_VAULT_PASS=<ansible-vault-password>, ancak etkileşimli mod devam ediyor.

Başka bir seçenek export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt, ancak daha sonra bu dosyanın depoya aktarılması gerekir, ancak kaynak Denetim havuzları parola içermemelidir.


2
Merhaba @ 030, CI ile ne demek istediğini açıklayabilir misin? Benim için bu, Sürekli Entegrasyon anlamına gelir , ancak hem GitLab hem de BitBucket aynı zamanda Kaynak Kontrol Havuzlarıdır - CI genişletilirse soru daha net olurdu.
Richard Slater

Yanıtlar:


8

--vault-password-filebunun yerine stdout'a yazan yürütülebilir bir komut dosyasını gösterebilir. Bu az bilinen özellik sorununuzu çözmelidir.

İlk olarak, bir sistem ortamı değişkeni yazdıran basit, yürütülebilir bir komut dosyası yazın ve bunu kaynak denetiminize denetleyin. Ardından, bu ortam değişkenini anlaşılır kasa sırrınıza ayarlamak için Bitbucket'in şifreli değişken özelliğini kullanın. Son olarak, şu şekilde çalıştırın:

ansible-playbook site.yml --vault-password-file ./mypass.sh.

Referanslar:

  1. http://docs.ansible.com/ansible/playbooks_vault.html#running-a-playbook-with-vault

  2. https://groups.google.com/forum/#!topic/ansible-devel/1vFc3y6Ogto


Ve sonra mypass.sh echo $VARörneğin içerecek ve bu değişken BitBucket kullanıcı arayüzünde ayarlanacak mı?
030

Evet! Alternatif olarak, bir Python örneği: stackoverflow.com/questions/4906977/…
Woodland Hunter

([Errno 8] Exec format error). If this is not a script, remove the executable bit from the file.
030

1

kullanma

ansible-playbook site.yml --vault-password-file ./mypass.sh

sonuçlandı:

ERROR! Problem running vault password script / p a t h / t o
/ e c h o _ v a u l t _ p a s s . s h ([Errno 8] Exec format error). If this is 
not a script, remove the executable bit from the file.

Bu gönderiye dayanarak, bitbucket-pipeline'larda aşağıdakiler tanımlanmıştır:

image: docker:latest

pipelines:
  default:
    - step:
        script:
          - echo $ANSIBLE_VAULT_PASSWORD > .vault_password.txt
          - ansible-playbook -i ansible/inventory ansible/site.yml --vault-password-file .vault_password.txt

-1

Üretimi çalıştırmayan bir test kurulumunuz olabilir ve bunlar için farklı dosyalar yükleyebilirsiniz.

Yalnızca yerel test yüklemesi için çalışan bir host_vars / localhost / kasa oluşturun.

Bu şekilde, yalnızca o yerel ana bilgisayar kasası için çalışan açık bir kasa parolası kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.