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

Puppet - удаление авторизованного пользователя?

Я только начал изучать марионетку и столкнулся с проблемой, которую мне было интересно, знает ли кто-нибудь, как ее исправить. Я пытаюсь удалить пользователя, я получаю сообщение об ошибке, в котором говорится, что он вошел в систему, поэтому его нельзя удалить.

Теперь в этом случае я знаю, на какой сервер они вошли, поэтому я могу просто вывести пользователя из системы и продолжить оттуда. Мой вопрос, однако, что вы делаете, когда не знаете, на какие серверы они вошли? Имея в виду, что серверов может быть много.

Есть ли опция принудительного удаления или способ выхода пользователей из марионетки?

Код ниже:

user {'art':

ensure => absent,

}

Ошибки:

Ошибка: не удалось удалить изображение пользователя: выполнение '/ usr / sbin / userdel art' вернулось 8: userdel: пользовательское искусство в настоящее время находится в системе

Ошибка: / Stage [main] / Main / Node [demo] / User [art] / sure: изменение с настоящего на отсутствующее не удалось: не удалось удалить пользовательский рисунок: возвращено выполнение '/ usr / sbin / userdel art' 8: userdel : пользовательское искусство в настоящее время находится в системе

В соответствии с эта почта, вы можете отключить пользователей, используя pkill -STOP -u USERNAME.
Вы можете создать определение ресурса что-то это в марионетке:

define kill_and_delete {
    exec { "killing $title":
        command => "pkill -STOP -u $title",
        onlyif  => "grep '^$title' /etc/passwd",
        before => User[$title],
    }
    user { $title: ensure => absent}
}

После этого вы используете его так:
kill_and_delete {'art': }
Заметка: Я не тестировал это.
видеть заказ ресурсов - до и требуется и ссылка на тип - exec.

Вы завершаете сеанс, убивая его родительский процесс, называемый лидером сеанса. Узнайте, с каким процессом это происходит:

пс -dN | grep pts / 3

или

Как упомянул @Nitz

pkill -9 -u имя пользователя

И для справки проверьте эту ссылку:

Как я могу заставить других пользователей выйти из системы?

Я столкнулся с той же проблемой при удалении пользователя, у которого выполнялись процессы. Я протестировал свое решение на нашем производственном сервере и поэтому могу предоставить действительное решение, в котором я создаю пользователей в отдельном классе с использованием переменных «обеспечения». И на основе переменной я решаю, вызывать ли последовательность остановки процесса следующим образом:

define your_class::user (
  $user   = $name,
  $ensure = 'present',
){

  # only call when user gets removed
  if $ensure == 'absent' {
    exec {
      "killing ${user}":
        command => "pkill -9 -u ${user}",
        # need to check if user exists and processes are running
        # otherwise command would fail with no processes
        onlyif  => "grep '^${user}' /etc/passwd && ps -u ${user}",
        # run before user gets removed
        before  => User[$user];
    }
  }

  # create/remove user with managed home
  user {
    $user:
      ensure     => $ensure,
      home       => "/home/${user}",
      managehome => true,
      shell      => '/bin/bash',
  }
}