Skip to content

Instantly share code, notes, and snippets.

@JonathanThorpe
Last active February 19, 2021 01:18
Show Gist options
  • Save JonathanThorpe/fbed6bbdffa1d4bec5742ccded1e81c6 to your computer and use it in GitHub Desktop.
Save JonathanThorpe/fbed6bbdffa1d4bec5742ccded1e81c6 to your computer and use it in GitHub Desktop.
Jinja2 Template Parser for applying environment variables to a template.
#!/bin/env python
#Date: 24 August 2018
#Bugs by: Jonathan Thorpe
import os
import re
import argparse
from jinja2 import Environment, FileSystemLoader
CWD = os.path.dirname(os.path.abspath(__file__))
def transformTemplate(srcFileName, dstFileName, envPrefix):
packer_vars = { item: os.environ[item] for item in os.environ.keys() if re.search("^%s" % (envPrefix), item) }
j2_env = Environment(loader=FileSystemLoader(CWD))
template = j2_env.get_template(srcFileName)
renderedTemplate = template.render(packer_vars)
with open(dstFileName, "w") as f:
f.write(renderedTemplate)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Renders a specified Jinja2 template against environment variables prefixed by the specified prefix.')
parser.add_argument('--src-file', action='store', dest='srcFileName', help='Source Template Filename', required=True)
parser.add_argument('--dst-file', action='store', dest='dstFileName', help='Destination Filename', required=True)
parser.add_argument('--env-prefix', action='store', dest='envPrefix', help='Environment variable prefix (defaults to PACKER_)', default='PACKER_')
args = parser.parse_args()
transformTemplate(args.srcFileName, args.dstFileName, args.envPrefix)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment