LoginSignup
9
7

More than 5 years have passed since last update.

Packerでansible-vaultのパスワードをoption引数で渡す方法

Last updated at Posted at 2016-09-14

背景

packerでansible-vault使ってami生成したかった。
ansible-vaultの復号化passwordはgithubなどにあげたくないので、コマンド入力時に入力したかった。
イメージは以下のような使用方法。

打ちたいコマンド

packer build -var 'vault_pass=some-pass' packer.json

ansible-vaultの複合化パスの渡し方は2つ。
1. --ask-vault-pass オプションでプロンプトで入力する
2. --vault-password-file オプションでパスが書いてあるファイルパス渡す

2を使って無理やり実現できるようにしたのでメモ。もっといい方法あったら教えてください。

packerのjsonファイル

packer.json

{
  "variables": {
    "aws_access_key": "HOGE",
    "aws_secret_key": "FUGA",
    "vault_pass": ""
  },
  "builders": [{
    "type": "amazon-ebs",
    "access_key": "{{user `aws_access_key`}}",
    "secret_key": "{{user `aws_secret_key`}}",
    "region": "ap-northeast-1",
    "source_ami": "ami-374db956",
    "instance_type": "t2.micro",
    "ssh_username": "ec2-user",
    "ami_name": "name"
  }],
  "provisioners": [{
    "type": "shell",
    "inline": [
      "sudo yum -y update",
      "sudo yum -y --enablerepo=epel install ansible",
      "mkdir -p /tmp/packer-provisioner-ansible-local/",
      "touch /tmp/packer-provisioner-ansible-local/vault.txt",
      "echo {{user `vault_pass`}} > /tmp/packer-provisioner-ansible-local/vault.txt"
    ]},{
    "type": "ansible-local",
    "playbook_file": "playbook.yml",
    "extra_arguments": ["--vault-password-file vault.txt"]
    }]
}

これでコマンド叩くとうまくいった

参考

http://docs.ansible.com/ansible/playbooks_vault.html
https://www.packer.io/docs/provisioners/ansible-local.html
https://www.packer.io/docs/templates/user-variables.html

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7