2023-01-11 21:05:49 +08:00
# Shows help
default :
2023-03-25 23:47:13 +08:00
@just --list --justfile { { justfile( ) } }
2023-01-11 21:05:49 +08:00
# Pulls external Ansible roles
roles :
2023-03-25 23:47:13 +08:00
#!/usr/bin/env sh
2024-07-15 12:57:08 +08:00
echo "[NOTE] This command just updates the roles, but if you want to update everything at once (playbook, roles, etc.) - use 'just update'"
2023-03-25 23:47:13 +08:00
if [ -x " $( command -v agru) " ] ; then
agru
else
rm -rf roles/galaxy
ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force
fi
2024-07-15 12:57:08 +08:00
# Updates the playbook and installs the necessary Ansible roles pinned in requirements.yml. If a -u flag is passed, also updates the requirements.yml file with new role versions (if available)
update *flags : update -playbook -only
#!/usr/bin/env sh
if [ -x " $( command -v agru) " ] ; then
echo { { if flags = = "" { "Installing roles pinned in requirements.yml..." } else if flags = = "-u" { "Updating roles and pinning new versions in requirements.yml..." } else { "Unknown flags passed" } } }
agru { { flags } }
else
echo "[NOTE] You are using the standard ansible-galaxy tool to install roles, which is slow and lacks other features. We recommend installing the 'agru' tool to speed up the process: https://gitlab.com/etke.cc/tools/agru#where-to-get"
echo "Installing roles..."
rm -rf roles/galaxy
ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force
fi
# Updates the playbook without installing/updating Ansible roles
update-playbook-only :
@echo "Updating playbook..."
@git stash -q
@git pull -q
@-git stash pop -q
2023-01-11 21:05:49 +08:00
# Runs ansible-lint against all roles in the playbook
lint :
2023-03-25 23:47:13 +08:00
ansible-lint
2023-01-11 21:05:49 +08:00
# Runs the playbook with --tags=install-all,ensure-matrix-users-created,start and optional arguments
install-all *extra_args : (run -tags "install -all , ensure -matrix -users -created , start " extra_args )
2023-03-19 14:12:37 +08:00
# Runs installation tasks for a single service
2023-03-20 21:05:19 +08:00
install-service service *extra_args :
2023-03-28 15:55:11 +08:00
just --justfile { { justfile( ) } } run \
--tags= install-{ { service } } ,start-group \
--extra-vars= group = { { service } } \
--extra-vars= devture_systemd_service_manager_service_restart_mode = one-by-one { { extra_args } }
2023-03-19 14:12:37 +08:00
2023-01-11 21:05:49 +08:00
# Runs the playbook with --tags=setup-all,ensure-matrix-users-created,start and optional arguments
setup-all *extra_args : (run -tags "setup -all , ensure -matrix -users -created , start " extra_args )
# Runs the playbook with the given list of arguments
run +extra_args :
2023-04-01 11:34:59 +08:00
ansible-playbook -i inventory/hosts setup.yml { { extra_args } }
2023-01-11 21:05:49 +08:00
# Runs the playbook with the given list of comma-separated tags and optional arguments
run-tags tags *extra_args :
2023-03-25 23:47:13 +08:00
just --justfile { { justfile( ) } } run --tags= { { tags } } { { extra_args } }
2023-01-11 21:05:49 +08:00
# Runs the playbook in user-registration mode
register-user username password admin_yes_or_no *extra_args :
2023-04-01 11:34:59 +08:00
ansible-playbook -i inventory/hosts setup.yml --tags= register-user --extra-vars= "username={{ username }} password={{ password }} admin={{ admin_yes_or_no }}" { { extra_args } }
2023-01-11 21:05:49 +08:00
# Starts all services
start-all *extra_args : (run -tags "start -all " extra_args )
# Starts a specific service group
start-group group *extra_args :
2023-03-25 23:47:13 +08:00
@just --justfile { { justfile( ) } } run-tags start-group --extra-vars= "group={{ group }}" { { extra_args } }
2023-01-11 21:05:49 +08:00
# Stops all services
stop-all *extra_args : (run -tags "stop -all " extra_args )
# Stops a specific service group
stop-group group *extra_args :
2023-03-25 23:47:13 +08:00
@just --justfile { { justfile( ) } } run-tags stop-group --extra-vars= "group={{ group }}" { { extra_args } }
2024-02-19 16:13:36 +08:00
# Rebuilds the mautrix-meta-instagram Ansible role using the mautrix-meta-messenger role as a source
rebuild-mautrix-meta-instagram :
/bin/bash { { justfile_directory( ) } } /bin/rebuild-mautrix-meta-instagram.sh { { justfile_directory( ) } } /roles/custom