diff options
Diffstat (limited to 'cloudinit/cmd/devel/render.py')
| -rwxr-xr-x | cloudinit/cmd/devel/render.py | 23 | 
1 files changed, 16 insertions, 7 deletions
| diff --git a/cloudinit/cmd/devel/render.py b/cloudinit/cmd/devel/render.py index 2ba6b681..4d3ec958 100755 --- a/cloudinit/cmd/devel/render.py +++ b/cloudinit/cmd/devel/render.py @@ -8,11 +8,10 @@ import sys  from cloudinit.handlers.jinja_template import render_jinja_payload_from_file  from cloudinit import log -from cloudinit.sources import INSTANCE_JSON_FILE +from cloudinit.sources import INSTANCE_JSON_FILE, INSTANCE_JSON_SENSITIVE_FILE  from . import addLogHandlerCLI, read_cfg_paths  NAME = 'render' -DEFAULT_INSTANCE_DATA = '/run/cloud-init/instance-data.json'  LOG = log.getLogger(NAME) @@ -47,12 +46,22 @@ def handle_args(name, args):      @return 0 on success, 1 on failure.      """      addLogHandlerCLI(LOG, log.DEBUG if args.debug else log.WARNING) -    if not args.instance_data: -        paths = read_cfg_paths() -        instance_data_fn = os.path.join( -            paths.run_dir, INSTANCE_JSON_FILE) -    else: +    if args.instance_data:          instance_data_fn = args.instance_data +    else: +        paths = read_cfg_paths() +        uid = os.getuid() +        redacted_data_fn = os.path.join(paths.run_dir, INSTANCE_JSON_FILE) +        if uid == 0: +            instance_data_fn = os.path.join( +                paths.run_dir, INSTANCE_JSON_SENSITIVE_FILE) +            if not os.path.exists(instance_data_fn): +                LOG.warning( +                     'Missing root-readable %s. Using redacted %s instead.', +                     instance_data_fn, redacted_data_fn) +                instance_data_fn = redacted_data_fn +        else: +            instance_data_fn = redacted_data_fn      if not os.path.exists(instance_data_fn):          LOG.error('Missing instance-data.json file: %s', instance_data_fn)          return 1 | 
