- PVSM.RU - https://www.pvsm.ru -
- cfauth [1] — настраивает сервис SSH, админскую учётную запись,
sudo, пароль суперпользователя- cfsystem [2] — настройка: APT, временной зоны, отправки системных писем, синхронизация времени, расширенный список стандартных пакетов
- Все модули интегрированы с модулем сетевого фильтра cfnetwork [3] и не требуют дополнительных настроек
Данная пара модулей служит для автоматизации стандартных действий, которые требуется осуществить практически на любой развёрнутой системе.
cfauthssh_accesssudo команд/opt/puppetlabs/puppet/bin/puppet agent --test/usr/bin/apt-get update/usr/bin/apt-get dist-upgradesudo для всех команд — удобно и относительно безопасно для большого количества машин в ДМЗcfauth::admin_auth_keys — обязательный список публичных SSH ключей в формате ssh_authorized_key [5]
user уже заданtype = 'ssh-rsa' — по умолчаниюadmin_user = 'adminaccess' — имя учётной записи для администратора. Желательно поменять и не использовать стандартное.admin_password = undef — если указан, то устанавливает захешированный пароль для пользователей root и $admin_usermkpasswd -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_servicessshd_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_faceservice_face = 'any' — интерфейс cfnetwork::iface, на котором слушать клиентов, если включены сервисыntp_servers = [ 'pool.ntp.org' ] — список NTP серверов для синхронизацииadd_ntp_server = false — установить NTP-сервер, принимающий клиентов на $service_facetimezone = '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::sysctlvm_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/
Нажмите здесь для печати.