From 649a4852751dd0da5925d0e965093ef120f0aa55 Mon Sep 17 00:00:00 2001 From: Anton Kaliaev Date: Mon, 3 Apr 2017 20:42:09 +0400 Subject: [PATCH] [ansible-tendermint] systemd template --- ansible-tendermint/README.md | 5 +++++ ansible-tendermint/defaults/main.yml | 4 ++++ ansible-tendermint/handlers/main.yml | 4 ++++ ansible-tendermint/tasks/install.yml | 14 +++++++++++++- ansible-tendermint/tasks/main.yml | 5 ----- ansible-tendermint/tasks/start.yml | 6 ++++++ ansible-tendermint/templates/tendermint.conf.j2 | 2 +- .../templates/tendermint.systemd.j2 | 17 +++++++++++++++++ 8 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 ansible-tendermint/templates/tendermint.systemd.j2 diff --git a/ansible-tendermint/README.md b/ansible-tendermint/README.md index dadde9b3d..3b02fcd0e 100644 --- a/ansible-tendermint/README.md +++ b/ansible-tendermint/README.md @@ -29,6 +29,10 @@ tendermint_group: tendermint tendermint_upstart_start_on: start on runlevel [345] tendermint_upstart_stop_on: stop on runlevel [!345] tendermint_manage_service: true +tendermint_use_upstart: true +tendermint_use_systemd: false +tendermint_upstart_template: "tendermint.conf.j2" +tendermint_systemd_template: "tendermint.systemd.j2" tendermint_home: /opt/tendermint tendermint_rpc_port: 46657 @@ -38,6 +42,7 @@ tendermint_log_file: /var/log/tendermint.log tendermint_chain_id: mychain tendermint_genesis_time: "{{ansible_date_time.iso8601_micro}}" +tendermint_seeds: "" ``` You can also change `templates/config.toml.j2` to suit your needs. diff --git a/ansible-tendermint/defaults/main.yml b/ansible-tendermint/defaults/main.yml index d3513d44e..cc0cd7633 100644 --- a/ansible-tendermint/defaults/main.yml +++ b/ansible-tendermint/defaults/main.yml @@ -11,6 +11,10 @@ tendermint_group: tendermint tendermint_upstart_start_on: start on runlevel [345] tendermint_upstart_stop_on: stop on runlevel [!345] tendermint_manage_service: true +tendermint_use_upstart: true +tendermint_use_systemd: false +tendermint_upstart_template: "tendermint.conf.j2" +tendermint_systemd_template: "tendermint.systemd.j2" tendermint_home: /opt/tendermint tendermint_rpc_port: 46657 diff --git a/ansible-tendermint/handlers/main.yml b/ansible-tendermint/handlers/main.yml index 788c67456..dab7e901e 100644 --- a/ansible-tendermint/handlers/main.yml +++ b/ansible-tendermint/handlers/main.yml @@ -1,5 +1,9 @@ --- +- name: reload systemd + become: true + command: systemctl daemon-reload + - name: restart tendermint action: service name=tendermint state=restarted enabled=yes when: tendermint_manage_service diff --git a/ansible-tendermint/tasks/install.yml b/ansible-tendermint/tasks/install.yml index 4f5e9ade1..49fe6d0d7 100644 --- a/ansible-tendermint/tasks/install.yml +++ b/ansible-tendermint/tasks/install.yml @@ -103,9 +103,21 @@ - name: copy upstart script template: > - src=tendermint.conf.j2 + src={{tendermint_upstart_template}} dest=/etc/init/tendermint.conf owner=root group=root mode=0644 + when: tendermint_use_upstart # notify: restart tendermint + +- name: copy systemd script + template: > + src={{tendermint_systemd_template}} + dest=/etc/systemd/system/tendermint.service + owner=root + group=root + mode=0644 + when: tendermint_use_systemd + notify: + - reload systemd diff --git a/ansible-tendermint/tasks/main.yml b/ansible-tendermint/tasks/main.yml index f7a109370..cabf64bd4 100644 --- a/ansible-tendermint/tasks/main.yml +++ b/ansible-tendermint/tasks/main.yml @@ -5,9 +5,4 @@ - "{{ ansible_os_family }}-{{ ansible_distribution_major_version}}.yml" - "{{ ansible_os_family }}.yml" - include: install.yml -- service: > - name=tendermint - state=stopped - enabled=yes - when: tendermint_manage_service - include: start.yml diff --git a/ansible-tendermint/tasks/start.yml b/ansible-tendermint/tasks/start.yml index 8159af0c3..5bbbc04a1 100644 --- a/ansible-tendermint/tasks/start.yml +++ b/ansible-tendermint/tasks/start.yml @@ -18,3 +18,9 @@ shell: echo "restarting ..." when: genesis_file_copied|changed and num_validators.stdout|int > 0 notify: restart tendermint + +- service: > + name=tendermint + state=started + enabled=yes + when: tendermint_manage_service diff --git a/ansible-tendermint/templates/tendermint.conf.j2 b/ansible-tendermint/templates/tendermint.conf.j2 index b1d9f04dd..673f0246a 100644 --- a/ansible-tendermint/templates/tendermint.conf.j2 +++ b/ansible-tendermint/templates/tendermint.conf.j2 @@ -6,7 +6,7 @@ stop on {{ tendermint_upstart_stop_on }} script # Use su to become tendermint user non-interactively on old Upstart versions (see http://superuser.com/a/234541/76168) - exec su -s /bin/sh -c 'TMROOT={{tendermint_home}} exec "$0" "$@" > {{ tendermint_log_file }} &2>1' tendermint -- /usr/local/bin/tendermint node \ + exec su -s /bin/sh -c 'TMROOT={{tendermint_home}} exec "$0" "$@" >> {{ tendermint_log_file }} 2>&1' tendermint -- /usr/local/bin/tendermint node \ --moniker={{inventory_hostname}} end script diff --git a/ansible-tendermint/templates/tendermint.systemd.j2 b/ansible-tendermint/templates/tendermint.systemd.j2 new file mode 100644 index 000000000..e15803505 --- /dev/null +++ b/ansible-tendermint/templates/tendermint.systemd.j2 @@ -0,0 +1,17 @@ +[Unit] +Description=Tendermint +Requires=network-online.target +After=network-online.target + +[Service] +Environment="TMROOT={{tendermint_home}}" +Restart=on-failure +User={{ tendermint_user }} +Group={{ tendermint_group }} +PermissionsStartOnly=true +ExecStart=/usr/local/bin/tendermint node --moniker={{inventory_hostname}} +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGINT + +[Install] +WantedBy=multi-user.target