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

Puppet-Foreman: Хосты не обновляются в интервале выполнения по умолчанию, в чем может быть причина?

Серверы Linux в моей компании настраиваются и управляются Puppet, который устанавливается вместе с Foreman.

Глядя на панель управления Foreman, я вижу, что 95% серверов отображаются как синхронизированные и обновленные (синий значок), а 20 серверов, у которых нет известных точек соприкосновения, отображаются как несинхронизированные и не обновленные.

Глядя на /etc/puppet/puppet.conf файл на любом из агентов Puppet (тех, которые обновляются или те, которые не обновляются), я вижу, что он настроен следующим образом:

[main]
    # The Puppet log directory.
    # The default value is '$vardir/log'.
    logdir = /var/log/puppet

    # Where Puppet PID files are kept.
    # The default value is '$vardir/run'.
    rundir = /var/run/puppet

    # Where SSL certificates are kept.
    # The default value is '$confdir/ssl'.
    ssldir = $vardir/ssl

[agent]
    # The file in which puppetd stores a list of the classes
    # associated with the retrieved configuratiion.  Can be loaded in
    # the separate ``puppet`` executable using the ``--loadclasses``
    # option.
    # The default value is '$confdir/classes.txt'.
    classfile = $vardir/classes.txt

    # Where puppetd caches the local configuration.  An
    # extension indicating the cache format is added automatically.
    # The default value is '$confdir/localconfig'.
    localconfig = $vardir/localconfig

Это конфигурация по умолчанию, входящая в пакет.

Вы можете увидеть это под [agent] раздел единственные настроенные директивы classfile и localconfig в то время как на сервере Puppet /etc/puppet/puppet.conf раздел "[агент]" выглядит так:

[agent]
    # The file in which puppetd stores a list of the classes
    # associated with the retrieved configuratiion.  Can be loaded in
    # the separate ``puppet`` executable using the ``--loadclasses``
    # option.
    # The default value is '$statedir/classes.txt'.
    classfile = $vardir/classes.txt

    # Where puppetd caches the local configuration.  An
    # extension indicating the cache format is added automatically.
    # The default value is '$confdir/localconfig'.
    localconfig = $vardir/localconfig

    # Disable the default schedules as they cause continual skipped
    # resources to be displayed in Foreman - only for Puppet >= 3.4
    default_schedules = false

    report        = true
    pluginsync    = true
    masterport    = 8140
    environment   = production
    certname      = puppet.nj.company.com
    server        = puppet.nj.company.com
    listen        = false
    splay         = false
    runinterval   = 1800
    noop          = false
    configtimeout = 120

Итак, мои вопросы:

  1. Должен ли я скопировать то, что находится под разделом агента на сервере Puppet, клиентам?
  2. Что может привести к тому, что определенные серверы не будут обновляться сервером Puppet, если все они настроены автоматически с помощью Puppet, и все они настроены одинаково?

Большинство настроек в [agent] на вашем сервере - значения по умолчанию, и вам не нужно копировать их своим клиентам. Единственное, что действительно имеет значение, это server если по умолчанию puppet (полагаясь на поисковый домен) недостаточно. Поскольку вы говорите, что запуск Puppet работает вручную, я думаю, вам даже не о чем беспокоиться.

Похоже, что ваши клиенты не используют службу агента Puppet. Запустите его и убедитесь, что он настроен на запуск при загрузке.

Puppet использует модель получения конфигурации, поэтому вам необходимо запускать агент для получения конфигурации от мастера каждые 30 минут по умолчанию, когда агент работает как служба. Обычно вы настраиваете агент для запуска при загрузке во время подготовки.

например бегать service puppet start или systemctl start puppet (systemd) и если вы используете ОС типа Red Hat, также запустите systemctl enable puppet (systemd) или chkconfig puppet on.