RU | EN | DE

Windows

Шаг 1.

  1. Нажми Win + R, введи notepad C:\Windows\System32\drivers\etc\hosts и нажми Enter (лучше запускать Блокнот от имени Администратора).
  2. В самом низу добавь строку:
192.168.0.14    puppet

(Теперь, если Windows спросит “Где puppet?”, он пойдет по внутренней сети на 192.168.0.14). 3. Сохрани файл. 4. Проверь связь. Открой PowerShell (на Windows Server) и введи:

ping puppet

Должен пойти ответ от 192.168.0.14. Если пинг есть — мы готовы к установке Агента.

Шаг 2. Превращаем Windows в управляемый компьютер (Agent) 🖥️

Раз уж у тебя есть мощный Windows Server, давай сделаем его первым “клиентом” Puppet! Ты сможешь управлять его настройками прямо с Linux-сервера. Для этого Windows должен знать, где искать сервер “puppet”. На Windows:

  1. Нажми Win + R, введи notepad C:\Windows\System32\drivers\etc\hosts и нажми Enter (лучше запускать Блокнот от имени Администратора).
  2. В самом низу добавь строку:
192.168.0.14    puppet

(Теперь, если Windows спросит “Где puppet?”, он пойдет по внутренней сети на 192.168.0.14). 3. Сохрани файл. 4. Проверь связь. Открой PowerShell (на Windows Server) и введи:

ping puppet

Должен пойти ответ от 192.168.0.14. Если пинг есть — мы готовы к установке Агента.

Шаг 3. Установка Агента на Windows 📦

Теперь самое интересное. Ставим программу-агент на Windows Server.

  1. Скачай официальный инсталлятор (MSI) для Windows x64: Ссылка на загрузку Puppet Agent (Скачай его прямо на Windows Server).
  2. Запусти установку.
  3. В мастере установки дойди до поля Puppet Server.
  4. Впиши туда просто слово: puppet. (Остальное оставь как есть).
  5. Нажми Install.

Шаг 4. “Свадьба” (Подписание сертификата) 💍

Агент на Windows постучится к Серверу на Linux. Сервер его увидит, но не пустит, пока ты (Администратор) не разрешишь.

  1. На Linux (Puppet Server): Проверь, пришел ли запрос:
sudo /opt/puppetlabs/bin/puppetserver ca list`
Ты должен увидеть что-то вроде: `"win-server-2022.local" (SHA256: ...)` — это твой Windows просится под управление.

2. Разреши доступ (подпиши сертификат):

sudo /opt/puppetlabs/bin/puppetserver ca sign --all

(Напишет: Successfully signed certificate...).

sudo ln -s /opt/puppetlabs/bin/puppetserver /usr/local/bin/puppetserver
sudo rm -rf /etc/puppetlabs/puppet/ssl

Финал: Проверка связи 🚀

Вернись на Windows Server, открой PowerShell от имени Администратора и введи команду ручной синхронизации:

puppet agent -t

Смена времени Агента

Способ 1. Быстрый (Через командную строку) ⚡

Это самый безопасный способ, так как Puppet сам запишет настройку в нужный файл и не ошибется в синтаксисе.

  1. На Windows Server открой PowerShell (Admin).
  2. Чтобы установить интервал, например, в 10 минут, введи:
puppet config set runinterval 10m --section agent

(Можно использовать s - секунды, m - минуты, h - часы).
3. Важно: Чтобы изменение вступило в силу, нужно перезапустить службу (иначе он доработает текущие 30 минут по старой памяти):

Restart-Service puppet

Все! Теперь он будет приходить каждые 10 минут.

Способ 2. “Хирургический” (Через файл конфигурации) 📝

Если хочешь увидеть, где эта настройка лежит физически:

  1. Открой Блокнот от имени Администратора.
  2. Открой файл: C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf (Папка ProgramData обычно скрытая, можешь просто вставить путь в строку открытия).
  3. Найди секцию [agent].
  4. Добавь или измени строчку:
[agent]
server = puppet
runinterval = 10m
  1. Сохрани и перезапусти службу (Restart-Service puppet).

⚠️ Совет бывалого

Не ставь интервал меньше 5-10 минут в реальной работе. Сейчас у тебя 1 сервер, и Puppet справится хоть с интервалом в 1 минуту. Но когда серверов станет 100, и они все начнут долбиться к мастеру каждую минуту — он просто “ляжет” от нагрузки (DDoS своими руками).

Рекомендую:

  • Для тестов/разработки: 5m или 10m.
  • Для продакшена (боевых серверов): 30m или 1h. Попробуй изменить на 5m через первый способ, это самое удобное сейчас!

Способ 3.

Нам нужен модуль puppetlabs-inifile. Он умеет ювелирно менять одну строчку в текстовых файлах. Введи на сервере:

sudo /opt/puppetlabs/bin/puppet module install puppetlabs-inifile

Теперь мы скажем Паппету:

  1. Найди свой конфиг-файл.
  2. Найди там параметр runinterval.
  3. Поставь его на 5m (5 минут).
  4. Важно: Если ты что-то изменил, перезапусти сам себя, чтобы изменения вступили в силу. Открой site.pp:
sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

Добавь этот код внутрь блока node 'srv-dc01.vbo.local':

  # --- Блок 5: Настройка самого Агента (Puppet настраивает Puppet) ---
 
  # 1. Объявляем службу Puppet, чтобы мы могли её перезагружать
  service { 'puppet':
    ensure => running,
    enable => true,
  }
 
  # 2. Меняем частоту запуска в файле конфига
  ini_setting { 'change_interval':
    ensure  => present,
    path    => 'C:/ProgramData/PuppetLabs/puppet/etc/puppet.conf',
    section => 'agent',
    setting => 'runinterval',
    value   => '5m',                 # Ставим 5 минут
    notify  => Service['puppet'],    # МАГИЯ: Если файл изменился -> перезапусти службу!
  }

Обрати внимание на строчку notify. Это механизм событий. Служба перезапустится ТОЛЬКО если изменится файл. Если файл уже правильный — лишнего перезапуска не будет.

Теперь вернись на Windows и запусти агент (в последний раз вручную, чтобы применить эту настройку):

puppet agent -t