Variable / Environment / Secret の書き方
Variable / Environmentの書き方
Ansible
□ 定義
- hosts: webservers vars: http_port: 80
□ 参照
{{ http_port }}
Packer
□ 定義
引数で定義
packer build -var 'my_secret=foo' xxx.json
ファイルで定義
packer build -var-file=variables.json
yaml内で定義
"variables": { "aws_access_key": "", "aws_secret_key": "" },
□ 参照
# コマンドラインから来た変数/ファイルは `variables`ブロックで使う事しかできない。 "variables": { "my_secret": "{{env `MY_SECRET`}}", } # variablesで定義した変数を使う "builders": [{ "type": "amazon-ebs", "access_key": "{{user `aws_access_key`}}", "secret_key": "{{user `aws_secret_key`}}", // ... }]
{{user
var_name}}
Secretの扱い方
Ansible
ansible-vault
を使用する。
cd /path/to/ ansible-vault [ create | edit | decrypt | view ] secret.yml
パスフレーズの渡し方は
① ansible-playbook ansi--ask-vault-pass
対話形式で入力できます。
② ansible-playbook --vault-password-file /path/to/passwordfile
平文でパスワードが書かれたファイルを渡す事で対話形式をSkip出来ます。
Packer
Packerは 引数で定義
か ファイルで定義
で対応するしかない。
Ansible with Packer
ansible-vault を packer内部で頑張って使う
Packerに var を渡して、その値を
ansible-localに "extra_arguments": [ "--extra-vars \"Region={{user
Region}} Stage={{user
Stage}}\"" ]
で渡す