Рейтинг:0

Puppet/Augeas -- команда ins работала на RH6, не работала на RH7

флаг cn

У меня есть эта конструкция в моем кукольном модуле, чтобы добавить строку в /etc/sudoers после последней строки «По умолчанию»:

  augeas { "sudoers.ssh_auth_sock":
    объектив => "Sudoers.lns",
    вкл => "/etc/sudoers",
    onlyif => "соответствовать Defaults/env_keep/var[. = 'SSH_AUTH_SOCK'] size==0",
    изменения => [
       # Создаем новую строку Defaults для двух переменных
       "Входит в значения по умолчанию после значения по умолчанию [последний ()]",
       # Сделать эту строку по умолчанию типа +=
       "очистить значения по умолчанию [last()]/env_keep/append",
       # присвоить значения двум переменным
       "установить значения по умолчанию [last()]/env_keep/var[1] SSH_AUTH_SOCK",
    ],
  }

Он отлично работает на моих машинах RedHat 6.

Примечание: Augeas[sudoers.ssh_auth_sock](provider=augeas):
--- /etc/sudoers 2021-10-12 13:30:52.880901115 +0000
+++ /etc/sudoers.augnew 2021-10-12 13:31:28.697931561 +0000
@@ -77,6 +77,7 @@
 # По умолчанию env_keep += "HOME"

 По умолчанию secure_path = /sbin:/bin:/usr/sbin:/usr/bin
+ По умолчанию env_keep += SSH_AUTH_SOCK

 ## Далее идет основная часть: какие пользователи могут запускать какое программное обеспечение

Примечание: /Stage[main]/Sudoers/Augeas[sudoers.ssh_auth_sock]/returns: выполнено успешно

Но на моих машинах RedHat 7 это не работает:

Предупреждение: Augeas[sudoers.ssh_auth_sock](provider=augeas): сбой при загрузке одного или нескольких файлов, см. отладку для /augeas//вывода ошибок
Ошибка: /Stage[main]/Sudoers/Augeas[sudoers.ssh_auth_sock]: не удалось оценить: ошибка отправки команды 'ins' с параметрами ["Defaults", "after", "/files/etc/sudoers/Defaults[last( )]"]/Ошибка отправки команды 'ins' с параметрами ["Defaults", "after", "/files/etc/sudoers/Defaults[last()]"]

Может ли кто-нибудь помочь мне понять, что изменилось или что я сделал неправильно, чтобы я мог заставить этот фрагмент работать в обеих средах?

флаг cn
`загрузка не удалась` в журналах указывает на то, что Augeas не смог проанализировать один или несколько файлов. Можете ли вы запустить «ошибки augtool» и опубликовать вывод?
hymie avatar
флаг cn
Спасибо @raphink - проблема решена.
Рейтинг:1
флаг cn

Спасибо @raphink

ошибки авгтула сказал

Ошибка в /etc/sudoers:96.12 (parse_failed)
  Итерированная линза совпала меньше, чем должна
  Объектив: /usr/share/augeas/lenses/dist/sudoers.aug:530.10-.70:
    Последнее совпадение: /usr/share/augeas/lenses/dist/sep.aug:47.18-.40:
    Далее (нет совпадений): /usr/share/augeas/lenses/dist/sudoers.aug:500.16-501.47:

Итак, я проверил строку 96 из /etc/sudoers и он сказал

@includedir /etc/sudoers.d

По всей видимости, @includedir теперь является допустимым синтаксисом в дополнение к синтаксису старого стиля #includedir ... но (мой) объектив augeas не распознает новую версию.

(* Просмотр: включено *)
пусть включеноir =
  [ключ /#include(dir)?/ . Сеп.пространство . сохранить Rx.fspath . эол]

я изменил @ к # в /etc/sudoers и это, кажется, решило проблему.

флаг cn
Отлично. Если последняя версия Augeas не поддерживает этот синтаксис, пожалуйста, создайте проблему (или, что еще лучше, предоставьте PR, чтобы исправить это).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.