"I created a role with default variables using a nested syntax and not I'd
like to override just a few of those attributes in the playbook"

There is no problem in doing this.

You can use parameterized roles, include a variable file, use set_fact, or
all sorts of things.

Now what you are asking is something different -- you should change the
hash merge behavior in ansible.cfg.



On Sun, Dec 1, 2013 at 8:07 PM, Eric Chaves <[email protected]> wrote:

> Hi Kahil,
>
> Thanks for the suggestion, but the problem remains. You haven't override
> the default value, but instead declared a second flat variable. The problem
> with this approach is that if do this for every paramet I'll double the
> number of used variables. Also I will have to "flatten" them all which in
> practice would be easier to just flatten the defaults.
>
> But I do wish to have the nested syntax because some of my variables
> become very confusing when flattening and I also found it better for
> organization and clarity in the yml.
>
> Still hoping to find a way to do it.
>
> Cheers,
>
>
> --
> Eric Chaves
> (11) 98139-9880
>
>
> 2013/12/1 Kahlil Hodgson <[email protected]>
>
>> There is a variable merging setting, but I prefer being explicit about
>> having a complex variable, parts of which can be overridden (rather
>> than magically "doing the right thing").
>>
>> ---
>> - hosts: myserver
>> - roles:
>>   - mysql
>> - vars:
>>     mysql_password: abcdef
>> - tasks:
>>     - debug: msg="{{ mysql_password | default(mysql.password) }}"
>>
>> This way it is clear that the password could have come from two
>> different places.
>>
>> Hope this helps.
>>
>> K
>>
>>
>> Kahlil (Kal) Hodgson                       GPG: C9A02289
>> Head of Technology                         (m) +61 (0) 4 2573 0382
>> DealMax Pty Ltd                            (w) +61 (0) 3 9008 5281
>>
>> Suite 1415
>> 401 Docklands Drive
>> Docklands VIC 3008 Australia
>>
>> "All parts should go together without forcing.  You must remember that
>> the parts you are reassembling were disassembled by you.  Therefore,
>> if you can't get them together again, there must be a reason.  By all
>> means, do not use a hammer."  -- IBM maintenance manual, 1925
>>
>>
>>
>> On 2 December 2013 11:04, Eric Chaves <[email protected]> wrote:
>> > Hi folks,
>> >
>> > I created a role with default variables using a nested syntax and not
>> I'd
>> > like to override just a few of those attributes in the playbook, but
>> > whenever I do it I end up redefining the entire variable na loosing the
>> > defaults for the non overrided values.
>> >
>> > For example, in role/mysql/defaults/main.yml:
>> > ---
>> >   mysql:
>> >       address: 127.0.0.1
>> >       admin: admin
>> >       password: 12345
>> >
>> > Then in the my_server.yml:
>> > ---
>> > - hosts: myserver
>> > - roles:
>> >   - mysql
>> > - vars:
>> >     mysql:
>> >        password: abcdef
>> >
>> > but once I do this mysql.address and mysql.admin become undefined. I
>> have
>> > tried the mysql[address] syntax but it didn't work.
>> >
>> > Is it possible to override just a few set of nested attributes?
>> >
>> > Thanks for the help,
>> >
>> > Eric
>> >
>> > --
>> > 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].
>> > For more options, visit https://groups.google.com/groups/opt_out.
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "Ansible Project" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/ansible-project/klSyFJxtLqg/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>>
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>  --
> 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].
> For more options, visit https://groups.google.com/groups/opt_out.
>



-- 
Michael DeHaan <[email protected]>
CTO, AnsibleWorks, Inc.
http://www.ansibleworks.com/

-- 
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].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to