使用Packer运行Ansible-vault时,通过选项参数传递密码的方法是什么?

起因或所处的环境

我希望使用packer和ansible-vault来生成AMI。
由于不想将ansible-vault的解密密码上传到GitHub等平台,我希望在命令输入时输入该密码。
下面是使用方法的示例。


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

ansible-vault的密码解密方式有两种。
1. 使用–ask-vault-pass选项,在提示符中输入密码。
2. 使用–vault-password-file选项,将密码写在文件路径中传递。

我用2來強行實現了這個,所以做了個筆記。如果有更好的方法,請告訴我。

下载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"]
    }]
}

当我输入这个命令时,成功了。

请参考

请使用下列本地化的方式,以中文翻译以下链接:

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

广告
将在 10 秒后关闭
bannerAds