factorio

Факторио

Установить из Ansible Galaxy Ansible Lint

Роль для создания серверов Факторио 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
О проекте

A role for creating Factorio servers

Установить
ansible-galaxy install bplower/ansible-factorio
Лицензия
Unknown
Загрузки
296
Владелец