From c19c2c72958eb112bff45d2d222f96d0fe386fe4 Mon Sep 17 00:00:00 2001 From: Alan Descoins Date: Tue, 23 Jul 2013 19:39:39 -0300 Subject: [PATCH] ansible-playbook can load extra vars from a file, with "@" syntax --- bin/ansible-playbook | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/bin/ansible-playbook b/bin/ansible-playbook index a3b33292be4..0f8f2b29ae7 100755 --- a/bin/ansible-playbook +++ b/bin/ansible-playbook @@ -94,10 +94,20 @@ def main(args): options.ask_sudo_pass = options.ask_sudo_pass or C.DEFAULT_ASK_SUDO_PASS ( sshpass, sudopass ) = utils.ask_passwords(ask_pass=options.ask_pass, ask_sudo_pass=options.ask_sudo_pass) options.sudo_user = options.sudo_user or C.DEFAULT_SUDO_USER - if options.extra_vars and options.extra_vars[0] in '[{': - extra_vars = utils.json_loads(options.extra_vars) - else: - extra_vars = utils.parse_kv(options.extra_vars) + + extra_vars = {} + if options.extra_vars: + if options.extra_vars.startswith("@"): + # Argument is a JSON file + with open(options.extra_vars[1:]) as fd: + extra_vars = utils.json_loads(fd.read()) + elif options.extra_vars[0] in '[{': + # Arguments as JSON + extra_vars = utils.json_loads(options.extra_vars) + else: + # Arguments as Key-value + extra_vars = utils.parse_kv(options.extra_vars) + only_tags = options.tags.split(",") skip_tags = options.skip_tags if options.skip_tags is not None: