Hi,

Sorry for being unclear about my problem. The issue is still about passing 
variables from Jenkins to Ansible as --extra-vars. I have done some more 
testing and biggest part of the problem was that I was trying to build up 
the complete ansible-playbook command from variables in Jenkins including 
extra-vars. Now when I just tried pasting the complete raw ansible-playbook 
command line in the Jenkins execute-shell box directly, it works just fine.

For example this works:
/usr/bin/python2 -u ansible-playbook manage_service.yml -l ${hosts} 
--extra-vars "service=${service} manage=${manage} serial=${serial} 
secs=${secs}"

But all the following examples causes trouble:
cmd="/usr/bin/python2 -u ansible-playbook manage_service.yml -l ${hosts} 
--extra-vars "service=${service} manage=${manage} serial=${serial} 
secs=${secs}""
cmd="/usr/bin/python2 -u ansible-playbook manage_service.yml -l ${hosts} 
--extra-vars \"service=${service} manage=${manage} serial=${serial} 
secs=${secs}\""
cmd="/usr/bin/python2 -u ansible-playbook manage_service.yml -l ${hosts} 
--extra-vars 'service=${service} manage=${manage} serial=${serial} 
secs=${secs}'"

I also tried the workaround by using --extra-vars 
"@manage_service_vars.yml" but that produced a failure with the following 
message which seems to indicate that the variable does'nt get expanded:

msg: value of state must be one of: running,started,stopped,restarted,reloaded, 
got: $manage

I have also tried:
cmd=$(/usr/bin/python2 -u ansible-playbook manage_service.yml -l ${hosts} 
--extra-vars "service=${service} manage=${manage} serial=${serial} 
secs=${secs}")
Which works but you get all the output from ansible in one line.

The reason for still building the complete command as a variable is to be 
able to add even more parameters to ansible as options to the Jenkins job 
without having the complete command line in several different sections of 
the execute-shell code.
 
For example:
if [ "${debug}" == "true" ]; then
  runcmd="${cmd} -vvvv"
else
  runcmd="${cmd}"
fi

It would be great if someone more knowledgeable than me :) could give some 
input on how to solve the problem with not being able to build up the 
complete ansible-playbook command as a variable without breaking the 
--extra-vars parameter?

Best regards,

//Jon


On Monday, November 17, 2014 9:53:42 PM UTC+1, Michael DeHaan wrote:
>
> I'm not sure I'm following, can you clarify exactly what your issue is?
>
> The start of this thread was about how to pass variables.
>
>
>
> On Sat, Nov 15, 2014 at 5:23 PM, Toshio Kuratomi <[email protected] 
> <javascript:>> wrote:
>
>> What does your execute shell look like with Damir's workaround?  Were
>> you also able to see the values of the substitution has extra quotes
>> in that case or is it the same traceback but not necessarily the same
>> place that quotes are being mismatched?
>>
>> -Toshio
>>
>> On Sat, Nov 15, 2014 at 5:15 AM, jonten <[email protected] <javascript:>> 
>> wrote:
>> > Hi,
>> >
>> > Sorry for hi-jacking this old thread but I'm experiencing exactly the 
>> same
>> > problems as the original poster Naween. Have also tried Damirs 
>> workaround
>> > without success, just get the same result as when not using a vars file.
>> >
>> > I'm running the following versions of Ansible and other related 
>> software:
>> >
>> > OS: CentOS 6.5
>> > Ansible verision:ansible-1.7.2-2.el6.noarch (from epel repo)
>> > Python Jinja version: python-jinja2-2.2.1-1.el6.rf.x86_64 (think it was 
>> from
>> > rpmbone because of dependency trouble with other jinjas)
>> > Jenkins version: jenkins-1.499-1.1.noarch
>> >
>> > I tried this with ansible-1.7.0-1.el6.noarch also from epel repo with 
>> the
>> > same result. Everything works great with dynamic extra-vars variables 
>> from
>> > the command line but not from Jenkins.
>> >
>> > Best regards,
>> >
>> > //Jon
>> >
>> >
>> > On Sunday, September 21, 2014 9:34:45 PM UTC+2, Michael DeHaan wrote:
>> >>
>> >> What version of Ansible are you using?
>> >>
>> >>
>> >>
>> >> On Sat, Sep 20, 2014 at 4:40 AM, Naween Ghimire <[email protected]>
>> >> wrote:
>> >>>
>> >>> Hi All,
>> >>>
>> >>> I am trying to run an ansible playbook from jenkins build to have 
>> jenkins
>> >>> trigger my ansible execution.
>> >>>
>> >>> As part of my ansible-playbook run i need to pass extra-vars to the
>> >>> playbook during execution.
>> >>>
>> >>> eg:
>> >>>
>> >>> ansible-playbook -i $inventory-file $role-name
>> >>> --extra-vars"var1=$var1-value, var2=$var2-value"
>> >>>
>> >>> when i put this line in the execute shell of jenkins the double quotes
>> >>> are evaluated and so aren't available to the ansible-playbook 
>> command, so i
>> >>> escaped them as follows:
>> >>>
>> >>> ansible-playbook -i $inventory-file $role-name
>> >>> --extra-vars\"var1=$var1-value, var2=$var2-value\"
>> >>>
>> >>> But if i do this,
>> >>>
>> >>> shell adds extra quotes around it as below:
>> >>>
>> >>> ansible-playbook -i <inventory-file-name> <role-name> --extra-vars '
>> >>> "var1=var1-value,' var2=var2-value, 'var3=var3-value " '
>> >>>
>> >>> And ansible give the following error:
>> >>>
>> >>>
>> >>> Traceback (most recent call last):
>> >>>
>> >>>   File "/usr/local/bin/ansible-playbook", line 317, in <module>
>> >>>
>> >>>     sys.exit(main(sys.argv[1:]))
>> >>>
>> >>>   File "/usr/local/bin/ansible-playbook", line 148, in main
>> >>>
>> >>>     extra_vars = utils.combine_vars(extra_vars,
>> >>> utils.parse_kv(extra_vars_opt))
>> >>>
>> >>>   File "/Library/Python/2.7/site-packages/ansible/utils/__init__.py",
>> >>> line 621, in parse_kv
>> >>>
>> >>>     vargs = split_args(args)
>> >>>
>> >>>   File "/Library/Python/2.7/site-packages/ansible/utils/splitter.py",
>> >>> line 148, in split_args
>> >>>
>> >>>     raise Exception("error while splitting arguments, either an
>> >>> unbalanced jinja2 block or quotes")
>> >>>
>> >>> Exception: error while splitting arguments, either an unbalanced 
>> jinja2
>> >>> block or quotes
>> >>>
>> >>>
>> >>> Has anyone come across such a situation before ?
>> >>>
>> >>> --
>> >>> You received this message because you are subscribed to the Google 
>> Groups
>> >>> "Ansible Project" group.
>> >>> To unsubscribe from this group and stop receiving emails from it, 
>> send an
>> >>> email to [email protected].
>> >>> To post to this group, send email to [email protected].
>> >>> To view this discussion on the web visit
>> >>> 
>> https://groups.google.com/d/msgid/ansible-project/a97b244f-f05b-4c72-a95a-ad48974c853d%40googlegroups.com
>> .
>> >>> For more options, visit https://groups.google.com/d/optout.
>> >>
>> >>
>> > --
>> > You received this message because you are subscribed to the Google 
>> Groups
>> > "Ansible Project" group.
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> an
>> > email to [email protected] <javascript:>.
>> > To post to this group, send email to [email protected] 
>> <javascript:>.
>> > To view this discussion on the web visit
>> > 
>> https://groups.google.com/d/msgid/ansible-project/ebe17377-536f-48d6-a570-1af4150ab75c%40googlegroups.com
>> .
>> >
>> > For more options, visit https://groups.google.com/d/optout.
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Ansible Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/CAG9juEqT_7yNCyFg%2BCO15EyhNTR7wiqE8hLoPpzUHCLdKrLHAQ%40mail.gmail.com
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/ecc87955-2887-4ada-b5ee-d6d208b61ab0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to