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/ansible-factorio