Ansible Vaultで暗号化されたファイルをCircleCIで利用する

November 17, 2014

TL;DR

CircleCIのEnvironment variablesを利用して
ファイルにdecryptのパスワードを記入する

設定

CircleCIの環境変数に値を設定する機能を利用し、
テスト実行前にその環境変数に設定したVault用の
パスワードをファイルに出力しておき、ansible実行時には
そのファイルを見に行くようにする。

  • circle.yml
machine:
  services:
    - docker

dependencies:
  pre:
    - if [[ -e docker_ansible_image.tar ]]; then cat docker_ansible_image.tar | docker import - kenjiskywalker/dockerfile-centos-ansible ; docker load --input docker_ansible_image.tar ; else docker build . ; docker save -o docker_ansible_image.tar kenjiskywalker/dockerfile-centos-ansible ; fi
    - echo "${ANSIBLE_VAULT}" > $(pwd)/ansible/vault.txt

  cache_directories:
    - "docker_ansible_image.tar"

test:
  post:
    - docker run -v $(pwd)/ansible:/ansible kenjiskywalker/dockerfile-centos-ansible ansible-playbook /ansible/ci.yml  --vault-password-file /ansible/vault.txt -i /ansible/inventory_localhost -c local

他に良いプラクティスあれば教えてください。