- PVSM.RU - https://www.pvsm.ru -
- cfauth [1] — настраивает сервис SSH, админскую учётную запись,
sudo
, пароль суперпользователя- cfsystem [2] — настройка: APT, временной зоны, отправки системных писем, синхронизация времени, расширенный список стандартных пакетов
- Все модули интегрированы с модулем сетевого фильтра cfnetwork [3] и не требуют дополнительных настроек
Данная пара модулей служит для автоматизации стандартных действий, которые требуется осуществить практически на любой развёрнутой системе.
cfauth
ssh_access
sudo
команд/opt/puppetlabs/puppet/bin/puppet agent --test
/usr/bin/apt-get update
/usr/bin/apt-get dist-upgrade
sudo
для всех команд — удобно и относительно безопасно для большого количества машин в ДМЗcfauth::admin_auth_keys
— обязательный список публичных SSH ключей в формате ssh_authorized_key [5]
user
уже заданtype = 'ssh-rsa'
— по умолчаниюadmin_user = 'adminaccess'
— имя учётной записи для администратора. Желательно поменять и не использовать стандартное.admin_password = undef
— если указан, то устанавливает захешированный пароль для пользователей root
и $admin_user
mkpasswd -m sha-512
для генерации пароляadmin_hosts = undef
— передаётся как src
для сетевого фильтра cfnetwork::service_port
. Настоятельно рекомендуется.sudo_no_password_all = false
— если true
, то разрешает пользователю $admin_user
запускать все команды через sudo
без пароляsudo_no_password_commands = undef
— дополнительный список sudo
команд, которые $admin_user
может выполнить без пароля. Для случаев, когда нецелесообразно разрешать все команды.sshd_ports = 22
— список SSH портов по умолчанию. Автоматически создаёт сервис cfssh
через cfnetwork::describe_services
sshd_config_template = 'cfauth/sshd_config.epp'
— возможность переопределить стандартный шаблон генерации конфигурационного файла OpenSSHcfsystem
Данный модуль ориентирован не только на обособленные системы, но и на возможность предоставлять стандартные сервисы внутри ДМЗ в целях ограничения допустимых исходящих соединений и поддержания этических сетевых норм — не ломиться бригадой из десятков систем на внешние сервисы.
hostname
в соответствии с certname
— для профилактикиSMTP
cfnetwork
APIcf_location
и cf_location_pool
, которые удобно использовать в конфигурации Hiera. cfsystem
Все вложенные классы, добавляются автоматически.
allow_nfs = false
— если не разрешено, то выпиливает установленные по умолчанию RPC & NFSadmin_email = undef
— адрес электронный почты для системных уведомленийrepo_proxy = undef
— установка HTTP/HTTPS прокси-сервера для скачивания системных пакетов
host
— IP или имяport
— TCP портadd_repo_cacher = false
— установить прокси-сервер, принимающий клиентов на $service_face
service_face = 'any'
— интерфейс cfnetwork::iface
, на котором слушать клиентов, если включены сервисыntp_servers = [ 'pool.ntp.org' ]
— список NTP серверов для синхронизацииadd_ntp_server = false
— установить NTP-сервер, принимающий клиентов на $service_face
timezone = 'Etc/UTC'
— временная зонаapt_purge
— передаётся в apt::purge
, удаляет все неуправляемые настройки репозиториев и преференций пакетовapt_update
— передаётся в apt::update
. По умолчанию, ежедневно с таймаутом в 300 секунд.cfsystem::hierapool
Установка и поддержка фактов, которые удобно использовать для настройке иерархии в hiera.yaml.
cf_location
— по сути ассоциативное название физического центра данных. На этой основе удобно выставлять адреса репозитория пакетов APT и т.п..cf_location_pool
— конкретная группа серверов, подразумевает под собой отдельную ДМЗ группу в конкретном месте расположения.Пример:
---
:backends:
- yaml
:hierarchy:
- "%{::trusted.domain}/%{::trusted.hostname}"
- "%{::trusted.domain}"
- "%{::cf_location}/%{::cf_location_pool}"
- "%{::cf_location}"
- common
:merge_behavior: deeper
:yaml:
:datadir:
Параметры:
location = undef
— сохраняет в /etc/cflocation
, если заданpool = undef
— сохраняет в /etc/cflocationpool
, если заданcfsystem::email
Настройка отправки системных уведомлений.
smarthost = undef
— устанавливает smarthost для SMTPsmarthost_login = undef
— логин для smarthost при необходимостиsmarthost_password = undef
— пароль для smarthost при необходимостиrelay_nets = <private subnets>
— список сетей, которым разрешено пересылать письма через эту систему (само по себе не включает)listen_ifaces = undef
— список названий cfnetwork::iface
интерфейсов, на которых слушать клиентов для пересылки писемdisable_ipv6 = true
— отключение IPv6 — идёт прямиком в конфиг Exim4.cfsystem::sysctl
vm_swappiness = 1
— 0-100 (%), уменьшает использование swap до минимума по умолчанию.Данный функционал ещё не полный и скорее всего будет расширяться.
cfsystem::debian
Специфично для Debian:
apt_url = 'http://httpredir.debian.org/debian'
— Базовый адрес для APTrelease
= 'jessie' — название релизаcfsystem::ubuntu
Специфично для Ubuntu:
apt_url = 'mirror://mirrors.ubuntu.com/mirrors.txt'
— Базовый адрес для APTrelease = 'wily'
— название релизаПолноценное развёртывание инфраструктуры в Vagrant можно посмотреть здесь [8].
---
classes:
- cfsystem
# При необходимости устанавливает настройки для фактов `cf_location` и `cf_location_pool` на последующих вызовах
# Обычно, эти факты устанавливаются при инициализации системы
cfsystem::hierapool::location: 'somelocation'
cfsystem::hierapool::pool: 'somepool'
cfauth::admin_user: vagrant
# mkpasswd -m sha-512: 'vagrant'
cfauth::admin_password: '$6$W32Psa5h$l7iIrVFdG.6SRta86n1GlDcMBapDP3fpzLD4F2Vkz2xTfd2GFg34h5CEBH3JifiVRszumAteGDLXZEbp2bx3Z0'
cfauth::sudo_no_password_all: true
cfauth::admin_auth_keys:
data_test:
key: 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDiruOsKA2xTeITRnmLlWph1xNdyoX7cufWU48737E8KQSltRZEeyyLKKPR0L+XTwrvpIhwymikP+7K77KMF8yEg9f98FaYtxGdEvPqGVO7Dezdg3eQmQzYce0/wlgLXn0GJa2TcrG7lvSnHkCjbOV5lRWP5vY92skYQHhuwtMgtQ=='
options:
- 'from="10.0.0.0/8,192.168.0.0/16,172.16.0.0/12"'
# Здесь должен быть хорошо выверенный список разрешённых IP
cfauth::admin_hosts:
- '10.0.0.0/8'
- '192.168.0.0/16'
- '172.16.0.0/12'
# Использовать APT кэш, NTP и SMTP Smarthost на инфраструктурном сервере
cfsystem::repo_proxy:
host: maint.example.com
port: 3142
cfsystem::ntp_servers: 'maint.example.com'
cfsystem::email::smarthost: 'maint.example.com'
# Такие настройки должны быть на самом 'maint.example.com'
#===================================================
cfsystem::add_repo_cacher: true
cfsystem::add_ntp_server: true
cfsystem::ntp_servers:
- 0.debian.pool.ntp.org
- 1.debian.pool.ntp.org
- 2.debian.pool.ntp.org
- 3.debian.pool.ntp.org
cfsystem::email::smarthost:
cfsystem::email::listen_ifaces: 'main'
Автор: andvgal
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ssh/112504
Ссылки в тексте:
[1] cfauth: https://forge.puppetlabs.com/codingfuture/cfauth
[2] cfsystem: https://forge.puppetlabs.com/codingfuture/cfsystem
[3] cfnetwork: https://forge.puppetlabs.com/codingfuture/cfnetwork
[4] Часть I: сеть и сетевой фильтр (cfnetwork + cffirehol): https://habrahabr.ru/post/277085/
[5] ssh_authorized_key: https://docs.puppetlabs.com/puppet/latest/reference/type.html#sshauthorizedkey
[6] apt-cacher-ng: https://www.unix-ag.uni-kl.de/~bloch/acng/
[7] http://security.debian.org/: http://security.debian.org/
[8] здесь: https://github.com/codingfuture/puppet-test
[9] Источник: https://habrahabr.ru/post/277309/
Нажмите здесь для печати.