Steven Truong
2012-Jun-07 02:30 UTC
[Puppet Users] Hiera with Yaml and Json backend does not seem to work for me.
Dear all, I tried to use both yaml and json backends because some of my users might not know Yaml. However, when I ran hiera from the CLI, I could only retrieve things from YAML and not in JSON. The objects in JSON are not overlapped with those in YAML. I could retrieve all objects when I ran YAML or JSON alone. Is it possible to use both YAML and JSON as Hiera''s backends? Or just JSON + puppet or YAML + puppet or MySQL/Redis + puppet? Is Puppet backend required as the second tier? Thanks, Steven. cat hiera.yaml --- :backends: - yaml - json :hierarchy: - %{operatingsystem} - common :yaml: :datadir: /etc/puppet/hierayaml_data :json: :datadir: /etc/puppet/hierajson_data ls hiera*data hierajson_data: common.json hierayaml_data: common.yaml Ubuntu.yaml -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
jcbollinger
2012-Jun-07 15:23 UTC
[Puppet Users] Re: Hiera with Yaml and Json backend does not seem to work for me.
On Jun 6, 9:30 pm, Steven Truong <midai...@gmail.com> wrote:> I tried to use both yaml and json backends because some of my users > might not know Yaml.They might think they don''t, but YAML is a superset of JSON, so any of your users who know JSON also know a big chunk of YAML -- in all likelihood, enough YAML to encode data for hiera.> However, when I ran hiera from the CLI, I could > only retrieve things from YAML and not in JSON. The objects in JSON > are not overlapped with those in YAML. I could retrieve all objects > when I ran YAML or JSON alone. > > Is it possible to use both YAML and JSON as Hiera''s backends? Or just > JSON + puppet or YAML + puppet or MySQL/Redis + puppet? Is Puppet > backend required as the second tier?As I understand it, hiera can query multiple backends for the same key, but it is possible that it chooses only one backend for each hierarchy level. The Puppet backend is not required at all as far as I can tell; if you do not want to look up data in your Puppet variables then you should not use it.> cat hiera.yaml > --- > :backends: > - yaml > - json > > :hierarchy: - %{operatingsystem} > - common > :yaml: > :datadir: /etc/puppet/hierayaml_data > > :json: > :datadir: /etc/puppet/hierajson_data > > ls hiera*data > hierajson_data: > common.json > > hierayaml_data: > common.yaml Ubuntu.yamlI guess you were hoping that for hierarchy level "common", hiera would consult both common.json and common.yaml. I don''t think it works that way. As I understand it, Hiera will choose *one* backend for each hierarchy level, based on the order in which the backends are listed and on whether the corresponding data source is present. If you really need separate YAML and JSON data, then this may work better: :backends: - yaml - json :hierarchy: - %{operatingsystem} - common_yaml - common_json :yaml: :datadir: /etc/puppet/hierayaml_data :json: :datadir: /etc/puppet/hierajson_data ----- Of course, you would also need to rename the YAML and JSON data files correspondingly. Alternatively, just use YAML. Any JSON-only people will feel almost at home right away, and any extra bits they need for this work should be easy to pick up. That will also avoid problems revolving around which file should contain each item. John -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Matthaus Litteken
2012-Jun-07 18:20 UTC
Re: [Puppet Users] Re: Hiera with Yaml and Json backend does not seem to work for me.
Steven, It looks like you may be running into http://projects.puppetlabs.com/issues/12122, which has a potential fix awaiting review (https://github.com/puppetlabs/hiera/pull/68). The fix will be going into the current rc series of Hiera. On Thu, Jun 7, 2012 at 8:23 AM, jcbollinger <John.Bollinger@stjude.org> wrote:> > On Jun 6, 9:30 pm, Steven Truong <midai...@gmail.com> wrote: >> I tried to use both yaml and json backends because some of my users >> might not know Yaml. > > > They might think they don''t, but YAML is a superset of JSON, so any of > your users who know JSON also know a big chunk of YAML -- in all > likelihood, enough YAML to encode data for hiera. > > >> However, when I ran hiera from the CLI, I could >> only retrieve things from YAML and not in JSON. The objects in JSON >> are not overlapped with those in YAML. I could retrieve all objects >> when I ran YAML or JSON alone. >> >> Is it possible to use both YAML and JSON as Hiera''s backends? Or just >> JSON + puppet or YAML + puppet or MySQL/Redis + puppet? Is Puppet >> backend required as the second tier? > > > As I understand it, hiera can query multiple backends for the same > key, but it is possible that it chooses only one backend for each > hierarchy level. The Puppet backend is not required at all as far as > I can tell; if you do not want to look up data in your Puppet > variables then you should not use it. > > >> cat hiera.yaml >> --- >> :backends: >> - yaml >> - json >> >> :hierarchy: - %{operatingsystem} >> - common >> :yaml: >> :datadir: /etc/puppet/hierayaml_data >> >> :json: >> :datadir: /etc/puppet/hierajson_data >> >> ls hiera*data >> hierajson_data: >> common.json >> >> hierayaml_data: >> common.yaml Ubuntu.yaml > > > I guess you were hoping that for hierarchy level "common", hiera would > consult both common.json and common.yaml. I don''t think it works that > way. As I understand it, Hiera will choose *one* backend for each > hierarchy level, based on the order in which the backends are listed > and on whether the corresponding data source is present. > > If you really need separate YAML and JSON data, then this may work > better: > > :backends: > - yaml > - json > > :hierarchy: - %{operatingsystem} > - common_yaml > - common_json > > :yaml: > :datadir: /etc/puppet/hierayaml_data > > :json: > :datadir: /etc/puppet/hierajson_data > > ----- > > Of course, you would also need to rename the YAML and JSON data files > correspondingly. > > Alternatively, just use YAML. Any JSON-only people will feel almost > at home right away, and any extra bits they need for this work should > be easy to pick up. That will also avoid problems revolving around > which file should contain each item. > > > John > > -- > You received this message because you are subscribed to the Google Groups "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
midair77
2012-Jun-07 23:27 UTC
[Puppet Users] Re: Hiera with Yaml and Json backend does not seem to work for me.
Thanks Matthaus and jcbollinger for looking into this. I think that this is clearly a bug because my data in json and yaml are not about the same things. In Yaml, I only have ssh_users and in JSON I have dnsservers. When I queried for dnsservers, I got nil. It is good to know that using multiple backends do work but right now a bug prevents this to work correctly. Steven. On Jun 7, 11:20 am, Matthaus Litteken <matth...@puppetlabs.com> wrote:> Steven, > It looks like you may be running intohttp://projects.puppetlabs.com/issues/12122, which has a potential fix > awaiting review (https://github.com/puppetlabs/hiera/pull/68). The fix > will be going into the current rc series of Hiera. > > > > > > > > On Thu, Jun 7, 2012 at 8:23 AM, jcbollinger <John.Bollin...@stjude.org> wrote: > > > On Jun 6, 9:30 pm, Steven Truong <midai...@gmail.com> wrote: > >> I tried to use both yaml and json backends because some of my users > >> might not know Yaml. > > > They might think they don''t, but YAML is a superset of JSON, so any of > > your users who know JSON also know a big chunk of YAML -- in all > > likelihood, enough YAML to encode data for hiera. > > >> However, when I ran hiera from the CLI, I could > >> only retrieve things from YAML and not in JSON. The objects in JSON > >> are not overlapped with those in YAML. I could retrieve all objects > >> when I ran YAML or JSON alone. > > >> Is it possible to use both YAML and JSON as Hiera''s backends? Or just > >> JSON + puppet or YAML + puppet or MySQL/Redis + puppet? Is Puppet > >> backend required as the second tier? > > > As I understand it, hiera can query multiple backends for the same > > key, but it is possible that it chooses only one backend for each > > hierarchy level. The Puppet backend is not required at all as far as > > I can tell; if you do not want to look up data in your Puppet > > variables then you should not use it. > > >> cat hiera.yaml > >> --- > >> :backends: > >> - yaml > >> - json > > >> :hierarchy: - %{operatingsystem} > >> - common > >> :yaml: > >> :datadir: /etc/puppet/hierayaml_data > > >> :json: > >> :datadir: /etc/puppet/hierajson_data > > >> ls hiera*data > >> hierajson_data: > >> common.json > > >> hierayaml_data: > >> common.yaml Ubuntu.yaml > > > I guess you were hoping that for hierarchy level "common", hiera would > > consult both common.json and common.yaml. I don''t think it works that > > way. As I understand it, Hiera will choose *one* backend for each > > hierarchy level, based on the order in which the backends are listed > > and on whether the corresponding data source is present. > > > If you really need separate YAML and JSON data, then this may work > > better: > > > :backends: > > - yaml > > - json > > > :hierarchy: - %{operatingsystem} > > - common_yaml > > - common_json > > > :yaml: > > :datadir: /etc/puppet/hierayaml_data > > > :json: > > :datadir: /etc/puppet/hierajson_data > > > ----- > > > Of course, you would also need to rename the YAML and JSON data files > > correspondingly. > > > Alternatively, just use YAML. Any JSON-only people will feel almost > > at home right away, and any extra bits they need for this work should > > be easy to pick up. That will also avoid problems revolving around > > which file should contain each item. > > > John > > > -- > > You received this message because you are subscribed to the Google Groups "Puppet Users" group. > > To post to this group, send email to puppet-users@googlegroups.com. > > To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. > > For more options, visit this group athttp://groups.google.com/group/puppet-users?hl=en.-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.