@@ -6,7 +6,14 @@ BINARIES_DIR="$PWD/bin"
66CONTRIB_DIR=" $PWD /contrib"
77CONFIG_DIR=" $PWD /test/integration/config"
88CONFIG_DIR_PROV=" $PWD /test/integration/provider"
9- PROVIDER_BIN_DIR=" /opt/garm/providers.d/lxd"
9+ GARM_CONFIG_DIR=${GARM_CONFIG_DIR:- " /etc/garm" }
10+ PROVIDER_BIN_DIR=" $GARM_CONFIG_DIR /providers.d/lxd"
11+ IS_GH_WORKFLOW=${IS_GH_WORKFLOW:- " true" }
12+ export LXD_PROVIDER_LOCATION=${LXD_PROVIDER_LOCATION:- " " }
13+ export RUN_USER=${RUN_USER:- " garm" }
14+ export GARM_PORT=${GARM_PORT:- " 9997" }
15+ export GARM_SERVICE_NAME=${GARM_SERVICE_NAME:- " garm" }
16+ export GARM_CONFIG_FILE=${GARM_CONFIG_FILE:- " ${GARM_CONFIG_DIR} /config.toml" }
1017
1118if [[ ! -f $BINARIES_DIR /garm ]] || [[ ! -f $BINARIES_DIR /garm-cli ]]; then
1219 echo " ERROR: Please build GARM binaries first"
@@ -41,33 +48,54 @@ function wait_open_port() {
4148export JWT_AUTH_SECRET=" $( generate_secret) "
4249export DB_PASSPHRASE=" $( generate_secret) "
4350
44- # Group "adm" is the LXD daemon group as set by the "canonical/setup-lxd" GitHub action.
45- sudo useradd --shell /usr/bin/false --system --groups adm --no-create-home garm
46- sudo mkdir -p /etc/garm
51+ if [ $IS_GH_WORKFLOW == " true" ]; then
52+ # Group "adm" is the LXD daemon group as set by the "canonical/setup-lxd" GitHub action.
53+ sudo useradd --shell /usr/bin/false --system --groups adm --no-create-home garm
54+ fi
55+
56+ sudo mkdir -p ${GARM_CONFIG_DIR}
4757sudo mkdir -p $PROVIDER_BIN_DIR
58+ sudo chown -R $RUN_USER :$RUN_USER ${PROVIDER_BIN_DIR}
59+ sudo chown -R $RUN_USER :$RUN_USER ${GARM_CONFIG_DIR}
4860
4961export LXD_PROVIDER_EXECUTABLE=" $PROVIDER_BIN_DIR /garm-provider-lxd"
50- export LXD_PROVIDER_CONFIG=" /etc/garm /garm-provider-lxd.toml"
62+ export LXD_PROVIDER_CONFIG=" ${GARM_CONFIG_DIR} /garm-provider-lxd.toml"
5163sudo cp $CONFIG_DIR /garm-provider-lxd.toml $LXD_PROVIDER_CONFIG
5264
53- git clone https://github.com/cloudbase/garm-provider-lxd ~ /garm-provider-lxd
54- pushd ~ /garm-provider-lxd
55- go build -o $LXD_PROVIDER_EXECUTABLE
56- popd
65+ function clone_and_build_lxd_provider() {
66+ git clone https://github.com/cloudbase/garm-provider-lxd ~ /garm-provider-lxd
67+ pushd ~ /garm-provider-lxd
68+ go build -o $LXD_PROVIDER_EXECUTABLE
69+ popd
70+ }
5771
58- cat $CONFIG_DIR /config.toml | envsubst | sudo tee /etc/garm/config.toml
59- sudo chown -R garm:garm /etc/garm
72+ if [ $IS_GH_WORKFLOW == " true" ]; then
73+ clone_and_build_lxd_provider
74+ else
75+ if [ -z " $LXD_PROVIDER_LOCATION " ]; then
76+ clone_and_build_lxd_provider
77+ else
78+ cp $LXD_PROVIDER_LOCATION $LXD_PROVIDER_EXECUTABLE
79+ fi
6080
61- sudo mkdir /etc/garm/test-provider
81+ fi
82+
83+ cat $CONFIG_DIR /config.toml | envsubst | sudo tee ${GARM_CONFIG_DIR} /config.toml > /dev/null
84+ sudo chown -R $RUN_USER :$RUN_USER ${GARM_CONFIG_DIR}
85+
86+ sudo mkdir -p ${GARM_CONFIG_DIR} /test-provider
6287sudo touch $CONFIG_DIR_PROV /config
63- sudo cp $CONFIG_DIR_PROV /* /etc/garm/ test-provider
88+ sudo cp $CONFIG_DIR_PROV /* ${GARM_CONFIG_DIR} / test-provider
6489
6590sudo mv $BINARIES_DIR /* /usr/local/bin/
66- sudo cp $CONTRIB_DIR /garm.service /etc/systemd/system/garm.service
67-
68- sudo systemctl daemon-reload
69- sudo systemctl start garm
91+ mkdir -p $HOME /.local/share/systemd/user/
92+ cat $CONFIG_DIR /garm.service| envsubst | tee $HOME /.local/share/systemd/user/${GARM_SERVICE_NAME} .service > /dev/null
93+ sudo chown -R $RUN_USER :$RUN_USER ${GARM_CONFIG_DIR}
7094
71- wait_open_port 127.0.0.1 9997
95+ systemctl --user daemon-reload
96+ systemctl --user restart ${GARM_SERVICE_NAME}
97+ wait_open_port 127.0.0.1 ${GARM_PORT}
7298
7399echo " GARM is up and running"
100+ echo " GARM config file is $GARM_CONFIG_FILE "
101+ echo " GARM service name is $GARM_SERVICE_NAME "
0 commit comments