/ansible

Primary LanguageShell

Введение

Это мой набор плейбуков для Ansible, который решает мои задачи по настройке виртуальных машин. Буду рад, если он поможет вам в вашей работе. Все плейбуки вы можете выполнять только на свой страх и риск. Читайте внимательно текст плейбуков перед их запуском и всегда имейте варианты отката от изменений, которые могут нарушить работу вашего сервера.

certbot.yaml

Установка certbot с поддержкой Cloudflare DNS Challenge. Позволяет установить Wildcard сертификат. Требует установки переменных:

cloudflare_api_token: CLOUDFLARE_API_TOKEN
certbot_domain: example.org
certbot_email_address: admin@example.org

Если API токен не указан установка не выполняется.

Если не указано имя домена или email адрес администратора, сертификат не выпускается.

install.yaml

Первоначальная настройка сервера. После завершения работы скрипта доступ к серверу будет возможет только по ключу. Доступ пользователю root будет закрыт!!!

Для работы скрипта требуются установленные переменные. Можно их устанавливать для каждого сервера отдельно, но если они одинаковые, то для удобства их можно установить в group_vars для группы install:

admin_user_name: ADMIN_USERNAME
admin_user_password: ADMIN_PASSWORD

ADMIN_USERNAME - пользователь, используемый для управления сервером; ADMIN_PASSWORD — хеш пароля пользователя.

Пример файла инвентаря:

install:
  hosts:
    host.example.org:
  vars:
    ansible_user: root
    ansible_password: PASSWORD

В случае указания ansible_password может возникнуть ошибка, если сервер не добавлен в known_hosts. Это происходит в целях безопасности, чтобы пароль не утёк на сторонний сервер. Для решения этой проблемы необходимо заранее подключиться к серверу и принять ключ (пароль вводить не обязательно, достаточно принять ключ), либо добавить переменную окружения для игнорирования ошибки:

ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i INVENTORY install.yaml

Также можно не указывать пароль в файле инвентаризации, а запросить его в ходе подключения к серверу:

 ansible-playbook -i INVENTORY install.yaml --ask-pass

Установка переменных, например, групповых или для конкретной машины, может обеспечить запуск установки некоторых других настроек.

Указать локаль

Можно подключить необходимую локаль. Для неё будет выполнена операция locale-gen и установка в качестве локали по умолчанию.

locale: ru_RU.UTF-8

Установка часового пояса

При необходимости можно установить часовой пояс:

locale: ru_RU.UTF-8

ipv4-forward.yaml

Включает перенаправление пакетов IPv4 через опцию sysctl.

ipv6-forward.yaml

Включает перенаправление пакетов IPv6 через опцию sysctl.

ipv6-nonlocal-bind.yaml

Включает опцию net.ipv6.ip_nonlocal_bind в sysctl позволяющую использовать IPv6 адрес без активного сетевого интерфейса с этим адресом.

nginx-php.yaml

Производит установку сервера nginx и php. После установки активные vhost отсутствуют!!!

ssh-copy-id.yaml

Копирует публичные ключи доступа из файла ssh-keys.pub на все серверы из инвентаря.

ssh-security.yaml

Попирует файл настроек sshd, который запрещает доступ для root и вход с помощью паролей для всех пользователей.

upgrade_ubuntu.yaml

Выполняет установку обновлений операционной системы для Debian based серверов.

upgrade_fedora.yaml

Выполняет установку обновлений операционной системы для RedHat based серверов.

upgrade.yaml

Выполняет обновление Debian и RedHat based серверов.

useradd.yaml

Создаёт пользователя на сервере и загружает в него публичные ключи доступа из ssh-keys.pub. При работе использует переменные:

admin_user_name: ИМЯ_ПОЛЬЗОВАТЕЛЯ
admin_user_password: ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ