From 6bef150695e4aea142fbb0aa3024e5b9e645621b Mon Sep 17 00:00:00 2001 From: Fabio Bonelli Date: Tue, 28 May 2013 09:46:50 +0200 Subject: [PATCH] Support JSON in --extra-vars. If --extra-vars starts with either a '{' or a '[', it will be assumed we are dealing with JSON and parse the data as such. --- bin/ansible-playbook | 5 ++++- docs/man/man1/ansible-playbook.1.asciidoc.in | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/ansible-playbook b/bin/ansible-playbook index 79c883fcedb..ea99342f393 100755 --- a/bin/ansible-playbook +++ b/bin/ansible-playbook @@ -98,7 +98,10 @@ def main(args): if options.sudo_user or options.ask_sudo_pass: options.sudo = True options.sudo_user = options.sudo_user or C.DEFAULT_SUDO_USER - extra_vars = utils.parse_kv(options.extra_vars) + if options.extra_vars[0] in '[{': + extra_vars = utils.json_loads(options.extra_vars) + else: + extra_vars = utils.parse_kv(options.extra_vars) only_tags = options.tags.split(",") for playbook in args: diff --git a/docs/man/man1/ansible-playbook.1.asciidoc.in b/docs/man/man1/ansible-playbook.1.asciidoc.in index ecb32e81beb..6eb79808db5 100644 --- a/docs/man/man1/ansible-playbook.1.asciidoc.in +++ b/docs/man/man1/ansible-playbook.1.asciidoc.in @@ -51,7 +51,8 @@ The 'DIRECTORY' to load modules from. The default is '/usr/share/ansible'. *-e* 'VARS', *--extra-vars=*'VARS':: -Extra variables to inject into a playbook, in key=value key=value format. +Extra variables to inject into a playbook, in key=value key=value format or +as JSON (objects and arrays). *-f* 'NUM', *--forks=*'NUM'::