mirror of
https://github.com/fluencelabs/tendermint
synced 2025-05-17 17:11:19 +00:00
152 lines
4.2 KiB
Markdown
152 lines
4.2 KiB
Markdown
# Ansible role for Tendermint
|
|
|
|

|
|
|
|
* [Requirements](#requirements)
|
|
* [Variables](#variables)
|
|
* [Handlers](#handlers)
|
|
* [Example playbook that configures a Tendermint on Ubuntu](#example-playbook-that-configures-a-tendermint-on-ubuntu)
|
|
|
|
`ansible-tendermint` is an [ansible](http://www.ansible.com/) role which:
|
|
|
|
* installs tendermint
|
|
* configures tendermint
|
|
* configures tendermint service
|
|
|
|
## Requirements
|
|
|
|
This role requires Ansible 2.0 or higher.
|
|
|
|
## Variables
|
|
|
|
Here is a list of all the default variables for this role, which are also
|
|
available in `defaults/main.yml`.
|
|
|
|
```
|
|
tendermint_version: 0.9.0
|
|
tendermint_archive: "tendermint_{{tendermint_version}}_linux_amd64.zip"
|
|
tendermint_download: "https://s3-us-west-2.amazonaws.com/tendermint/{{tendermint_version}}/{{tendermint_archive}}"
|
|
tendermint_download_folder: /tmp
|
|
|
|
tendermint_user: tendermint
|
|
tendermint_group: tendermint
|
|
|
|
# Upstart start/stop conditions can vary by distribution and environment
|
|
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_node_port: 46656
|
|
tendermint_rpc_port: 46657
|
|
tendermint_proxy_app: "tcp://127.0.0.1:46658"
|
|
tendermint_node_laddr: "tcp://0.0.0.0:{{tendermint_node_port}}"
|
|
tendermint_rpc_laddr: "tcp://0.0.0.0:{{tendermint_rpc_port}}"
|
|
tendermint_seeds: ""
|
|
tendermint_fast_sync: true
|
|
tendermint_db_backend: leveldb
|
|
tendermint_log_level: notice
|
|
tendermint_genesis_file: "{{tendermint_home}}/genesis.json"
|
|
tendermint_abci: socket
|
|
tendermint_skip_upnp: false
|
|
tendermint_addrbook_file: "{{tendermint_home}}/addrbook.json"
|
|
tendermint_addrbook_strict: true
|
|
tendermint_pex_reactor: false
|
|
tendermint_priv_validator_file: "{{tendermint_home}}/priv_validator.json"
|
|
tendermint_db_dir: "{{tendermint_home}}/data"
|
|
tendermint_grpc_laddr: ""
|
|
tendermint_prof_laddr: ""
|
|
tendermint_cs_wal_file: "{{tendermint_db_dir}}/cs.wal/wal"
|
|
tendermint_cs_wal_light: false
|
|
tendermint_filter_peers: false
|
|
tendermint_block_size: 10000
|
|
tendermint_block_part_size: 65536
|
|
tendermint_disable_data_hash: false
|
|
# all timeouts are in milliseconds
|
|
tendermint_timeout_propose: 3000
|
|
tendermint_timeout_propose_delta: 500
|
|
tendermint_timeout_prevote: 1000
|
|
tendermint_timeout_prevote_delta: 500
|
|
tendermint_timeout_precommit: 1000
|
|
tendermint_timeout_precommit_delta: 500
|
|
tendermint_timeout_commit: 1000
|
|
tendermint_skip_timeout_commit: false
|
|
tendermint_mempool_recheck: true
|
|
tendermint_mempool_recheck_empty: true
|
|
tendermint_mempool_broadcast: true
|
|
tendermint_mempool_wal_dir: "{{tendermint_db_dir}}/mempool.wal"
|
|
|
|
tendermint_log_file: /var/log/tendermint.log
|
|
|
|
tendermint_chain_id: mychain
|
|
tendermint_genesis_time: "{{ansible_date_time.iso8601_micro}}"
|
|
tendermint_validators: []
|
|
```
|
|
|
|
## Handlers
|
|
|
|
These are the handlers that are defined in `handlers/main.yml`.
|
|
|
|
* `restart tendermint`
|
|
* `reload systemd`
|
|
|
|
## Example playbook that configures a Tendermint on Ubuntu 14.04
|
|
|
|
```
|
|
---
|
|
|
|
- hosts: all
|
|
vars:
|
|
tendermint_chain_id: MyAwesomeChain
|
|
tendermint_seeds: "172.13.0.1:46656,172.13.0.2:46656,172.13.0.3:46656"
|
|
roles:
|
|
- ansible-tendermint
|
|
```
|
|
|
|
This playbook will install Tendermint and will create all the
|
|
required directories. But **it won't start the Tendermint if no
|
|
validators were given**.
|
|
|
|
You will need to collect validators public keys manually or using
|
|
`collect_public_keys.yml` given you have SSH access to all the nodes and set `tendermint_validators` variable:
|
|
|
|
```
|
|
---
|
|
|
|
- hosts: all
|
|
vars:
|
|
tendermint_chain_id: MyAwesomeChain
|
|
tendermint_seeds: "172.13.0.1:46656,172.13.0.2:46656,172.13.0.3:46656"
|
|
tendermint_validators:
|
|
- pub_key:
|
|
- 1
|
|
- 1F017E488A6327FAFBBE092193B427912E117733DE6AF72150BF09AA58411E7F
|
|
amount: 10
|
|
name: paris
|
|
roles:
|
|
- ansible-tendermint
|
|
```
|
|
|
|
### Example playbook that configures a Tendermint with in-proc dummy app
|
|
|
|
```
|
|
---
|
|
|
|
- hosts: all
|
|
vars:
|
|
tendermint_chain_id: MyAwesomeChain
|
|
tendermint_proxy_app: dummy
|
|
roles:
|
|
- ansible-tendermint
|
|
```
|
|
|
|
## Testing
|
|
|
|
```
|
|
vagrant up
|
|
```
|