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

Марионетка: содержимое узла по умолчанию не передается на все узлы.

может я не правильно понимаю:

Я хотел бы определить некоторые задачи через марионетку, которые применяются к все подключенные хосты.

Это мой 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.