
Puppet 버전 사용
주인:인형서버 6.7
고객:꼭두각시 에이전트 6.10
잘 작동하는 다른 모듈에 다른 Augeas 코드가 있습니다.
예 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
...
[domain/abc.def.net] 섹션에서 ipa_hostname 값을 업데이트/확인해야 합니다. 이 augeas 코드에서 내가 뭘 잘못하고 있는지 알 수 없습니다.
augeas { "sssd.conf":
context => "/files/etc/sssd/sssd.conf",
changes => [
"set ipa_hostname xxx",
],
notify => Service["sssd"]
}
디버그 출력은 다음과 같습니다.
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
답변1
며칠이 걸렸지 만 마침내 이것을 알아 냈습니다. 동일한 파일의 다른 섹션을 처리하는 방법을 보여주기 위해 몇 가지 추가 코드를 추가했습니다. 도움이 되었기를 바랍니다.
$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"]
}