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

Управление ~ / .ssh / config для пользователей, использующих марионетку?

Как мне настроить строку «Пользователь» в файле ~ / .ssh / config, используя файлы шаблонов ERB в Puppet, чтобы он содержал правильное имя пользователя, которое соответствует имени учетной записи?

class accounts_global::tharold {
account { 'tharold':
    ensure => present,
    }
file { "/home/tharold/.ssh/config" :
    require => Account['tharold'],
    owner   => 'tharold',
    group   => 'tharold',
    mode    => '0600',
    content => template('accounts_global/user_ssh_config.erb'),
    }
} 

Содержимое файла user_ssh_config.erb выглядит так:

Host ssh.example.com
Port 22
User tharold
IdentityFile ~/.ssh/ssh-key

Вопрос в том, как должен выглядеть <% = something =%>, чтобы заменить «User tharold» в файле шаблона на имя учетной записи пользователя? Этот файл конфигурации ERB будет использоваться для нескольких пользователей, поэтому мне нужно параметризовать эту часть файла.

Попытка использовать <% = @name%> заканчивается помещением в файл "accounts_global :: tharold".

Вам нужно изменить свой класс на определение, как показано ниже, чтобы его можно было повторно использовать для других пользователей:

define accounts_global::account () {

  account { $name:
    ensure => present,
  }

  file { "/home/${name}/.ssh/config" :
    require => Account[$name],
    owner   => $name,
    group   => $name,
    mode    => '0600',
    content => template('accounts_global/user_ssh_config.erb'),
  }
}

Используйте это для своего ~/.ssh/config Шаблон ERB:

Host ssh.example.com
Port 22
User <%= @name %>
IdentityFile ~/.ssh/ssh-key

Затем добавьте это в свой манифест Puppet:

accounts_global::account { 'tharold': }

Кстати, проходить User в вашей конфигурации SSH, если удаленное имя пользователя не отличается - по умолчанию SSH пытается подключиться с использованием текущего имени пользователя.

class accounts_global::tharold {
    account { 'tharold':
        ensure => present,
    }

    $ssh_user = 'tharold'
    file { "/home/tharold/.ssh/config" :
       require => Account['tharold'],
       owner   => 'tharold',
       group   => 'tharold',
       mode    => '0600',
       content => template('accounts_global/user_ssh_config.erb'),
    }
} 

Тогда ваш шаблон выглядит как

Host ssh.example.com
Port 22
User <%= ssh_user %>
IdentityFile ~/.ssh/ssh-key