Просто дам некоторые подробности — сборка на AWS, использование Puppet для обработки DSC, а также загрузка Puppet, чтобы он инициализировал и установил Puppet на вновь подготовленном узле.
Я работаю с Puppet уже некоторое время и обнаружил, что хочу написать модуль, который выполняется только при создании виртуальной машины.
Мой конкретный случай использования заключается в том, что я хочу установить антивирус (в частности, Trend Micro Deep Security) на недавно подготовленный узел автоматически через Puppet.
Сценарию для запуска требуется только загрузка, запуск и пара специальных команд TMDS для активации и т. д.
Если я использую Puppet, он будет делать это при каждом запуске (скачать, попытаться установить, попытаться активировать), что определенно не то, что мне нужно.
Однако я не думаю, что Puppet «знает» о Trend Micro или о том, как его получить, или URL-адрес и т. д. Поэтому я не могу использовать что-то вроде:
service { "trend micro":
ensure => running,
ensure => present,
}
Проведя небольшое исследование и просмотрев сообщения в блогах, я знаю, что структура моего код должен быть примерно таким (я знаю, что это неправильно):
exec {'function_name':
# the script that downloads/installs/activates etc.
command => '/path/to/script.sh',
onlyif => systemctl service_trendmicro,
# which system should return 0 or 1 for pass/fail - I only want it to exec on 0 ofc.
}
Поэтому мой вопрос: как мне собрать это вместе?