使用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