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.

Reply via email to