bplower.factorio
Факторио
Роль для создания серверов Факторио https://galaxy.ansible.com/bplower/factorio/
Требования
Без требований
Переменные роли
Переменные можно грубо разделить на две группы: конфигурации развертывания и конфигурации Факторио.
Конфигурации развертывания
Конфигурации развертывания касаются метода, которым Ansible устанавливает сервер Факторио. Они должны быть достаточно абстрактными, чтобы позволить запускать несколько серверов Факторио одновременно.
server_sources: "/opt/games/sources/factorio"
server_version: "0.17.79"
download_url: "https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
service_name: "factorio-server"
service_user: "factorio"
service_group: "factorio"
service_root: "/home/{{ service_user }}"
service_port: 34197
service_restart_permitted: true
factorio_default_save: "{{ service_root }}/factorio/saves/default-save.zip"
factorio_target_save: "{{ factorio_default_save }}"
Более подробная информация об этих переменных:
- Переменная: - server_sources
 По умолчанию:- "/opt/games/sources/factorio"
 Комментарии:
 Где кэшировать бинарные файлы сервера, загруженные с download_url.
- Переменная: - server_version
 По умолчанию:- "0.17.79"
 Доступные варианты:- "0.18.26"
- "0.17.79"
- "0.17.74"
- "0.16.51"
- "0.15.40"
- "0.14.23"
- "0.13.20"
- "0.12.35"
 - Комментарии: 
 Вы должны установить значение- download_checksum, если задали эту переменную. Это значение используется в URL для загрузки по умолчанию.
- Переменная: - download_url
 По умолчанию:- "https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
 Комментарии:
 URL для загрузки бинарного файла сервера. Этот файл будет загружен только если путь- "{{ server_sources }}/factorio-{{ server_version }}.tar.gz"не существует.
- Переменная: - download_checksum
 По умолчанию:- "sha256:9ace12fa986df028dc1851bf4de2cb038044d743e98823bc1c48ba21aa4d23df"Комментарии:
 Контрольная сумма, которая должна совпадать с загруженным бинарным файлом сервера. Это обеспечивает целостность. Если вы измените- download_urlили- server_version, вам нужно будет адаптировать контрольную сумму. Для получения контрольной суммы бинарного файла сервера можно использовать- curl --silent --location <download_url> | sha256sum. Чтобы отключить проверку контрольной суммы, просто установите её в пустую строку (- "").
- Переменная: - service_name
 По умолчанию:- "factorio-server"
 Комментарии:
 Имя создаваемого сервиса. Несколько экземпляров серверов Факторио могут работать на одном хосте, если задать разные значения для этой переменной (см. раздел примеров этого документа).
- Переменная: - service_user
 По умолчанию:- "factorio"
 Комментарии:
 Пользователь, от имени которого должен работать сервис.
- Переменная: - service_group
 По умолчанию:- "factorio"
 Комментарии:
 Группа, членом которой должен быть пользователь сервиса.
- Переменная: - service_root
 По умолчанию:- "/home/{{ service_user }}"
 Комментарии:
 Директория, в которой будут храниться содержимое zip-файла Факторио, загруженного с сервера. Это приведёт к тому, что ресурсы Факторио будут храниться в- {{ service_root }}/factorio/.
- Переменная: - service_port
 По умолчанию:- 34197
 Комментарии:
 Порт, на котором будет работать сервис. Это значение по умолчанию для Факторио.
- Переменная: - service_restart_permitted
 По умолчанию:- true
 Комментарии:
 Установка этого значения в- falseпредотвратит перезапуск сервиса, если будут внесены изменения. Это позволяет применять настройки в подготовке к следующему перезапуску сервиса, не вызывая немедленного прерывания работы сервиса.
- Переменная: - factorio_default_save
 По умолчанию:- "{{ service_root }}/factorio/saves/default-save.zip"
 Комментарии:
 Файл сохранения по умолчанию, используемый сервером.
- Переменная: - factorio_target_save
 По умолчанию:- "{{ factorio_default_save }}"
 Комментарии:
 Файл сохранения, который будет запущен сервером. Это различие предоставлено для облегчения перехода между несколькими файлами сохранений.
Конфигурации Факторио
Настройки для различных конфигурационных файлов могут быть заданы в словарях, названия которых напоминают
имя файла. Каждый словарь начинается с factorio_, за которым следует название файла
(без расширения файла), где дефисы ( - ) заменяются на
нижние подчеркивания ( _ ). Например, файл server-settings.json связан
со словарной переменной factorio_server_settings.
Папка default/ содержит несколько файлов, показывающих пример словарей,
представляющих значения, предоставленные серверами Факторио в различных примерах JSON.
Вот список конфигурационных файлов, которые были реализованы:
- Имя файла: - server-settings.json
 Переменная:- factorio_server_settings
 Пример:- factorio_server_settings: name: "Мой публичный сервер" max_players: 10 game_password: "mypassword" visibility: public: true lan: true
- Имя файла: - server-whitelist.json
 Переменная:- factorio_server_whitelist
 Пример:- factorio_server_whitelist: - Oxyd
- Имя файла: - map-settings.json
 Переменная:- factorio_map_settings
 Пример:- factorio_map_settings: pollution: enabled: false
- Имя файла: - map-gen-settings.json
 Переменная:- factorio_map_gen_settings
 Пример:- factorio_map_gen_settings: water: "high" autoplace_controles: coal: size: "very-low"
Примеры Playbook'ов
Пример из коробки может выглядеть следующим образом:
---
- name: Создать сервер Факторио по умолчанию
  hosts: localhost
  roles:
  - role: bplower.factorio
Пример с нестандартным портом и кастомизированным именем:
---
- name: Мой немного изменённый сервер Факторио
  hosts: localhost
  roles:
  - role: bplower.factorio
    service_port: 12345
    factorio_server_settings:
      name: "Мой сервер Факторио"
Пример нескольких серверов на одном хосте:
---
- name: Ферма Факторио
  hosts: localhost
  roles:
  - role: bplower.factorio
    service_port: 50001
    service_name: factorio_1
    service_root: /home/{{ service_user }}/{{ service_name }}
  - role: bplower.factorio
    service_port: 50002
    service_name: factorio_2
    service_root: /home/{{ service_user }}/{{ service_name }}
Лицензия
GNU GPLv3
Разработка и вклад
Я больше не использую этот проект регулярно, но стараюсь поддерживать его в актуальном состоянии при возможности. Если у вас есть какие-либо проблемы или вопросы, я рекомендую открывать запросы на изменение или проблемы.
Тестирование
Эта роль использует yamllint для валидации YAML и molecule + docker для тестирования.
Оба инструмента можно установить с помощью файла dev-requirements.txt. Вам нужно будет установить Docker отдельно.
pip install -r dev-requirements.txt`
Объединение всех поддерживаемых платформ вызвало проблемы для CI, поэтому тесты разделены на 3 сценария в зависимости от тестируемых платформ.
Makefile можно использовать для запуска каждого из тестов и поддерживает справочное меню с описаниями для каждой цели:
$ make help
Использование:
  make
Цели:
  help        Показать это справочное сообщение
  lint        Проверить YAML файлы
  test_all    Запустить все тесты molecule
  test_centos  Запустить тесты molecule для centos
  test_debian  Запустить тесты molecule для debian
  test_ubuntu  Запустить тесты molecule для ubuntu
ansible-galaxy install bplower.factorio