Skip to content

Instantly share code, notes, and snippets.

@chiptus
Created November 12, 2018 08:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chiptus/f3c0d2075e81dea5425cce79842a3d4c to your computer and use it in GitHub Desktop.
Save chiptus/f3c0d2075e81dea5425cce79842a3d4c to your computer and use it in GitHub Desktop.
#!/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