Назад | Перейти на главную страницу

Как использовать модуль saz-sudo puppet для развертывания моего собственного файла sudoers с помощью hiera?

У меня установлен saz-sudo и я создал на нем модуль site_sudo (надеюсь). Вот что у меня в файле site_sudo / manifest / init.pp:

class { 'site_sudo': }
    sudo::conf { 'web':
      source => 'puppet:///files/etc/sudoers',
    }
    sudo::conf { 'syseng':
      priority => 10,
      content  => "%sysadm ALL=(ALL) NOPASSWD: ALL",
    }

include sudo

Независимо от того, что я делаю, файл sudoers на целевой машине всегда перезаписывается файлом sudoers.rhel6 из модуля saz-sudo.

Я тоже использую common.yaml:

classes:
  - site_sudo

Согласно ПРОЧТИ МЕНЯ, вам нужно отправить параметр в sudo класс:

class { 'sudo':
  config_file_replace => true,
}

вместо простого

include sudo

который сшибает /etc/sudoers так как заявил.

Это точная копия из вашего файла? В class { 'site_sudo': } строка будет включать этот класс в конфигурацию, а не определять класс, как вы должны делать в init.pp для модуля. Это предотвратит применение остальной конфигурации в файле (поскольку этот файл оценивается только для загрузки этого класса; другие строки не будут оцениваться, как в случае import заявление).

Вместо этого это должно выглядеть так:

class site_sudo { 
  include sudo
  sudo::conf { 'web':
    source => 'puppet:///files/etc/sudoers',
  }
  sudo::conf { 'syseng':
    priority => 10,
    content  => "%sysadm ALL=(ALL) NOPASSWD: ALL",
  }
}

Проверьте ПРОЧТИ МЕНЯ и класс sudo :: configs.

Используемое соглашение довольно странное (ИМХО, проще было бы просто добавить хэш-параметр к классу sudo) ... но, похоже, он неплохо работает с Hiera.

Для ваших примерных значений:

classes:
  - sudo 
  - sudo::configs

sudo::configs:
    'syseng':
        'priority'  : 10
        'content'   : "%sysadm ALL=(ALL) NOPASSWD: ALL"

saz / sudo предназначен для использования файла sudoers.d и #include его. Вот почему он перезаписывает ваш файл sudoers новым, чтобы убедиться, что это правильный файл. Эти объявления sudo :: conf приведут к тому, что файл будет отображаться в /etc/sudoers.d вместо непосредственного изменения / etc / sudoers.