This commit is contained in:
2026-02-20 01:09:47 +04:00
commit 0ebab45fc7
6 changed files with 61 additions and 0 deletions

11
Puppetfile Normal file
View File

@@ -0,0 +1,11 @@
# Puppetfile
forge 'https://forge.puppet.com'
# Модули из Forge
mod 'puppetlabs/stdlib', '9.0.0'
mod 'puppetlabs/ntp', '9.2.0'
# Собственный модуль profile_base лежит прямо в репозитории (site/profile_base)
# Так как он уже будет склонирован вместе с контролем, его можно не указывать в Puppetfile.
# Но если хотите явно, можно использовать :path, но тогда r10k его скопирует из исходного репозитория.
# Мы просто положим его в site/ и он будет доступен по modulepath.

3
environment.conf Normal file
View File

@@ -0,0 +1,3 @@
# environment.conf
modulepath = modules:site
environment_timeout = 0

12
hiera.yaml Normal file
View File

@@ -0,0 +1,12 @@
# hiera.yaml
---
version: 5
defaults:
datadir: hieradata
data_hash: yaml_data
hierarchy:
- name: "Per-node data"
path: "nodes/%{trusted.certname}.yaml"
- name: "Common data"
path: "common.yaml"

View File

@@ -0,0 +1,7 @@
# hieradata/nodes/example.node.yaml
profile_base::base_packages:
- vim
- htop
- curl
- git
- mtr # дополнительный пакет

4
manifests/site.pp Normal file
View File

@@ -0,0 +1,4 @@
# manifests/site.pp
node default {
include profile_base
}

View File

@@ -0,0 +1,24 @@
# site/profile_base/manifests/init.pp
class profile_base (
Array[String] $base_packages = [],
Array[String] $ntp_servers = [],
String $motd_content = "Managed by Puppet (masterless)\n",
) {
# Установка базовых пакетов
package { $base_packages:
ensure => installed,
}
# Настройка NTP
class { 'ntp':
servers => $ntp_servers,
}
# Настройка MOTD
file { '/etc/motd':
content => $motd_content,
owner => 'root',
group => 'root',
mode => '0644',
}
}