
Usando versiones de títeres
Maestro:servidor de marionetas 6.7
Cliente:agente-títere 6.10
Tengo otro código Augeas en otros módulos que funciona bien.
Ejemplo sssd.conf
[sssd]
services = nss, sudo, pam, ssh
config_file_version = 2
domains = abc.def.net
[domain/abc.def.net]
cache_credentials = True
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = xxx.abc.def.net
...
Necesito actualizar/verificar el valor ipa_hostname en la sección [dominio/abc.def.net]. No puedo entender qué estoy haciendo mal con este código augeas
augeas { "sssd.conf":
context => "/files/etc/sssd/sssd.conf",
changes => [
"set ipa_hostname xxx",
],
notify => Service["sssd"]
}
Aquí está el resultado de depuración:
Debug: Augeas[sssd.conf](provider=augeas): Opening augeas with root /, lens path , flags 64
Debug: Augeas[sssd.conf](provider=augeas): Augeas version 1.12.0 is installed
Debug: Augeas[sssd.conf](provider=augeas): Will attempt to save and only run if files changed
Debug: Augeas[sssd.conf](provider=augeas): sending command 'set' with params ["/files/etc/sssd/sssd.conf/ipa_hostname", "no"]
Debug: Augeas[sssd.conf](provider=augeas): Put failed on one or more files, output from /augeas//error:
Debug: Augeas[sssd.conf](provider=augeas): /augeas/files/etc/sssd/sssd.conf/error = put_failed
Debug: Augeas[sssd.conf](provider=augeas): /augeas/files/etc/sssd/sssd.conf/error/path = /files/etc/sssd/sssd.conf/
Debug: Augeas[sssd.conf](provider=augeas): /augeas/files/etc/sssd/sssd.conf/error/lens = /opt/puppetlabs/puppet/share/augeas/lenses/dist/sssd.aug:33.13-.53:
Debug: Augeas[sssd.conf](provider=augeas): /augeas/files/etc/sssd/sssd.conf/error/message = Failed to match tree under /
{ "target" = "sssd" }
{ "target" = "domain/test.hfgs.net" }
{ "target" = "nss" }
{ "target" = "pam" }
{ "target" = "sudo" }
{ "target" = "autofs" }
{ "target" = "ssh" }
{ "target" = "pac" }
{ "ipa_hostname" = "xxx" }
with pattern
( { /#comment/ = /[^\t\n\r ].*[^\t\n\r ]|[^\t\n\r ]/ }
| { })*
{ /target/ = /[^]\n\r]+/ }*
Debug: Augeas[sssd.conf](provider=augeas): Closed the augeas connection
Error: /Stage[main]/Testaugeas/Augeas[sssd.conf]: Could not evaluate: Save failed, see debug output for details
Respuesta1
Me tomó un par de días pero finalmente lo descubrí. Agregué un código adicional para mostrar cómo abordar otra sección en el mismo archivo. Espero que esto ayude.
$domain = abc.net
augeas { "sssd.conf ipa_hostname":
lens => 'sssd.lns',
incl => '/etc/sssd/sssd.conf',
changes => [
"set target[ . = 'sssd']/services 'nss, sudo, pam, ssh'",
"set target[ . = 'sssd']/config_file_version 2",
"set target[ . = 'sssd']/domains ${domain}",
"set target[ . = 'domain/${domain}']/ipa_hostname ${hostname}.${domain}",
],
notify => Service["sssd"]
}