
Verwenden von Puppet-Versionen
Meister:Puppetserver 6.7
Klient:Puppet-Agent 6.10
Ich habe anderen Augeas-Code in anderen Modulen, der einwandfrei funktioniert.
Beispiel 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
...
Ich muss den ipa_hostname-Wert im Abschnitt [domain/abc.def.net] aktualisieren/überprüfen. Ich kann nicht herausfinden, was ich mit diesem Augeas-Code falsch mache
augeas { "sssd.conf":
context => "/files/etc/sssd/sssd.conf",
changes => [
"set ipa_hostname xxx",
],
notify => Service["sssd"]
}
Hier ist die Debug-Ausgabe:
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
Antwort1
Es hat ein paar Tage gedauert, aber ich habe es endlich herausgefunden. Ich habe zusätzlichen Code hinzugefügt, um zu zeigen, wie man einen anderen Abschnitt in derselben Datei anspricht. Hoffe, das hilft.
$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"]
}