sb-debian-base

Внимание: Эта библиотека устарела и больше не поддерживается. Она не будет получать никаких обновлений безопасности, новых функций или исправлений ошибок и сохранена здесь на GitHub для архивных целей. Если вы хотите её использовать, мы рекомендуем создать форк репозитория и проверить код перед использованием. Для получения дополнительной информации свяжитесь с нами по адресу info@stackbuilders.com.

Рекомендуемые роли:

Stack Builders - Базовая система Debian

Статус сборки Ansible Galaxy

Универсальный образ 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
  • Установка и обновление переменных окружения
    • Необходимо определить {{ 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.

О проекте

Base image and common roles

Установить
ansible-galaxy install stackbuilders/sb-debian-base
Лицензия
mit
Загрузки
14017
Владелец
Our team strives to push the boundaries of the software industry through quality, pragmatic custom solutions that bring the visions of our clients to life.