bplower.factorio
Factorio
Rola do tworzenia serwerów Factorio https://galaxy.ansible.com/bplower/factorio/
Wymagania
Brak wymagań
Zmienne roli
Zmienne można podzielić na dwie grupy: konfiguracje wdrożenia i konfiguracje Factorio.
Konfiguracje wdrożenia
Konfiguracje wdrożenia dotyczą sposobu, w jaki ansible instaluje serwer Factorio. Powinny być wystarczająco abstrakcyjne, aby umożliwić jednoczesne uruchamianie kilku serwerów Factorio.
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 }}"
Szczegółowe informacje o tych zmiennych:
Zmienna:
server_sources
Domyślnie:"/opt/games/sources/factorio"
Komentarze:
Gdzie przechowywać binaria serwera pobrane z download_url.Zmienna:
server_version
Domyślnie:"0.17.79"
Wybory:- "0.18.26"
- "0.17.79"
- "0.17.74"
- "0.16.51"
- "0.15.40"
- "0.14.23"
- "0.13.20"
- "0.12.35"
Komentarze:
Musisz ustawić wartośćdownload_checksum
, jeśli ustawisz tę zmienną. Ta wartość jest używana w domyślnymdownload_url
.Zmienna:
download_url
Domyślnie:"https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
Komentarze:
URL do pobrania binariów serwera. Będzie pobierany tylko, jeśli ścieżka"{{ server_sources }}/factorio-{{ server_version }}.tar.gz"
nie istnieje.Zmienna:
download_checksum
Domyślnie:"sha256:9ace12fa986df028dc1851bf4de2cb038044d743e98823bc1c48ba21aa4d23df"
Komentarze:
Suma kontrolna, która musi pasować do pobranej binariów serwera. Zapewnia to integralność. Jeśli zmieniszdownload_url
lubserver_version
, musisz również dostosować sumę kontrolną. Aby uzyskać sumę kontrolną binariów serwera, możesz użyćcurl --silent --location <download_url> | sha256sum
. Aby wyłączyć weryfikację sumy kontrolnej, po prostu ustaw ją na pusty ciąg (""
).Zmienna:
service_name
Domyślnie:"factorio-server"
Komentarze:
Nazwa usługi do utworzenia. Można uruchomić wiele instancji serwerów Factorio na jednym hoście, podając różne wartości dla tej zmiennej (zobacz sekcję z przykładami w tym dokumencie).Zmienna:
service_user
Domyślnie:"factorio"
Komentarze:
Użytkownik, pod którym ma być uruchamiana usługa.Zmienna:
service_group
Domyślnie:"factorio"
Komentarze:
Grupa, której członkiem powinien być użytkownik usługi.Zmienna:
service_root
Domyślnie:"/home/{{ service_user }}"
Komentarze:
Katalog, w którym będą przechowywane zawartości pliku zip Factorio pobranego z serwera. To spowoduje przechowywanie zasobów Factorio w{{ service_root }}/factorio/
.Zmienna:
service_port
Domyślnie:34197
Komentarze:
Port, na którym ma być hostowana usługa. Ta domyślna wartość jest domyślną wartością Factorio.Zmienna:
service_restart_permitted
Domyślnie:true
Komentarze:
Ustawienie tej wartości nafalse
uniemożliwi re-start usługi, jeśli zastosowano jakieś zmiany. Umożliwia to wprowadzenie ustawień w przygotowaniach do następnego restartu usługi bez natychmiastowego przerywania usługi.Zmienna:
factorio_default_save
Domyślnie:"{{ service_root }}/factorio/saves/default-save.zip"
Komentarze:
Domyślny plik zapisu używany przez serwer.Zmienna:
factorio_target_save
Domyślnie:"{{ factorio_default_save }}"
Komentarze:
Plik zapisu, który ma być uruchamiany przez serwer. Ta różnica jest podana, aby ułatwić przełączanie między wieloma plikami zapisu.
Konfiguracje Factorio
Ustawienia różnych plików konfiguracyjnych można ustawiać w słownikach luźno nazywanych po nazwie pliku. Każdy słownik zaczyna się od factorio_
a następnie nazwa pliku (bez rozszerzenia) gdzie myślniki (-) są zastępowane podkreślnikami (_). Na przykład, plik server-settings.json
jest powiązany ze zmienną słownika factorio_server_settings
.
Folder default/
zawiera kilka plików pokazujących przykłady słowników reprezentujących wartości dostarczone przez różne pliki JSON serwerów Factorio.
Poniżej znajduje się lista plików konfiguracyjnych, które zostały zaimplementowane:
Nazwa pliku:
server-settings.json
Zmienna:factorio_server_settings
Przykład:factorio_server_settings: name: "Mój Publiczny Serwer" max_players: 10 game_password: "mojehasło" visibility: public: true lan: true
Nazwa pliku:
server-whitelist.json
Zmienna:factorio_server_whitelist
Przykład:factorio_server_whitelist: - Oxyd
Nazwa pliku:
map-settings.json
Zmienna:factorio_map_settings
Przykład:factorio_map_settings: pollution: enabled: false
Nazwa pliku:
map-gen-settings.json
Zmienna:factorio_map_gen_settings
Przykład:factorio_map_gen_settings: water: "wysoki" autoplace_controles: coal: size: "bardzo-niski"
Przykładowe playbooki
Przykład "z pudełka" może wyglądać następująco:
---
- name: Utwórz domyślny serwer factorio
hosts: localhost
roles:
- role: bplower.factorio
Przykład z niestandardowym portem i nazwą:
---
- name: Mój lekko zmieniony serwer factorio
hosts: localhost
roles:
- role: bplower.factorio
service_port: 12345
factorio_server_settings:
name: "Mój serwer factorio"
Przykład wielu serwerów na jednym hoście:
---
- name: Farma factorio
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 }}
Licencja
GNU GPLv3
Rozwój i Wkład
Nie używam już tego projektu regularnie, ale staram się aktualizować go, gdy to możliwe. Jeśli masz jakieś problemy lub pytania dotyczące tego, zachęcam do otwarcia PR lub zgłoszenia problemu.
Testowanie
Ta rola wykorzystuje yamllint do walidacji yaml, a także molecule + docker do testowania.
Obydwa narzędzia można zainstalować za pomocą pliku dev-requirements.txt
. Należy zainstalować docker osobno.
pip install -r dev-requirements.txt`
Grupowanie wszystkich wspieranych platform razem powodowało problemy z CI, więc testy są podzielone na 3 scenariusze na podstawie testowanych platform.
Plik makefile można użyć do uruchomienia każdego z testów i obsługuje menu pomocy z opisami dla każdego celu:
$ make help
Użycie:
make
Cele:
help Wyświetl pomoc
lint Sprawdź pliki yaml
test_all Uruchom wszystkie testy molecule
test_centos Uruchom testy molecule na centos
test_debian Uruchom testy molecule na debian
test_ubuntu Uruchom testy molecule na ubuntu
ansible-galaxy install bplower.factorio