hiera y facts

6 views
Skip to first unread message

Arnau Bria

unread,
Apr 15, 2015, 6:02:50 AM4/15/15
to puppet-user...@googlegroups.com
Hola,

estoy liado con hiera y me he encontrado que los facts que son listas
(por ejemplo, en mi caso vlans) los trata como un string.

# facter vlans
311,317

con lo cual, en hiera:

:hierarchy:
- "vlans/%{vlans}"
- "puppet_role/%{puppet_role}"
- "nodes/%{clientcert}"
- common

el fichero queda como:

vlans/311,317.yaml

que es bastante feo.

existe la posibilidad de hacer algún split y que decirle a hiera que
lea el primer campo?

* he pensado en crear un custom fact y hacer el split allí y sólo
mostrar el campo que yo quiero, pero no se si existe algo más directo.

Mil gracias!
Arnau

Matthias Saou

unread,
Apr 15, 2015, 6:17:53 AM4/15/15
to puppet-user...@googlegroups.com
Si lo que quieres es hacer la busqueda en function de la VLAN, pero que
un nodo puede tener varias, ahi esta el primer problema : Como sabes
cual tiene que ser la VLAN que se tendra en cuenta?

Si tienes la respuesta, bien, y a mi tampoco se me ocurre nada mejor
que de ponerla dentro de un custom fact ;-)

Matthias

--
Matthias Saou ██ ██
██ ██
Web: http://matthias.saou.eu/ ██████████████
Mail/XMPP: matt...@saou.eu ████ ██████ ████
██████████████████████
GPG: 4096R/E755CC63 ██ ██████████████ ██
8D91 7E2E F048 9C9C 46AF ██ ██ ██ ██
21A9 7A51 7B82 E755 CC63 ████ ████

Arnau Bria

unread,
Apr 15, 2015, 6:31:29 AM4/15/15
to puppet-user...@googlegroups.com
On Wed, 15 Apr 2015 12:17:50 +0200
Matthias Saou wrote:

Hola Matthias,

[...]

> Si lo que quieres es hacer la busqueda en function de la VLAN, pero
> que un nodo puede tener varias, ahi esta el primer problema : Como
> sabes cual tiene que ser la VLAN que se tendra en cuenta?

bueno, viendo como lee las VLANS (utils/vlans.rb):

File.read('/proc/net/vlan/config')

entiendo que lee dicho fichero donde salen por order(?)

VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.311 | 311 | eth0
eth0.317 | 317 | eth0

eso ya me vale porque sólo tengo dos casos...


> Si tienes la respuesta, bien, y a mi tampoco se me ocurre nada mejor
> que de ponerla dentro de un custom fact ;-)

gracias!!!
** de echo era una duda más genérica de como tratar facts que saquen
lsitas ... en mi caso sólo veo interfcaes y vlans, pero me ha venido a
la acbeza la pregunta.

> Matthias
salu2,
Arnau

Matthias Saou

unread,
Apr 15, 2015, 6:42:49 AM4/15/15
to puppet-user...@googlegroups.com
On Wed, 15 Apr 2015 12:31:25 +0200
Arnau Bria <arnau...@gmail.com> wrote:

> ** de echo era una duda más genérica de como tratar facts que saquen
> lsitas ... en mi caso sólo veo interfcaes y vlans, pero me ha venido a
> la acbeza la pregunta.

Pues si... esas "listas" (strings con commas...) van bien para usar
split($::factname,',') en los manifests, pero no para hiera.

Con suerte los facts de facter 2 que no seran strings serviran mejor...
no sé se sera posible algo como "vlans/%{::vlan_list[1]}" si algun dia
tienes un fact que devuelve un array en $::vlan_list y solo te interesa
el primero...

Alex Muntada

unread,
Apr 15, 2015, 8:45:25 AM4/15/15
to puppet-user...@googlegroups.com
Arnau Bria:


:hierarchy:
  - "vlans/%{vlans}"
  - "puppet_role/%{puppet_role}"
  - "nodes/%{clientcert}"
  - common
 
Tal vez sería mejor cambiar el enfoque y quitar vlans de la jerarquía porque creo que un fact con varios valores posibles no aporta nada para las búsquedas.

En realidad todos los nodos que tienen una misma vlan probablemente tengan algo en común y eso se puede plasmar en un rol, que ya podrías usar a continuación, ¿no?

Un saludo,
Alex

Jordi Clariana

unread,
Apr 15, 2015, 9:04:20 AM4/15/15
to puppet-user...@googlegroups.com
Hola,

Sobre la posibilidad de usar arrays or hashes en hiera no es posible (lo que es una pena):
Notes:
Hiera can only interpolate variables whose values are strings. (Numbers from Puppet are also passed as strings and can be used safely.) You cannot interpolate variables whose values are booleans, numbers not from Puppet, arrays, hashes, resource references, or an explicit undef value.
Additionally, Hiera cannot interpolate an individual element of any array or hash, even if that element’s value is a string.

Y para poder usar hashes/arrays en facters hace falta poner este setting en el puppet.conf:
stringify_facts=false

Aunque para Puppet 4 eso será por defecto.

No obstante nada de esto solucionaría tu caso :)

Saludos.

Jordi

--
Has recibido este mensaje porque estás suscrito al grupo "puppet-users-barcelona" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a puppet-users-barc...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a puppet-user...@googlegroups.com.

Arnau Bria

unread,
Apr 15, 2015, 9:08:21 AM4/15/15
to puppet-user...@googlegroups.com
Si, si, se puede enfocar de varias maneras (no se si el role, pero
algo se me puede ocurrir), estoy de acuerdo. La cuestión es qeu ahora
mismo estaba utilizando vlans para el resolv.conf y al "portar" esa
conf al nuevo modelo me surgió la duda.
Sólo he visto dos facts que deveulven listas y me preguntbaa como
tratarlos....

> Un saludo,
> Alex
gracias!
Arnau

Arnau Bria

unread,
Apr 16, 2015, 3:15:40 AM4/16/15
to puppet-user...@googlegroups.com
On Wed, 15 Apr 2015 15:03:59 +0200
Jordi Clariana wrote:

> Hola,
Hola Jordi,

> Sobre la posibilidad de usar arrays or hashes en hiera no es posible
> (lo que es una pena):
> http://docs.puppetlabs.com/hiera/1/variables.html
>
> Notes:
> Hiera can only interpolate variables whose values are strings.
> (Numbers from Puppet are also passed as strings and can be used
> safely.) You cannot interpolate variables whose values are booleans,
> numbers not from Puppet, arrays, hashes, resource references, or an
> explicit undef value. Additionally, Hiera cannot interpolate an
> individual element of any array or hash, even if that element’s value
> is a string.

gracias!!

> Y para poder usar hashes/arrays en facters hace falta poner este
> setting en el puppet.conf:
> stringify_facts=false
> https://docs.puppetlabs.com/puppet/latest/reference/lang_facts_and_builtin_vars.html#data-types
>
> Aunque para Puppet 4 eso será por defecto.
>
> No obstante nada de esto solucionaría tu caso :)

Bueno, visto lo visto está claro que facts con varios valores no son
muy comunes :-)

> Saludos.
>
> Jordi
salu2,
ARnau
Reply all
Reply to author
Forward
0 new messages