From 0ebab45fc70430a6378a0d38e9fd0949e37950cd Mon Sep 17 00:00:00 2001 From: 1xtier Date: Fri, 20 Feb 2026 01:09:47 +0400 Subject: [PATCH] add --- Puppetfile | 11 +++++++++++ environment.conf | 3 +++ hiera.yaml | 12 ++++++++++++ hieradata/nodes/example.node.yaml | 7 +++++++ manifests/site.pp | 4 ++++ site/profile_base/manifests/init.pp | 24 ++++++++++++++++++++++++ 6 files changed, 61 insertions(+) create mode 100644 Puppetfile create mode 100644 environment.conf create mode 100644 hiera.yaml create mode 100644 hieradata/nodes/example.node.yaml create mode 100644 manifests/site.pp create mode 100644 site/profile_base/manifests/init.pp diff --git a/Puppetfile b/Puppetfile new file mode 100644 index 0000000..c9bcd6b --- /dev/null +++ b/Puppetfile @@ -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. diff --git a/environment.conf b/environment.conf new file mode 100644 index 0000000..a6da685 --- /dev/null +++ b/environment.conf @@ -0,0 +1,3 @@ +# environment.conf +modulepath = modules:site +environment_timeout = 0 diff --git a/hiera.yaml b/hiera.yaml new file mode 100644 index 0000000..6161a7f --- /dev/null +++ b/hiera.yaml @@ -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" diff --git a/hieradata/nodes/example.node.yaml b/hieradata/nodes/example.node.yaml new file mode 100644 index 0000000..649d8a9 --- /dev/null +++ b/hieradata/nodes/example.node.yaml @@ -0,0 +1,7 @@ +# hieradata/nodes/example.node.yaml +profile_base::base_packages: + - vim + - htop + - curl + - git + - mtr # дополнительный пакет diff --git a/manifests/site.pp b/manifests/site.pp new file mode 100644 index 0000000..9a9f180 --- /dev/null +++ b/manifests/site.pp @@ -0,0 +1,4 @@ +# manifests/site.pp +node default { + include profile_base +} diff --git a/site/profile_base/manifests/init.pp b/site/profile_base/manifests/init.pp new file mode 100644 index 0000000..2663cc9 --- /dev/null +++ b/site/profile_base/manifests/init.pp @@ -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', + } +}