Created
November 12, 2018 08:42
-
-
Save chiptus/f3c0d2075e81dea5425cce79842a3d4c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# TODO | |
# 1. Add vpn option (to Wants and After) | |
# openvpn-client@<vpnprovider>.service | |
NODE_SERVICE_FILE=/etc/systemd/system/tezos-node.service | |
BAKER_SERVICE_FILE=/etc/systemd/system/tezos-baker.service | |
ACCUSER_SERVICE_FILE=/etc/systemd/system/tezos-accuser.service | |
ENDORSER_SERVICE_FILE=/etc/systemd/system/tezos-endorser.service | |
IS_BAKERY=$1 | |
main() { | |
check_sudo | |
create_services | |
} | |
check_sudo() { | |
sudo -k # make sure to ask for password on next sudo | |
if ! sudo true; then | |
echo "This script should be run as sudo" | |
exit 1 | |
fi | |
} | |
create_services () { | |
create_service node | |
if [ ! -z "$IS_BAKERY" ] ; then | |
echo "creating bakery services" | |
create_service baker | |
create_service endorser | |
create_service accuser | |
fi | |
} | |
stop_services() { | |
stop_service node | |
if [ ! -z "$IS_BAKERY" ] ; then | |
stop_service baker | |
stop_service endorser | |
stop_service accuser | |
fi | |
} | |
stop_servic() { | |
sudo systemctl stop tezos-$1.service | |
} | |
delete_services() { | |
stop_services | |
rm -f $NODE_SERVICE_FILE $BAKER_SERVICE_FILE $ACCUSER_SERVICE_FILE $ENDORSER_SERVICE_FILE | |
} | |
create_service() { | |
"$1_service_file_content" > /etc/systemd/system/tezos-$1.service | |
systemctl enable tezos-$1.service | |
systemctl start tezos-$1.service | |
} | |
node_service_file_content() { | |
required_by="" | |
if [ ! -z "$IS_BAKERY" ] ; then | |
required_by="RequiredBy = tezos-baker.service tezos-endorser.service tezos-accuser.service" | |
fi | |
cat <<- EOF | |
# The Tezos Node service (part of systemd) | |
# file: $NODE_SERVICE_FILE | |
[Unit] | |
Description = Tezos Node Service | |
Documentation = http://tezos.gitlab.io/betanet/ | |
Wants = network-online.target | |
After = network-online.target | |
[Service] | |
User = $USER | |
Group = $USER | |
WorkingDirectory = $HOME | |
ExecStart = $HOME/tezos/tezos-node run --bootstrap-threshold=1 | |
Restart = on-failure | |
[Install] | |
WantedBy = multi-user.target | |
$required_by | |
EOF | |
} | |
baker_service_file_content() { | |
cat <<- EOF | |
# The Tezos Baker service (part of systemd) | |
# file: /etc/systemd/system/tezos-baker.service | |
[Unit] | |
Description = Tezos Baker Service | |
Wants = network-online.target | |
BindsTo = tezos-node.service | |
After = tezos-node.service | |
[Service] | |
User = $USER | |
Group = $USER | |
ExecStartPre = /bin/sleep 1 | |
WorkingDirectory = $HOME | |
ExecStart = $HOME/tezos/tezos-baker-002-PsYLVpVv run with local node /home/baker/.tezos-node ledger_bakerone_ed_0_0 | |
Restart = on-failure | |
[Install] | |
WantedBy = multi-user.target | |
EOF | |
} | |
endorser_service_file_content() { | |
cat <<- EOF | |
# The Tezos Endorser service (part of systemd) | |
# file: /etc/systemd/system/tezos-endorser.service | |
[Unit] | |
Description = Tezos Endorser Service | |
Wants = network-online.target | |
BindsTo = tezos-node.service | |
After = tezos-node.service | |
[Service] | |
User = $USER | |
Group = $USER | |
ExecStartPre = /bin/sleep 1 | |
WorkingDirectory = $HOME | |
ExecStart = $HOME/tezos/tezos-endorser-002-PsYLVpVv run ledger_bakerone_ed_0_0 | |
Restart = on-failure | |
[Install] | |
WantedBy = multi-user.target | |
EOF | |
} | |
accuser_service_file_content() { | |
cat <<- EOF | |
# The Tezos Accuser service (part of systemd) | |
# file: /etc/systemd/system/tezos-accuser.service | |
[Unit] | |
Description = Tezos Accuser Service | |
Wants = network-online.target | |
BindsTo = tezos-node.service | |
After = tezos-node.service | |
[Service] | |
User = $USER | |
Group = $USER | |
WorkingDirectory = $HOME | |
ExecStartPre = /bin/sleep 1 | |
ExecStart = $HOME/tezos/tezos-accuser-002-PsYLVpVv run | |
Restart = on-failure | |
[Install] | |
WantedBy = multi-user.target | |
EOF | |
} | |
main | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment