From f12cb0b6068d7e923eb1d9f48e2c44e8a8e22a24 Mon Sep 17 00:00:00 2001 From: Eran Gampel Date: Thu, 31 Dec 2015 09:42:29 +0200 Subject: [PATCH] Run etcd as a service in fedora (systemd) Change-Id: I53a720bcc40c6caf3d4d94d4240bfaa1684d9d65 --- devstack/etcd.service | 15 ++++++++++++ devstack/etcd.service.conf | 41 +++++++++++++++++++++++++++++++++ devstack/etcd_driver | 47 ++++++++++++++++++++++++++++++++++---- 3 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 devstack/etcd.service create mode 100644 devstack/etcd.service.conf diff --git a/devstack/etcd.service b/devstack/etcd.service new file mode 100644 index 000000000..0444feed3 --- /dev/null +++ b/devstack/etcd.service @@ -0,0 +1,15 @@ +[Unit] +Description=Etcd Server +After=network.target + +[Service] +Type=notify +WorkingDirectory=/var/lib/etcd/ +EnvironmentFile=-/etc/etcd/etcd.conf +#User=etcd +ExecStart=/usr/local/bin/etcd +Restart=on-failure +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target diff --git a/devstack/etcd.service.conf b/devstack/etcd.service.conf new file mode 100644 index 000000000..0b1e4b8ad --- /dev/null +++ b/devstack/etcd.service.conf @@ -0,0 +1,41 @@ +# [member] +#ETCD_NAME=default +#ETCD_DATA_DIR="/var/lib/etcd/default.etcd" +#ETCD_SNAPSHOT_COUNTER="10000" +#ETCD_HEARTBEAT_INTERVAL="100" +#ETCD_ELECTION_TIMEOUT="1000" +#ETCD_LISTEN_PEER_URLS="http://localhost:2380" +#ETCD_LISTEN_CLIENT_URLS="http://localhost:2379" +#ETCD_MAX_SNAPSHOTS="5" +#ETCD_MAX_WALS="5" +#ETCD_CORS="" +# +#[cluster] +#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" +# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..." +#ETCD_INITIAL_CLUSTER="default=http://localhost:2380" +#ETCD_INITIAL_CLUSTER_STATE="new" +#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" +#ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379" +#ETCD_DISCOVERY="" +#ETCD_DISCOVERY_SRV="" +#ETCD_DISCOVERY_FALLBACK="proxy" +#ETCD_DISCOVERY_PROXY="" +# +#[proxy] +#ETCD_PROXY="off" +# +#[security] +#ETCD_CERT_FILE="" +#ETCD_KEY_FILE="" +#ETCD_CLIENT_CERT_AUTH="false" +#ETCD_TRUSTED_CA_FILE="" +#ETCD_PEER_CERT_FILE="" +#ETCD_PEER_KEY_FILE="" +#ETCD_PEER_CLIENT_CERT_AUTH="false" +#ETCD_PEER_TRUSTED_CA_FILE="" +# +#[logging] +#ETCD_DEBUG="false" +# examples for -log-package-levels etcdserver=WARNING,security=DEBUG +#ETCD_LOG_PACKAGE_LEVELS="" diff --git a/devstack/etcd_driver b/devstack/etcd_driver index 878066fa7..9b72cec7b 100644 --- a/devstack/etcd_driver +++ b/devstack/etcd_driver @@ -11,8 +11,35 @@ ETCD_VERSION=v2.2.2 +function configure_etcd_systemd_service { + ETCD_CONF_DIR=/etc/etcd + ETCD_CONF=$ETCD_CONF_DIR/etcd.conf + ETCD_DATA_DIR="/var/lib/etcd" + # Delete any existing etcd database: + sudo rm -rf $ETCD_DATA_DIR + sudo mkdir -p $ETCD_DATA_DIR + + sudo rm -rf $ETCD_CONF_DIR + sudo install -d -o $STACK_USER $ETCD_CONF_DIR + cp $DEST/dragonflow/devstack/etcd.service.conf $ETCD_CONF + + iniset $ETCD_CONF DEFAULT ETCD_INITIAL_CLUSTER "$HOSTNAME=http://$REMOTE_DB_IP:2380" + iniset $ETCD_CONF DEFAULT ETCD_INITIAL_CLUSTER_STATE "new" + iniset $ETCD_CONF DEFAULT ETCD_INITIAL_CLUSTER_TOKEN "etcd-cluster-01" + iniset $ETCD_CONF DEFAULT ETCD_INITIAL_ADVERTISE_PEER_URLS "http://$REMOTE_DB_IP:2380" + iniset $ETCD_CONF DEFAULT ETCD_DATA_DIR "$ETCD_DATA_DIR" + iniset $ETCD_CONF DEFAULT ETCD_LISTEN_PEER_URLS "http://0.0.0.0:2380" + iniset $ETCD_CONF DEFAULT ETCD_LISTEN_CLIENT_URLS "http://$REMOTE_DB_IP:4001" + iniset $ETCD_CONF DEFAULT ETCD_ADVERTISE_CLIENT_URLS "http://$REMOTE_DB_IP:4001" + iniset $ETCD_CONF DEFAULT ETCD_NAME "$HOSTNAME" + + sudo cp $DEST/dragonflow/devstack/etcd.service /lib/systemd/system/ + sudo systemctl enable etcd +} + function configure_etcd { + sudo cp $DEST/dragonflow/devstack/etcd.conf /etc/init/etcd.conf # Delete any existing etcd database: sudo rm -rf /var/etcd @@ -43,9 +70,13 @@ function nb_db_driver_install_server { wget https://github.com/coreos/etcd/releases/download/$ETCD_VERSION/etcd-$ETCD_VERSION-linux-amd64.tar.gz -O $DEST/etcd/etcd-$ETCD_VERSION-linux-amd64.tar.gz tar xzvf $DEST/etcd/etcd-$ETCD_VERSION-linux-amd64.tar.gz -C $DEST/etcd sudo cp $DEST/etcd/etcd-$ETCD_VERSION-linux-amd64/etcd /usr/local/bin/etcd - sudo cp $DEST/dragonflow/devstack/etcd.conf /etc/init/etcd.conf fi - configure_etcd + + if is_ubuntu; then + configure_etcd + elif is_fedora; then + configure_etcd_systemd_service + fi fi } @@ -64,13 +95,21 @@ function nb_db_driver_status_server function nb_db_driver_start_server { if is_service_enabled df-etcd-server ; then - sudo initctl start etcd + if is_ubuntu; then + sudo initctl start etcd + elif is_fedora; then + sudo systemctl start etcd + fi fi } function nb_db_driver_stop_server { if is_service_enabled df-etcd-server ; then - sudo initctl stop etcd + if is_ubuntu; then + sudo initctl stop etcd + elif is_fedora; then + sudo systemctl stop etcd + fi fi }