sb-debian-base
Внимание: Эта библиотека устарела и больше не поддерживается. Она не будет получать никаких обновлений безопасности, новых функций или исправлений ошибок и сохранена здесь на GitHub для архивных целей. Если вы хотите её использовать, мы рекомендуем создать форк репозитория и проверить код перед использованием. Для получения дополнительной информации свяжитесь с нами по адресу info@stackbuilders.com.
Рекомендуемые роли:
Stack Builders - Базовая система Debian
Универсальный образ Debian для серверов. Этот Galaxy требует Ansible 2.7.0.
Поддерживаемые платформы
Debian
- 10 (buster)
- 9 (stretch)
Ubuntu
- 18.04 (bionic)
- 16.04 (xenial)
СУЩЕСТВЕННЫЕ ИЗМЕНЕНИЯ:
- Задания по Haskell удалены из этой роли, поэтому переменные
install_haskell_stack
иinstall_haskell_dependencies
больше не используются.
Как использовать эту роль
Текущая версия использует управление потоками Ansible (when: foo is defined) для выполнения задач на разных этапах, но сохраняет некоторые полезные теги, такие как установка имени хоста или создание директории для развертывания.
Сначала убедитесь, что вы создали файл requirements.yml
и добавили ссылку на этот репозиторий следующим образом:
---
- src: [email protected]:stackbuilders/sb-debian-base.git
version: <tag, commit or branch>
path: external-roles
После этого вам нужно выполнить следующую команду:
ansible-galaxy install -r requirements.yml
Создание плейбука
Создайте файл плейбука и в разделе ролей укажите группу задач, которые нужно выполнить. В качестве примера вы можете использовать tests/site.yml
или следующий:
# site.yml
- hosts: all
remote_user: foo
vars:
sb_debian_base_admin_user_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc1E ADMIN_USER_1
- ssh-rsa AAAAB3Nzac2Yc2e ADMIN_USER_2
sb_debian_base_deploy_user_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc1E DEPLOY_USER_1
- ssh-rsa AAAAB3Nzac2Yc2e DEPLOY_USER_2
roles:
- role: sb-debian-base
prebootstrap: yes
- role: sb-debian-base
bootstrap: yes
add_remove_keys: yes
vars:
sb_debian_base_deploy_user: deployer
sb_debian_base_supplementary_packages: [ "pkg-config", "traceroute" ]
sb_debian_base_environment_variables:
ONE: "uno"
TWO: "dos"
Вы также можете выполнять однократные задания, хотя это не рекомендуемый способ:
ansible-playbook -l local -i hosts site.yml -k -u root -e "prebootstrap: yes"
Запустите плейбук следующим образом:
# Базовый образ
ansible-playbook -l local -i hosts site.yml -k -u root
# Учетная запись администратора
ansible-playbook -l local -i hosts site.yml -u administrator
Доступные группы задач:
Предварительная настройка (prebootstrap)
Этот тег содержит базовые задачи настройки, такие как:
- Добавление пользователя администратора
- По умолчанию это
admin
в Debian,ubuntu
в Ubuntu. Вы можете определить переменную {{ sb_debian_base_admin_user }}
- По умолчанию это
- Обновление кэша пакетов
- Установка пакета sudo
- Использование sudo без пароля для группы sudo
- Настройка авторизованных SSH ключей для пользователей-администраторов
- Необходимо определить {{ sb_debian_base_admin_user_authorized_keys }}
Основная настройка (bootstrap)
Этот тег содержит более сложные задачи настройки, такие как:
- Запрет аутентификации по паролю для SSH-сессий
- Запрет доступа по SSH для root пользователя
- Установка имени хоста
- Вы можете определить {{ hostname }}
- Настройка часового пояса
- Вы можете определить {{ sb_debian_base_ntp_timezone }}
- Включение NTP с использованием systemd-timesyncd
- Обеспечение хранения данных journald постоянно
- Обновление всех пакетов
- Установка основных пакетов
- например: vim, tmux, htop, atop, tree, ufw, emacs, git, curl
- Установка дополнительных пакетов - не только sb_debian_base_extra_packages
- Включение брандмауэра с использованием UFW
- Открытие общих портов (например, SSH-порт, HTTP-порт; по умолчанию SSH)
- Вы можете определить {{ ports }}
- Открыть конкретные порты для конкретных IP-адресов
- Вы можете определить {{ port_ips }}
- Вы можете отключить UFW с помощью
sb_debian_base_firewall: no
- Открытие общих портов (например, SSH-порт, HTTP-порт; по умолчанию SSH)
- Установка и обновление переменных окружения
- Необходимо определить {{ sb_debian_base_environment_variables }}
- Создание Unix пользователя и группы для пользователя развертывания
- Необходимо определить переменную {{ sb_debian_base_deploy_user }} (например, deployer)
- Опционально определить переменную {{ sb_debian_base_deploy_user_group }} (например, deployer), в противном случае она будет такой же, как {{ sb_debian_base_deploy_user }}
- Создание директории для развертывания приложения
- Добавление SSH ключей для «Deploy keys» на GitHub
- Настройка авторизованных SSH ключей для пользователя развертывания
- Необходимо определить {{ sb_debian_base_deploy_user_authorized_keys }}
- Убедиться, что github.com является известным хостом
- Необходимо определить {{ sb_debian_base_deploy_user }}
- Эта переменная по умолчанию добавляет GitHub как известный хост, но её можно изменить, переопределив {{ sb_debian_base_known_hosts }}
- Настройка глобальной конфигурации bash истории в формате:
285 Thu 08 Aug 2019 01:43:40 PM UTC some command
См. ниже доступные переменные.
Установка имени хоста (set-hostname)
- Установите имя хоста на конкретное переменное значение
- Необходимо определить {{ hostname }}
Настройка конфигурации истории в bash:
Включить/выключить конфигурацию истории
sb_debian_base_bash_history: true
В разделе
sb_debian_base_bash_history_config:
- Установите количество строк для хранения в буфере истории
histsize: '5000'
- Установите количество строк для хранения в файле истории
histfilesize: '3000'
- Установите формат времени для добавления перед каждой командой истории (см.
man history
для полных опций)histtimeformat: '%c%t'
- Установите количество строк для хранения в буфере истории
Создание директории приложения (create-app-directory)
- Создайте директорию для развертывания приложения
- Когда {{ sb_debian_base_deploy_user }} определен
Внешние зависимости (Galaxies), включенные в эту группу задач основной настройки
- kamaln7.swapfile (Настройка swap-файла)
- Вы можете определить переменную {{ sb_debian_base_swap_file_size }} (например, 2048MB)
- Установить unattended-upgrades для обновлений безопасности
- Вы можете определить переменную {{ sb_debian_base_uu_email_alerts }} (например, example@example.com)
Обновление авторизованных SSH ключей (add-remove-keys)
Обновляет авторизованные SSH ключи:
- Необходимо определить следующий список переменных, содержащих публичные SSH ключи для пользователей администратора и развертывания соответственно:
{{ sb_debian_base_admin_user_authorized_keys }}
{{ sb_debian_base_deploy_user_authorized_keys }}
Лицензия
MIT, см. файл LICENSE в этом репозитории.
Информация об авторе
Джастин Лейтгеб, Stack Builders Inc.
ansible-galaxy install stackbuilders/sb-debian-base