in scripts/packergen.py [0:0]
def main():
parser = argparse.ArgumentParser()
parser.add_argument('input', help='Input JSON')
args = parser.parse_args()
with open(args.input, 'r') as f:
data = json.load(f)
builder = {
'type': 'googlecompute',
'machine_type': 'e2-standard-2',
'account_file': '{{ user `keyfile` }}',
'service_account_email': '{{ user `service_account_email` }}',
'project_id': '{{ user `project` }}',
'zone': '{{ user `zone` }}',
'ssh_username': '{{ user `ssh_username` }}',
'image_name': '{{ user `imagename` }}',
'use_internal_ip': '{{ user `use_internal_ip` }}',
'instance_name': 'imagebuilder-{{uuid}}',
'metadata': {
'block-project-ssh-keys': 'true',
'shutdown-script': SHUTDOWN_SCRIPT,
'shutdown-script-log-name': '{{ user `shutdown_log_name` }}',
'shutdown-script-log-bucket': '{{ user `log_bucket` }}',
},
'tags': ['imagebuilder-workers']
}
# Overrides the allowed attributes
builder.update(
{key: data.get(key) for key in PACKER_OVERRIDABLE_CONFIG if key in data}
)
content = {
'variables': {
'chefdir': None,
'project': None,
'zone': None,
'imagename': None,
'use_internal_ip': 'true',
'shutdown_log_name': 'shutdown-log-{{ uuid }}.txt',
'log_bucket': None,
'ssh_username': None,
},
'builders': [builder],
'provisioners': [
{
'type': 'chef-solo',
'install_command': INSTALL_CHEF_SOLO,
'cookbook_paths': ['{{ user `chefdir` }}/cookbooks/'],
'run_list': data['chef']['run_list'],
'chef_license': 'accept'
},
_purge_chef(),
_sudo_shell(STOP_SERVICES_SCRIPT),
_sudo_shell('apt-get clean')
],
'post-processors': [
_verify_shutdown_script()
],
}
print(json.dumps(content, sort_keys=True, indent=2))
return 0