может я не правильно понимаю:
Я хотел бы определить некоторые задачи через марионетку, которые применяются к все подключенные хосты.
Это мой site.pp:
node default {
## Add default user ##
user { 'test':
ensure => present,
managehome => true,
password => '$6$XYZ',
}
## Create sudoers ##
class { 'sudo': }
sudo::conf {
'test':
priority => 60,
content => "test ALL=(ALL) ALL"
}
## Install bareos client ##
class {
'bareos':
manage_client => 'true',
}
}
## Create test-file ##
node 'pp-test' {
file { '/tmp/puppet-test':
ensure => present,
mode => 0644,
content => "Only test-servers get this file.\n",
}
include base-software
class {
'ssh':
server_options => {
'Port' => '2211',
'Protocol' => '2',
'HostKey' => '/etc/ssh/ssh_host_rsa_key',
'HostKey' => '/etc/ssh/ssh_host_dsa_key',
'HostKey' => '/etc/ssh/ssh_host_ecdsa_key',
'UsePrivilegeSeparation' => 'yes',
'KeyRegenerationInterval' => '3600',
'ServerKeyBits' => '1024',
'SyslogFacility' => 'AUTH',
'LogLevel' => 'INFO',
'LoginGraceTime' => '120',
'PermitRootLogin' => 'no',
'StrictModes' => 'yes',
'RSAAuthentication' => 'yes',
'PubkeyAuthentication' => 'yes',
'IgnoreRhosts' => 'yes',
'RhostsRSAAuthentication' => 'no',
'HostbasedAuthentication' => 'no',
'PermitEmptyPasswords' => 'no',
'ChallengeResponseAuthentication'=> 'no',
'PasswordAuthentication' => 'yes',
'AllowUsers' => 'test',
}
}
}
К сожалению, пользовательский "тест" не настраивается на тестовом узле. pp-test
Прочитав ваши комментарии, я создал еще один макет:
profile/
`-- manifests
|-- backup
| |-- client.pp
| `-- server.pp
|-- backup.pp
`-- base.pp
role/
`-- manifests
|-- backup.pp
`-- init.pp
profile / manifest / base.pp содержит:
class profile::base {
## Add MOTD ##
class {
'motd':
template => '/etc/puppet/modules/motd/templates/motd.erb',
}
## Add default user ##
user { 'test':
ensure => 'present',
managehome => 'true',
password => '$6$XYZ',
}
## Create sudoers ##
class { 'sudo': }
sudo::conf {
'test':
priority => '60',
content => "test ALL=(ALL) ALL"
}
## Install base-software
include base-software
## Configuration of OpenSSH-Server ##
class {
'ssh':
server_options => {
'Port' => '2211',
'Protocol' => '2',
'HostKey' => '/etc/ssh/ssh_host_rsa_key',
'HostKey' => '/etc/ssh/ssh_host_dsa_key',
'HostKey' => '/etc/ssh/ssh_host_ecdsa_key',
'UsePrivilegeSeparation' => 'yes',
'KeyRegenerationInterval' => '3600',
'ServerKeyBits' => '1024',
'SyslogFacility' => 'AUTH',
'LogLevel' => 'INFO',
'LoginGraceTime' => '120',
'PermitRootLogin' => 'no',
'StrictModes' => 'yes',
'RSAAuthentication' => 'yes',
'PubkeyAuthentication' => 'yes',
'IgnoreRhosts' => 'yes',
'RhostsRSAAuthentication' => 'no',
'HostbasedAuthentication' => 'no',
'PermitEmptyPasswords' => 'no',
'ChallengeResponseAuthentication'=> 'no',
'PasswordAuthentication' => 'yes',
'AllowUsers' => 'test',
}
}
}
Теперь я создал свой site.pp следующим образом:
node default {
include role::backup::client ##add bacula to all servers
}
node 'pp-test' {
file { '/etc/test.txt':
ensure => present,
mode => 0644,
content => "Test\n",
}
}
node 'backupserver' {
include role::backup::server
}
Что ж, проблема сохраняется: как только я определю pp-test
пакеты по умолчанию не устанавливаются.
Цитируя документы:
Имя по умолчанию (без кавычек) - это специальное значение для имен узлов. Если не может быть найдено ни одного оператора узла, соответствующего данному узлу, будет использоваться узел по умолчанию. [...]
Как имя вашего узла pp-test
находится внутри вашей конфигурации, ваша конфигурация default
узел не будет применен.
Что касается вашей проблемы: взгляните на этот отличное сообщение в блоге Крейга Данна о «Ролях и профилях». Если бы вы пошли по этому маршруту, вы могли бы придумать что-то вроде:
class role {
include profile::base
}
class role::www inherits role {
# All WWW servers get tomcat
include profile::tomcat
}
class role::www::dev inherits role::www {
include profile::webserver::dev
include profile::database
}
class role::www::live inherits role::www {
include profile::webserver::live
}
class role::mailserver inherits role {
include profile::mailserver
}
... поместив все настройки по умолчанию внутрь profile::base
.