###
# Sanity checks
###
# The app's username must not conflict with a pre-existing, unmanaged user
# (the user is considered unmanaged if the app's home directory doesn't exist)
if "{{ vade.app.username }}" in host.get_fact(Users) and not host.get_fact(Directory, path="{{ vade.internal.app.paths.home }}"):
raise DeployError(
"Your application's name (`{{ vade.app.username }}`) conflicts with an existing user on the "
"system. Please choose a different one and try again."
)
###
# Initialize application
###
server.user(
name="Ensure app user exists",
user="{{ vade.app.username }}",
system=True,
ensure_home=False,
)
files.directory(
name="Ensure app directory exists",
path="{{ vade.internal.app.paths.home }}",
user="{{ vade.app.username }}",
group="{{ vade.app.username }}",
mode="755",
)
files.directory(
name="Ensure storage directory exists",
path="{{ vade.app.paths.storage }}",
user="{{ vade.app.username }}",
group="{{ vade.app.username }}",
mode="700",
)
files.file(
name="Ensure secrets file exists",
path="{{ vade.app.paths.secrets }}",
user="root",
group="root",
mode="600",
)