Как установить значение директивы ipa_hostname в sssd.conf с помощью Augeas

Использование версий Puppet

Мастер: puppetserver 6.7

Клиент: puppet-agent 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

...

Мне нужно обновить / проверить значение ipa_hostname в разделе [domain / abc.def.net]. Я не могу понять, что я делаю не так с этим кодом 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
задан 1 September 2021 в 20:50
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"]
  }
2
ответ дан 2 September 2021 в 17:09

Теги

Похожие вопросы