イフブロ

イフブロ

インフラエンジニアのブログ

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`}}",
    // ...
  }]

{{uservar_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内部で頑張って使う

qiita.com

Packerに var を渡して、その値を ansible-localに "extra_arguments": [ "--extra-vars \"Region={{userRegion}} Stage={{userStage}}\"" ] で渡す