From 555d591c8060bc26e41a2f72975546acf2c435df Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Thu, 7 Sep 2017 17:23:13 -0400 Subject: [PATCH 01/46] Reorganized public_testnet app_option, changed config.toml to create empty blocks every second --- ansible/app_options_files/public_testnet | 36 ++++++++----------- ansible/install.yml | 2 +- ansible/roles/config/tasks/main.yml | 2 +- ansible/roles/config/templates/config.toml.j2 | 29 +++++++-------- 4 files changed, 31 insertions(+), 38 deletions(-) diff --git a/ansible/app_options_files/public_testnet b/ansible/app_options_files/public_testnet index 8a6732fe0..10f5f9d90 100644 --- a/ansible/app_options_files/public_testnet +++ b/ansible/app_options_files/public_testnet @@ -13,6 +13,20 @@ } ] }, + { + "name": "gregkey", + "address": "B01C264BFE9CBD45458256E613A6F07061A3A6B6", + "pub_key": { + "type": "ed25519", + "data": "E1FFBD187FA2A922CE1B367532CEAC1AD8E606D576AB0D2E2CAA7EC6B7DAC10F" + }, + "coins": [ + { + "denom": "mycoin", + "amount": 9007199254740991 + } + ] + }, { "name": "anton", "address": "40CC622438D3E42148A1FFD3A27C07C100F8FA3D", @@ -93,28 +107,6 @@ } ] }, - { - "name": "gregkey", - "address": "B01C264BFE9CBD45458256E613A6F07061A3A6B6", - "pubkey": { - "type": "ed25519", - "data": "E1FFBD187FA2A922CE1B367532CEAC1AD8E606D576AB0D2E2CAA7EC6B7DAC10F" - }, - "coins": [ - { - "denom": "mycoin", - "amount": 3478765434568 - }, - { - "denom": "buckyball", - "amount": 8367251830291 - }, - { - "denom": "playmoney", - "amount": 9999999999999 - } - ] - }, { "name": "shadow", "address": "B140EFAAE6D5CA1C8E98814C557AF7112E3B9EAE", diff --git a/ansible/install.yml b/ansible/install.yml index e46bd6398..82c34dae0 100644 --- a/ansible/install.yml +++ b/ansible/install.yml @@ -7,6 +7,6 @@ roles: - install - {role: generic-service, when: service == 'tendermint'} - - {role: config, testnet_name: "{{lookup('env','TF_VAR_TESTNET_NAME')}}"} + - {role: config, testnet_name: "{{lookup('env','TF_VAR_TESTNET_NAME')}}", tags: reconfig } - start diff --git a/ansible/roles/config/tasks/main.yml b/ansible/roles/config/tasks/main.yml index 9a9fe3e5f..730bf3abb 100644 --- a/ansible/roles/config/tasks/main.yml +++ b/ansible/roles/config/tasks/main.yml @@ -39,7 +39,7 @@ copy: "src={{service_genesis_file}} dest=/etc/{{service}}/genesis.json owner={{service}} group={{service}}" - name: copy tendermint config.toml - tags: reconfig + tags: reconfig-toml when: validators == true or validators == 'true' template: src: config.toml.j2 diff --git a/ansible/roles/config/templates/config.toml.j2 b/ansible/roles/config/templates/config.toml.j2 index 79e39c39f..b7f3d324d 100644 --- a/ansible/roles/config/templates/config.toml.j2 +++ b/ansible/roles/config/templates/config.toml.j2 @@ -11,24 +11,25 @@ log_level = "state:info,*:error" [rpc] laddr = "tcp://0.0.0.0:46657" -[mempool] -recheck = false -broadcast = false -wal_dir = "" +#[mempool] +#recheck = false +#broadcast = false +#wal_dir = "" [consensus] -max_block_size_txs = 10000 -create_empty_blocks = false -timeout_propose = 10000 -skip_timeout_commit = true -timeout_commit = 1 -wal_light = true -block_part_size = 262144 +#max_block_size_txs = 10000 +#create_empty_blocks = false +#timeout_propose = 10000 +#skip_timeout_commit = true +#timeout_commit = 1 +#wal_light = true +#block_part_size = 262144 +create_empty_blocks_interval = 1 [p2p] -max_msg_packet_payload_size=65536 -send_rate=51200000 # 50 MB/s -recv_rate=51200000 # 50 MB/s +#max_msg_packet_payload_size=65536 +#send_rate=51200000 # 50 MB/s +#recv_rate=51200000 # 50 MB/s laddr = "tcp://0.0.0.0:46656" {% if validators == true or validators == 'true' %} {% set comma = joiner(",") %}seeds = "{% for host in ((groups[testnet_name]|default([]))+(groups['tag_Environment_'~(testnet_name|regex_replace('-','_'))]|default([])))|difference(inventory_hostname) %}{{ comma() }}{{hostvars[host]["inventory_hostname"]}}:46656{% endfor %}" From 1b1462607b41ed9e44ea9b5c50dd4ee370639710 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 12:51:12 -0400 Subject: [PATCH 02/46] Added option to push to devops repo --- build/Makefile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/build/Makefile b/build/Makefile index 519db9a4f..839c7f2c1 100644 --- a/build/Makefile +++ b/build/Makefile @@ -188,23 +188,23 @@ package-deb-%: folder-% install-rpm-%: version-% #Make sure your host has the IAM role to read/write the S3 bucket OR that you set up ~/.boto - @echo "*** Uploading $*-$($*_version)-$(BUILD_NUMBER).x86_64.rpm to AWS CentOS repository" - aws s3 sync s3://tendermint-packages/centos/ tmp/s3/ --delete + @echo "*** Uploading $*-$($*_version)-$(BUILD_NUMBER).x86_64.rpm to AWS $(DEVOPS_PATH)CentOS repository" + aws s3 sync s3://tendermint-packages/$(DEVOPS_PATH)centos/ tmp/s3/ --delete mkdir -p tmp/s3/7/os/x86_64/Packages cp RPMS/x86_64/$*-$($*_version)-$(BUILD_NUMBER).x86_64.rpm tmp/s3/7/os/x86_64/Packages cp ./RPM-GPG-KEY-Tendermint tmp/s3/7/os/x86_64/ cp ./tendermint.repo tmp/s3/7/os/x86_64/ rm -f tmp/s3/7/os/x86_64/repodata/*.bz2 tmp/s3/7/os/x86_64/repodata/*.gz tmp/s3/7/os/x86_64/repodata/repomd.xml.asc - createrepo tmp/s3/7/os/x86_64/Packages -u https://do9rmxapsag1v.cloudfront.net/centos/7/os/x86_64/Packages -o tmp/s3/7/os/x86_64 --update -S --repo Tendermint --content tendermint --content basecoin --content ethermint + createrepo tmp/s3/7/os/x86_64/Packages -u https://tendermint-packages.interblock.io/$(DEVOPS_PATH)centos/7/os/x86_64/Packages -o tmp/s3/7/os/x86_64 --update -S --repo Tendermint --content tendermint --content basecoin --content ethermint gpg --batch --passphrase "$(GPG_PASSPHRASE)" --detach-sign -a tmp/s3/7/os/x86_64/repodata/repomd.xml - aws s3 sync tmp/s3/ s3://tendermint-packages/centos/ --delete --acl public-read - @echo "*** Uploaded $* to AWS CentOS repository" + aws s3 sync tmp/s3/ s3://tendermint-packages/$(DEVOPS_PATH)centos/ --delete --acl public-read + @echo "*** Uploaded $* to AWS $(DEVOPS_PATH)CentOS repository" install-deb-%: version-% - @echo "*** Uploading $*-$($*_version)-$(BUILD_NUMBER)_amd64.deb to AWS Debian repository" + @echo "*** Uploading $*-$($*_version)-$(BUILD_NUMBER)_amd64.deb to AWS $(DEVOPS_PATH)Debian repository" @echo "Testing if $*-$($*_version)-$(BUILD_NUMBER)_amd64.deb is already uploaded" test ! -f tmp/debian-s3/pool/$*-$($*_version)-$(BUILD_NUMBER)_amd64.deb - aws s3 sync s3://tendermint-packages/debian/ tmp/debian-s3/ --delete + aws s3 sync s3://tendermint-packages/$(DEVOPS_PATH)debian/ tmp/debian-s3/ --delete @echo "Testing if $*-$($*_version)-$(BUILD_NUMBER)_amd64.deb is already uploaded" test ! -f tmp/debian-s3/pool/$*-$($*_version)-$(BUILD_NUMBER)_amd64.deb cp ./tendermint.list tmp/debian-s3/ @@ -263,8 +263,8 @@ install-deb-%: version-% gpg --batch --passphrase "$(GPG_PASSPHRASE)" --digest-algo SHA512 --clearsign tmp/debian-s3/dists/stable/Release mv tmp/debian-s3/dists/stable/Release.asc tmp/debian-s3/dists/stable/InRelease - aws s3 sync tmp/debian-s3/ s3://tendermint-packages/debian/ --delete --acl public-read - @echo "*** Uploaded $*-$($*_version)-$(BUILD_NUMBER)_amd64.deb to AWS Debian repository" + aws s3 sync tmp/debian-s3/ s3://tendermint-packages/$(DEVOPS_PATH)debian/ --delete --acl public-read + @echo "*** Uploaded $*-$($*_version)-$(BUILD_NUMBER)_amd64.deb to AWS $(DEVOPS_PATH)Debian repository" mostlyclean: rm -rf {BUILDROOT,SOURCES,SPECS,SRPMS,tmp} From bb2bfbc22a7b58add57e0fc3a5764439844783b0 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 14:53:34 -0400 Subject: [PATCH 03/46] Added cosmos-sdk build steps --- build/Makefile | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/build/Makefile b/build/Makefile index 839c7f2c1..cb071e852 100644 --- a/build/Makefile +++ b/build/Makefile @@ -32,12 +32,12 @@ endif # Here comes the real deal ### -binaries = tendermint basecoin ethermint trackomatron gaia -build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia -package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia -install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia -package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia -install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia +binaries = tendermint basecoin ethermint trackomatron gaia cosmos-sdk +build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia build-cosmos-sdk +package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia package-rpm-cosmos-sdk +install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia package-rpm-cosmos-sdk +package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia package-deb-cosmos-sdk +install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia install-deb-cosmos-sdk all: $(binaries) build: $(build-binaries) @@ -90,6 +90,13 @@ build-gaia: git-branch $(MAKE) -C $(GOPATH)/src/github.com/cosmos/gaia get_vendor_deps install @echo "*** Built gaia" +build-cosmos-sdk: git-branch + @echo "*** Building cosmos-sdk" + go get -d -u go github.com/cosmos/cosmos-sdk || echo "Workaround for go downloads." + cd $(GOPATH)/src/github.com/cosmos/cosmos-sdk && git checkout "$(GIT_BRANCH)" && git pull + $(MAKE) -C $(GOPATH)/src/github.com/cosmos/cosmos-sdk get_vendor_deps install + @echo "*** Built cosmos-sdk" + ### # Prepare package files ### @@ -117,6 +124,13 @@ prepare-ethermint = mkdir -p $(build_folder)/etc/ethermint && \ cp -r $(GOPATH)/src/github.com/tendermint/ethermint/setup/keystore $(build_folder)/etc/ethermint prepare-trackomatron = rm -f $(build_folder)/usr/bin/trackomatron && cp $(GOPATH)/bin/tracko $(GOPATH)/bin/trackocli $(build_folder)/usr/bin prepare-gaia = +prepare-cosmos-sdk = cp $(GOPATH)/bin/basecli $(build_folder)/usr/bin && \ + cp $(GOPATH)/bin/basecoin $(build_folder)/usr/bin && \ + cp $(GOPATH)/bin/baseserver $(build_folder)/usr/bin && \ + cp $(GOPATH)/bin/counter $(build_folder)/usr/bin && \ + cp $(GOPATH)/bin/countercli $(build_folder)/usr/bin && \ + cp $(GOPATH)/bin/eyes $(build_folder)/usr/bin && \ + cp $(GOPATH)/bin/eyescli $(build_folder)/usr/bin ### # Package the binary for CentOS/RedHat (RPM) and Debian/Ubuntu (DEB) From 8aeb5a98bdf39bbe69a943714fa179d8e55818b8 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 15:01:28 -0400 Subject: [PATCH 04/46] Changed cosmos-sdk to cosmossdk for the Makefile --- build/Makefile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/build/Makefile b/build/Makefile index cb071e852..36e95bc48 100644 --- a/build/Makefile +++ b/build/Makefile @@ -32,12 +32,12 @@ endif # Here comes the real deal ### -binaries = tendermint basecoin ethermint trackomatron gaia cosmos-sdk -build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia build-cosmos-sdk -package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia package-rpm-cosmos-sdk -install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia package-rpm-cosmos-sdk -package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia package-deb-cosmos-sdk -install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia install-deb-cosmos-sdk +binaries = tendermint basecoin ethermint trackomatron gaia cosmossdk +build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia build-cosmossdk +package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia package-rpm-cosmossdk +install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia package-rpm-cosmossdk +package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia package-deb-cosmossdk +install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia install-deb-cosmossdk all: $(binaries) build: $(build-binaries) @@ -90,12 +90,12 @@ build-gaia: git-branch $(MAKE) -C $(GOPATH)/src/github.com/cosmos/gaia get_vendor_deps install @echo "*** Built gaia" -build-cosmos-sdk: git-branch - @echo "*** Building cosmos-sdk" +build-cosmossdk: git-branch + @echo "*** Building cosmossdk" go get -d -u go github.com/cosmos/cosmos-sdk || echo "Workaround for go downloads." cd $(GOPATH)/src/github.com/cosmos/cosmos-sdk && git checkout "$(GIT_BRANCH)" && git pull $(MAKE) -C $(GOPATH)/src/github.com/cosmos/cosmos-sdk get_vendor_deps install - @echo "*** Built cosmos-sdk" + @echo "*** Built cosmossdk" ### # Prepare package files @@ -124,7 +124,7 @@ prepare-ethermint = mkdir -p $(build_folder)/etc/ethermint && \ cp -r $(GOPATH)/src/github.com/tendermint/ethermint/setup/keystore $(build_folder)/etc/ethermint prepare-trackomatron = rm -f $(build_folder)/usr/bin/trackomatron && cp $(GOPATH)/bin/tracko $(GOPATH)/bin/trackocli $(build_folder)/usr/bin prepare-gaia = -prepare-cosmos-sdk = cp $(GOPATH)/bin/basecli $(build_folder)/usr/bin && \ +prepare-cosmossdk = cp $(GOPATH)/bin/basecli $(build_folder)/usr/bin && \ cp $(GOPATH)/bin/basecoin $(build_folder)/usr/bin && \ cp $(GOPATH)/bin/baseserver $(build_folder)/usr/bin && \ cp $(GOPATH)/bin/counter $(build_folder)/usr/bin && \ From 69cfb9c88e3be80f8e2047609d2a26dde314530e Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 15:08:22 -0400 Subject: [PATCH 05/46] cosmossdk build fixes --- build/Makefile | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/build/Makefile b/build/Makefile index 36e95bc48..1fc44989b 100644 --- a/build/Makefile +++ b/build/Makefile @@ -95,6 +95,7 @@ build-cosmossdk: git-branch go get -d -u go github.com/cosmos/cosmos-sdk || echo "Workaround for go downloads." cd $(GOPATH)/src/github.com/cosmos/cosmos-sdk && git checkout "$(GIT_BRANCH)" && git pull $(MAKE) -C $(GOPATH)/src/github.com/cosmos/cosmos-sdk get_vendor_deps install + @echo "Workaround: cosmos-sdk does not have a binary that gives the cosmos-sdk version number." && rm -rf $(GOPATH)/bin/cosmossdk && ln -s $(GOPATH)/bin/basecoin $(GOPATH)/bin/cosmossdk @echo "*** Built cosmossdk" ### @@ -124,13 +125,8 @@ prepare-ethermint = mkdir -p $(build_folder)/etc/ethermint && \ cp -r $(GOPATH)/src/github.com/tendermint/ethermint/setup/keystore $(build_folder)/etc/ethermint prepare-trackomatron = rm -f $(build_folder)/usr/bin/trackomatron && cp $(GOPATH)/bin/tracko $(GOPATH)/bin/trackocli $(build_folder)/usr/bin prepare-gaia = -prepare-cosmossdk = cp $(GOPATH)/bin/basecli $(build_folder)/usr/bin && \ - cp $(GOPATH)/bin/basecoin $(build_folder)/usr/bin && \ - cp $(GOPATH)/bin/baseserver $(build_folder)/usr/bin && \ - cp $(GOPATH)/bin/counter $(build_folder)/usr/bin && \ - cp $(GOPATH)/bin/countercli $(build_folder)/usr/bin && \ - cp $(GOPATH)/bin/eyes $(build_folder)/usr/bin && \ - cp $(GOPATH)/bin/eyescli $(build_folder)/usr/bin +prepare-cosmossdk = rm -f $(build_folder)/usr/bin/cosmossdk && \ + cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(GOPATH)/bin/baseserver $(GOPATH)/bin/counter $(GOPATH)/bin/countercli $(GOPATH)/bin/eyes $(GOPATH)/bin/eyescli $(build_folder)/usr/bin ### # Package the binary for CentOS/RedHat (RPM) and Debian/Ubuntu (DEB) From 8f438fa8933d2d43ab9257e76b48a7efd8c4ccc2 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 15:21:05 -0400 Subject: [PATCH 06/46] Makefile fixes for cosmos-sdk --- build/Makefile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/build/Makefile b/build/Makefile index 1fc44989b..97887c7b9 100644 --- a/build/Makefile +++ b/build/Makefile @@ -32,12 +32,12 @@ endif # Here comes the real deal ### -binaries = tendermint basecoin ethermint trackomatron gaia cosmossdk -build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia build-cosmossdk -package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia package-rpm-cosmossdk -install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia package-rpm-cosmossdk -package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia package-deb-cosmossdk -install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia install-deb-cosmossdk +binaries = tendermint basecoin ethermint trackomatron gaia cosmos-sdk +build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia build-cosmos-sdk +package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia package-rpm-cosmos-sdk +install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia package-rpm-cosmos-sdk +package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia package-deb-cosmos-sdk +install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia install-deb-cosmos-sdk all: $(binaries) build: $(build-binaries) @@ -90,13 +90,13 @@ build-gaia: git-branch $(MAKE) -C $(GOPATH)/src/github.com/cosmos/gaia get_vendor_deps install @echo "*** Built gaia" -build-cosmossdk: git-branch - @echo "*** Building cosmossdk" +build-cosmos-sdk: git-branch + @echo "*** Building cosmos-sdk" go get -d -u go github.com/cosmos/cosmos-sdk || echo "Workaround for go downloads." cd $(GOPATH)/src/github.com/cosmos/cosmos-sdk && git checkout "$(GIT_BRANCH)" && git pull $(MAKE) -C $(GOPATH)/src/github.com/cosmos/cosmos-sdk get_vendor_deps install - @echo "Workaround: cosmos-sdk does not have a binary that gives the cosmos-sdk version number." && rm -rf $(GOPATH)/bin/cosmossdk && ln -s $(GOPATH)/bin/basecoin $(GOPATH)/bin/cosmossdk - @echo "*** Built cosmossdk" + @echo "Workaround: cosmos-sdk does not have a binary that gives the cosmos-sdk version number." && rm -rf $(GOPATH)/bin/cosmos-sdk && ln -s $(GOPATH)/bin/basecoin $(GOPATH)/bin/cosmos-sdk + @echo "*** Built cosmos-sdk" ### # Prepare package files @@ -125,7 +125,7 @@ prepare-ethermint = mkdir -p $(build_folder)/etc/ethermint && \ cp -r $(GOPATH)/src/github.com/tendermint/ethermint/setup/keystore $(build_folder)/etc/ethermint prepare-trackomatron = rm -f $(build_folder)/usr/bin/trackomatron && cp $(GOPATH)/bin/tracko $(GOPATH)/bin/trackocli $(build_folder)/usr/bin prepare-gaia = -prepare-cosmossdk = rm -f $(build_folder)/usr/bin/cosmossdk && \ +prepare-cosmos-sdk = rm -f $(build_folder)/usr/bin/cosmos-sdk && \ cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(GOPATH)/bin/baseserver $(GOPATH)/bin/counter $(GOPATH)/bin/countercli $(GOPATH)/bin/eyes $(GOPATH)/bin/eyescli $(build_folder)/usr/bin ### From 191b2301a1dae37cc69f6282049bb63c3deaa9da Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 15:33:09 -0400 Subject: [PATCH 07/46] Cosmos-SDK package additional files --- build/cosmos-sdk/DEBIAN/changelog | 6 ++ build/cosmos-sdk/DEBIAN/compat | 1 + build/cosmos-sdk/DEBIAN/control | 15 +++++ build/cosmos-sdk/DEBIAN/copyright | 21 ++++++ build/cosmos-sdk/DEBIAN/postinst | 46 +++++++++++++ build/cosmos-sdk/DEBIAN/postrm | 41 ++++++++++++ build/cosmos-sdk/DEBIAN/preinst | 38 +++++++++++ build/cosmos-sdk/DEBIAN/prerm | 39 +++++++++++ .../systemd/system-preset/50-basecoin.preset | 3 + .../systemd/system/basecoin-server.service | 23 +++++++ .../etc/systemd/system/basecoin.service | 29 ++++++++ build/cosmos-sdk/usr/share/basecoin/key.json | 12 ++++ build/cosmos-sdk/usr/share/basecoin/key2.json | 12 ++++ build/spectemplates/cosmos-sdk.spec | 67 +++++++++++++++++++ 14 files changed, 353 insertions(+) create mode 100644 build/cosmos-sdk/DEBIAN/changelog create mode 100644 build/cosmos-sdk/DEBIAN/compat create mode 100644 build/cosmos-sdk/DEBIAN/control create mode 100644 build/cosmos-sdk/DEBIAN/copyright create mode 100644 build/cosmos-sdk/DEBIAN/postinst create mode 100644 build/cosmos-sdk/DEBIAN/postrm create mode 100644 build/cosmos-sdk/DEBIAN/preinst create mode 100644 build/cosmos-sdk/DEBIAN/prerm create mode 100644 build/cosmos-sdk/etc/systemd/system-preset/50-basecoin.preset create mode 100644 build/cosmos-sdk/etc/systemd/system/basecoin-server.service create mode 100644 build/cosmos-sdk/etc/systemd/system/basecoin.service create mode 100644 build/cosmos-sdk/usr/share/basecoin/key.json create mode 100644 build/cosmos-sdk/usr/share/basecoin/key2.json create mode 100644 build/spectemplates/cosmos-sdk.spec diff --git a/build/cosmos-sdk/DEBIAN/changelog b/build/cosmos-sdk/DEBIAN/changelog new file mode 100644 index 000000000..0b56180ec --- /dev/null +++ b/build/cosmos-sdk/DEBIAN/changelog @@ -0,0 +1,6 @@ +cosmos-sdk (@VERSION@) @STABILITY@; urgency=medium + + * Automatic build. See https://github.com/tendermint/basecoin for more information. + + -- Greg Szabo @DATETIMESTAMP@ + diff --git a/build/cosmos-sdk/DEBIAN/compat b/build/cosmos-sdk/DEBIAN/compat new file mode 100644 index 000000000..ec635144f --- /dev/null +++ b/build/cosmos-sdk/DEBIAN/compat @@ -0,0 +1 @@ +9 diff --git a/build/cosmos-sdk/DEBIAN/control b/build/cosmos-sdk/DEBIAN/control new file mode 100644 index 000000000..588e61fa2 --- /dev/null +++ b/build/cosmos-sdk/DEBIAN/control @@ -0,0 +1,15 @@ +Source: cosmos-sdk +Section: net +Priority: optional +Maintainer: Greg Szabo +Build-Depends: debhelper (>=9) +Depends: tendermint (>=0.10.0) +Standards-Version: 3.9.6 +Homepage: https://tendermint.com +Package: cosmos-sdk +Architecture: amd64 +Version: @VERSION@ +Installed-Size: @INSTALLEDSIZE@ +Description: cosmos-sdk is a Proof-of-Stake framework + Cosmos-SDK is a general purpose framework for the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency. + diff --git a/build/cosmos-sdk/DEBIAN/copyright b/build/cosmos-sdk/DEBIAN/copyright new file mode 100644 index 000000000..ddb9d0272 --- /dev/null +++ b/build/cosmos-sdk/DEBIAN/copyright @@ -0,0 +1,21 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: cosmos-sdk +Source: https://github.com/cosmos/cosmos-sdk + +Files: * +Copyright: 2017 All In Bits, Inc. +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + . + On Debian systems, the full text of the Apache License 2.0 can be found + in the file `/usr/share/common-licenses/Apache-2.0'. diff --git a/build/cosmos-sdk/DEBIAN/postinst b/build/cosmos-sdk/DEBIAN/postinst new file mode 100644 index 000000000..39471823f --- /dev/null +++ b/build/cosmos-sdk/DEBIAN/postinst @@ -0,0 +1,46 @@ +#!/bin/sh +# postinst script for cosmos-sdk +# + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + chown basecoin.basecoin /etc/basecoin + sudo -Hu basecoin basecoin init --home /etc/basecoin 2B24DEE2364762300168DF19B6C18BCE2D399EA2 + #The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 + sudo -Hu basecoin tendermint init --home /etc/basecoin/tendermint + #The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 + chmod 755 /etc/basecoin/tendermint + chown basecoin.basecoin /etc/basecoin/tendermint + systemctl daemon-reload + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/build/cosmos-sdk/DEBIAN/postrm b/build/cosmos-sdk/DEBIAN/postrm new file mode 100644 index 000000000..e23f777d1 --- /dev/null +++ b/build/cosmos-sdk/DEBIAN/postrm @@ -0,0 +1,41 @@ +#!/bin/sh +# postrm script for cosmos-sdk +# + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + upgrade|failed-upgrade|abort-upgrade) + systemctl daemon-reload + ;; + + purge|remove|abort-install|disappear) + systemctl daemon-reload + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/build/cosmos-sdk/DEBIAN/preinst b/build/cosmos-sdk/DEBIAN/preinst new file mode 100644 index 000000000..308cfb1e7 --- /dev/null +++ b/build/cosmos-sdk/DEBIAN/preinst @@ -0,0 +1,38 @@ +#!/bin/sh +# preinst script for cosmos-sdk +# + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + if ! grep -q '^basecoin:' /etc/passwd ; then + useradd -k /dev/null -r -m -b /etc basecoin + chmod 755 /etc/basecoin + fi + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/build/cosmos-sdk/DEBIAN/prerm b/build/cosmos-sdk/DEBIAN/prerm new file mode 100644 index 000000000..63fd84409 --- /dev/null +++ b/build/cosmos-sdk/DEBIAN/prerm @@ -0,0 +1,39 @@ +#!/bin/sh +# prerm script for cosmos-sdk +# + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + systemctl stop basecoin 2> /dev/null || : + systemctl stop basecoin-service 2> /dev/null || : + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/build/cosmos-sdk/etc/systemd/system-preset/50-basecoin.preset b/build/cosmos-sdk/etc/systemd/system-preset/50-basecoin.preset new file mode 100644 index 000000000..c97097b13 --- /dev/null +++ b/build/cosmos-sdk/etc/systemd/system-preset/50-basecoin.preset @@ -0,0 +1,3 @@ +disable basecoin.service +disable basecoin-server.service + diff --git a/build/cosmos-sdk/etc/systemd/system/basecoin-server.service b/build/cosmos-sdk/etc/systemd/system/basecoin-server.service new file mode 100644 index 000000000..62392d52a --- /dev/null +++ b/build/cosmos-sdk/etc/systemd/system/basecoin-server.service @@ -0,0 +1,23 @@ +[Unit] +Description=Basecoin server +Requires=network-online.target +BindTo=basecoin.service +PartOf=basecoin.service +After=network-online.target basecoin.service +PropagatesReloadTo=basecoin.service +ReloadPropagatedFrom=basecoin.service + +[Service] +Environment="TMHOME=/etc/basecoin/tendermint" +Restart=on-failure +User=basecoin +Group=basecoin +PermissionsStartOnly=true +ExecStart=/usr/bin/tendermint node +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGTERM + +[Install] +WantedBy=multi-user.target basecoin.service +Also=basecoin.service + diff --git a/build/cosmos-sdk/etc/systemd/system/basecoin.service b/build/cosmos-sdk/etc/systemd/system/basecoin.service new file mode 100644 index 000000000..f806ef481 --- /dev/null +++ b/build/cosmos-sdk/etc/systemd/system/basecoin.service @@ -0,0 +1,29 @@ +[Unit] +Description=Basecoin +#propagates activation, deactivation and activation fails. +Requires=network-online.target +#propagates activation, deactivation, activation fails and stops +BindTo=basecoin-server.service +#propagates stop and restart (one-way) +PartOf=basecoin-server.service +#order +Before=basecoin-server.service +After=network-online.target +#propagates reload +PropagatesReloadTo=basecoin-server.service +ReloadPropagatedFrom=basecoin-server.service + +[Service] +Environment="BCHOME=/etc/basecoin" +Restart=on-failure +User=basecoin +Group=basecoin +PermissionsStartOnly=true +ExecStart=/usr/bin/basecoin start --without-tendermint +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGTERM + +[Install] +WantedBy=multi-user.target +Also=basecoin-server.service + diff --git a/build/cosmos-sdk/usr/share/basecoin/key.json b/build/cosmos-sdk/usr/share/basecoin/key.json new file mode 100644 index 000000000..bdefe8fd4 --- /dev/null +++ b/build/cosmos-sdk/usr/share/basecoin/key.json @@ -0,0 +1,12 @@ +{ + "address": "1B1BE55F969F54064628A63B9559E7C21C925165", + "priv_key": { + "type": "ed25519", + "data": "C70D6934B4F55F1B7BC33B56B9CA8A2061384AFC19E91E44B40C4BBA182953D1619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279" + }, + "pub_key": { + "type": "ed25519", + "data": "619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279" + } +} + diff --git a/build/cosmos-sdk/usr/share/basecoin/key2.json b/build/cosmos-sdk/usr/share/basecoin/key2.json new file mode 100644 index 000000000..ddfc6809b --- /dev/null +++ b/build/cosmos-sdk/usr/share/basecoin/key2.json @@ -0,0 +1,12 @@ +{ + "address": "1DA7C74F9C219229FD54CC9F7386D5A3839F0090", + "priv_key": { + "type": "ed25519", + "data": "34BAE9E65CE8245FAD035A0E3EED9401BDE8785FFB3199ACCF8F5B5DDF7486A8352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8" + }, + "pub_key": { + "type": "ed25519", + "data": "352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8" + } +} + diff --git a/build/spectemplates/cosmos-sdk.spec b/build/spectemplates/cosmos-sdk.spec new file mode 100644 index 000000000..56697c6f5 --- /dev/null +++ b/build/spectemplates/cosmos-sdk.spec @@ -0,0 +1,67 @@ +Version: @VERSION@ +Release: @BUILD_NUMBER@ + +%define __spec_install_post %{nil} +%define debug_package %{nil} +%define __os_install_post %{nil} + +Name: cosmos-sdk +Summary: cosmos-sdk is a Proof-of-Stake framework +License: Apache 2.0 +URL: https://cosmos.network/ +Packager: Greg Szabo +Requires: tendermint >= 0.10.0 +Provides: basecoin basecli +#Requires(pre): useradd + +%description +Cosmos-SDK is a general purpose framework for the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency. + +%pre +if ! %{__grep} -q '^%{name}:' /etc/passwd ; then + useradd -k /dev/null -r -m -b %{_sysconfdir} %{name} + chmod 755 %{_sysconfdir}/%{name} +fi + +%prep +# Nothing to do here. - It is done in the Makefile. + +%build +# Nothing to do here. + +%install +cd %{name}-%{version}-%{release} +%{__cp} -a * %{buildroot} + +%post +sudo -Hu %{name} basecoin init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 +#The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 +sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name}/tendermint +#The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 + +chmod 755 %{_sysconfdir}/%{name}/tendermint + +#Temporary until https://github.com/tendermint/basecoin/issues/123 +rm -f %{_sysconfdir}/%{name}/key.json +rm -f %{_sysconfdir}/%{name}/key2.json + +systemctl daemon-reload + +%preun +systemctl stop %{name} 2> /dev/null || : +systemctl stop %{name}-service 2> /dev/null || : + +%postun +systemctl daemon-reload + +%files +%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name} +%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint +%{_bindir}/* +%{_sysconfdir}/systemd/system/* +%{_sysconfdir}/systemd/system-preset/* +%dir %{_datadir}/%{name} +%{_datadir}/%{name}/* +%dir %{_defaultlicensedir}/%{name} +%doc %{_defaultlicensedir}/%{name}/LICENSE + From 7146619aa884162108f88de6c05d9e5fb79fa36d Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 15:41:39 -0400 Subject: [PATCH 08/46] Added placeholder for cosmos-sdk package --- build/cosmos-sdk/usr/share/cosmos-sdk/placeholder | 1 + 1 file changed, 1 insertion(+) create mode 100644 build/cosmos-sdk/usr/share/cosmos-sdk/placeholder diff --git a/build/cosmos-sdk/usr/share/cosmos-sdk/placeholder b/build/cosmos-sdk/usr/share/cosmos-sdk/placeholder new file mode 100644 index 000000000..bba63e730 --- /dev/null +++ b/build/cosmos-sdk/usr/share/cosmos-sdk/placeholder @@ -0,0 +1 @@ +This folder is intentionally left empty. From 2055ae2e2a6a79cd12b55af33c75c6ebd21dbf97 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 15:45:37 -0400 Subject: [PATCH 09/46] cosmos-sdk package fix --- build/cosmos-sdk/usr/share/{basecoin => cosmos-sdk}/key.json | 0 build/cosmos-sdk/usr/share/{basecoin => cosmos-sdk}/key2.json | 0 build/cosmos-sdk/usr/share/cosmos-sdk/placeholder | 1 - 3 files changed, 1 deletion(-) rename build/cosmos-sdk/usr/share/{basecoin => cosmos-sdk}/key.json (100%) rename build/cosmos-sdk/usr/share/{basecoin => cosmos-sdk}/key2.json (100%) delete mode 100644 build/cosmos-sdk/usr/share/cosmos-sdk/placeholder diff --git a/build/cosmos-sdk/usr/share/basecoin/key.json b/build/cosmos-sdk/usr/share/cosmos-sdk/key.json similarity index 100% rename from build/cosmos-sdk/usr/share/basecoin/key.json rename to build/cosmos-sdk/usr/share/cosmos-sdk/key.json diff --git a/build/cosmos-sdk/usr/share/basecoin/key2.json b/build/cosmos-sdk/usr/share/cosmos-sdk/key2.json similarity index 100% rename from build/cosmos-sdk/usr/share/basecoin/key2.json rename to build/cosmos-sdk/usr/share/cosmos-sdk/key2.json diff --git a/build/cosmos-sdk/usr/share/cosmos-sdk/placeholder b/build/cosmos-sdk/usr/share/cosmos-sdk/placeholder deleted file mode 100644 index bba63e730..000000000 --- a/build/cosmos-sdk/usr/share/cosmos-sdk/placeholder +++ /dev/null @@ -1 +0,0 @@ -This folder is intentionally left empty. From 92869b5b35d48ad220d9d3e313be091ced851d6c Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 15:56:09 -0400 Subject: [PATCH 10/46] Added devops_path to Ansible playbooks --- ansible/roles/install/defaults/main.yml | 1 + ansible/roles/install/tasks/centos.yml | 6 +++--- ansible/roles/install/tasks/debian.yml | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ansible/roles/install/defaults/main.yml b/ansible/roles/install/defaults/main.yml index 10dad07d4..f9e5a31d7 100644 --- a/ansible/roles/install/defaults/main.yml +++ b/ansible/roles/install/defaults/main.yml @@ -1,4 +1,5 @@ --- release_install: true binary: "{{ lookup('env','GOPATH') | default('') }}/bin/{{service}}" +devops_path: false diff --git a/ansible/roles/install/tasks/centos.yml b/ansible/roles/install/tasks/centos.yml index b6396d7d4..566c9cebf 100644 --- a/ansible/roles/install/tasks/centos.yml +++ b/ansible/roles/install/tasks/centos.yml @@ -13,7 +13,7 @@ #Workaround - name: Download repository key for CentOS/RedHat when: ansible_os_family == "RedHat" - get_url: "url=https://tendermint-packages.interblock.io/centos/7/os/x86_64/RPM-GPG-KEY-Tendermint dest=/root/RPM-GPG-KEY-Tendermint force=yes checksum=sha256:a8c61d4061697d2595562c703dbafbdfdcfa7f0c75a523ac84d5609d1b444abe" + get_url: "url=https://tendermint-packages.interblock.io/{{ (devops_path | default(false) | bool) | ternary('devops/','') }}centos/7/os/x86_64/RPM-GPG-KEY-Tendermint dest=/root/RPM-GPG-KEY-Tendermint force=yes checksum=sha256:a8c61d4061697d2595562c703dbafbdfdcfa7f0c75a523ac84d5609d1b444abe" - name: Import repository key for CentOS/RedHat when: ansible_os_family == "RedHat" command: "rpm --import /root/RPM-GPG-KEY-Tendermint" @@ -22,10 +22,10 @@ when: ansible_os_family == "RedHat" yum_repository: name: tendermint - baseurl: https://tendermint-packages.interblock.io/centos/7/os/x86_64 + baseurl: https://tendermint-packages.interblock.io/{{ (devops_path | default(false) | bool) | ternary('devops/','') }}centos/7/os/x86_64 description: "Tendermint repo" gpgcheck: yes - gpgkey: https://tendermint-packages.interblock.io/centos/7/os/x86_64/RPM-GPG-KEY-Tendermint + gpgkey: https://tendermint-packages.interblock.io/{{ (devops_path | default(false) | bool) | ternary('devops/','') }}centos/7/os/x86_64/RPM-GPG-KEY-Tendermint # repo_gpgcheck: yes - name: Install package on CentOS/RedHat diff --git a/ansible/roles/install/tasks/debian.yml b/ansible/roles/install/tasks/debian.yml index 8b955659f..d003d14aa 100644 --- a/ansible/roles/install/tasks/debian.yml +++ b/ansible/roles/install/tasks/debian.yml @@ -8,13 +8,13 @@ - name: Add repository key on Debian/Ubuntu when: ansible_os_family == "Debian" apt_key: - url: https://tendermint-packages.interblock.io/centos/7/os/x86_64/RPM-GPG-KEY-Tendermint + url: https://tendermint-packages.interblock.io/{{ (devops_path | default(false) | bool) | ternary('devops/','') }}centos/7/os/x86_64/RPM-GPG-KEY-Tendermint id: 2122CBE9 - name: Install tendermint repository on Debian/Ubuntu when: ansible_os_family == "Debian" apt_repository: - repo: deb https://tendermint-packages.interblock.io/debian stable main + repo: deb https://tendermint-packages.interblock.io/{{ (devops_path | default(false) | bool) | ternary('devops/','') }}debian stable main - name: Install package on Debian/Ubuntu when: ansible_os_family == "Debian" From dfee48fcff07b8c4709137135da6c2d925e0df74 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 16:07:15 -0400 Subject: [PATCH 11/46] cosmos-sdk package modifications --- build/cosmos-sdk/DEBIAN/prerm | 4 ++-- .../systemd/system-preset/50-basecoin.preset | 3 --- .../system-preset/50-cosmos-sdk.preset | 3 +++ .../systemd/system/basecoin-server.service | 23 ------------------- .../systemd/system/cosmos-sdk-server.service | 23 +++++++++++++++++++ .../{basecoin.service => cosmos-sdk.service} | 12 +++++----- 6 files changed, 34 insertions(+), 34 deletions(-) delete mode 100644 build/cosmos-sdk/etc/systemd/system-preset/50-basecoin.preset create mode 100644 build/cosmos-sdk/etc/systemd/system-preset/50-cosmos-sdk.preset delete mode 100644 build/cosmos-sdk/etc/systemd/system/basecoin-server.service create mode 100644 build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service rename build/cosmos-sdk/etc/systemd/system/{basecoin.service => cosmos-sdk.service} (71%) diff --git a/build/cosmos-sdk/DEBIAN/prerm b/build/cosmos-sdk/DEBIAN/prerm index 63fd84409..d7a07ab8f 100644 --- a/build/cosmos-sdk/DEBIAN/prerm +++ b/build/cosmos-sdk/DEBIAN/prerm @@ -18,8 +18,8 @@ set -e case "$1" in remove|upgrade|deconfigure) - systemctl stop basecoin 2> /dev/null || : - systemctl stop basecoin-service 2> /dev/null || : + systemctl stop cosmos-sdk 2> /dev/null || : + systemctl stop cosmos-sdk-service 2> /dev/null || : ;; failed-upgrade) diff --git a/build/cosmos-sdk/etc/systemd/system-preset/50-basecoin.preset b/build/cosmos-sdk/etc/systemd/system-preset/50-basecoin.preset deleted file mode 100644 index c97097b13..000000000 --- a/build/cosmos-sdk/etc/systemd/system-preset/50-basecoin.preset +++ /dev/null @@ -1,3 +0,0 @@ -disable basecoin.service -disable basecoin-server.service - diff --git a/build/cosmos-sdk/etc/systemd/system-preset/50-cosmos-sdk.preset b/build/cosmos-sdk/etc/systemd/system-preset/50-cosmos-sdk.preset new file mode 100644 index 000000000..7f9e2f450 --- /dev/null +++ b/build/cosmos-sdk/etc/systemd/system-preset/50-cosmos-sdk.preset @@ -0,0 +1,3 @@ +disable cosmos-sdk.service +disable cosmos-sdk-server.service + diff --git a/build/cosmos-sdk/etc/systemd/system/basecoin-server.service b/build/cosmos-sdk/etc/systemd/system/basecoin-server.service deleted file mode 100644 index 62392d52a..000000000 --- a/build/cosmos-sdk/etc/systemd/system/basecoin-server.service +++ /dev/null @@ -1,23 +0,0 @@ -[Unit] -Description=Basecoin server -Requires=network-online.target -BindTo=basecoin.service -PartOf=basecoin.service -After=network-online.target basecoin.service -PropagatesReloadTo=basecoin.service -ReloadPropagatedFrom=basecoin.service - -[Service] -Environment="TMHOME=/etc/basecoin/tendermint" -Restart=on-failure -User=basecoin -Group=basecoin -PermissionsStartOnly=true -ExecStart=/usr/bin/tendermint node -ExecReload=/bin/kill -HUP $MAINPID -KillSignal=SIGTERM - -[Install] -WantedBy=multi-user.target basecoin.service -Also=basecoin.service - diff --git a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service new file mode 100644 index 000000000..85fd602cf --- /dev/null +++ b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service @@ -0,0 +1,23 @@ +[Unit] +Description=Cosmos SDK Basecoin Tendermint server +Requires=network-online.target +BindTo=cosmos-sdk.service +PartOf=cosmos-sdk.service +After=network-online.target cosmos-sdk.service +PropagatesReloadTo=cosmos-sdk.service +ReloadPropagatedFrom=cosmos-sdk.service + +[Service] +Environment="TMHOME=/etc/basecoin/tendermint" +Restart=on-failure +User=basecoin +Group=basecoin +PermissionsStartOnly=true +ExecStart=/usr/bin/tendermint node +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGTERM + +[Install] +WantedBy=multi-user.target cosmos-sdk.service +Also=cosmos-sdk.service + diff --git a/build/cosmos-sdk/etc/systemd/system/basecoin.service b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service similarity index 71% rename from build/cosmos-sdk/etc/systemd/system/basecoin.service rename to build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service index f806ef481..13de3b13a 100644 --- a/build/cosmos-sdk/etc/systemd/system/basecoin.service +++ b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service @@ -1,17 +1,17 @@ [Unit] -Description=Basecoin +Description=Cosmos-SDK Basecoin #propagates activation, deactivation and activation fails. Requires=network-online.target #propagates activation, deactivation, activation fails and stops BindTo=basecoin-server.service #propagates stop and restart (one-way) -PartOf=basecoin-server.service +PartOf=cosmos-sdk-server.service #order -Before=basecoin-server.service +Before=cosmos-sdk-server.service After=network-online.target #propagates reload -PropagatesReloadTo=basecoin-server.service -ReloadPropagatedFrom=basecoin-server.service +PropagatesReloadTo=cosmos-sdk-server.service +ReloadPropagatedFrom=cosmos-sdk-server.service [Service] Environment="BCHOME=/etc/basecoin" @@ -25,5 +25,5 @@ KillSignal=SIGTERM [Install] WantedBy=multi-user.target -Also=basecoin-server.service +Also=cosmos-sdk-server.service From 96828217c3d02cf8c3c4017d46fb4180125a8339 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 17:25:47 -0400 Subject: [PATCH 12/46] cosmos-sdk package fix --- build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service index 13de3b13a..868531af7 100644 --- a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service +++ b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service @@ -3,7 +3,7 @@ Description=Cosmos-SDK Basecoin #propagates activation, deactivation and activation fails. Requires=network-online.target #propagates activation, deactivation, activation fails and stops -BindTo=basecoin-server.service +BindTo=cosmos-sdk-server.service #propagates stop and restart (one-way) PartOf=cosmos-sdk-server.service #order From bed33467b143693f9379f1edd607c6c6282c864c Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 12 Sep 2017 18:01:29 -0400 Subject: [PATCH 13/46] cosmos-sdk RPM package fixes --- build/cosmos-sdk/DEBIAN/changelog | 2 +- build/cosmos-sdk/DEBIAN/postinst | 10 +++++----- build/cosmos-sdk/DEBIAN/preinst | 6 +++--- .../etc/systemd/system/cosmos-sdk-server.service | 6 +++--- build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/build/cosmos-sdk/DEBIAN/changelog b/build/cosmos-sdk/DEBIAN/changelog index 0b56180ec..13eb09125 100644 --- a/build/cosmos-sdk/DEBIAN/changelog +++ b/build/cosmos-sdk/DEBIAN/changelog @@ -1,6 +1,6 @@ cosmos-sdk (@VERSION@) @STABILITY@; urgency=medium - * Automatic build. See https://github.com/tendermint/basecoin for more information. + * Automatic build. See https://github.com/cosmos/cosmos-sdk for more information. -- Greg Szabo @DATETIMESTAMP@ diff --git a/build/cosmos-sdk/DEBIAN/postinst b/build/cosmos-sdk/DEBIAN/postinst index 39471823f..7f179b0eb 100644 --- a/build/cosmos-sdk/DEBIAN/postinst +++ b/build/cosmos-sdk/DEBIAN/postinst @@ -19,13 +19,13 @@ set -e case "$1" in configure) - chown basecoin.basecoin /etc/basecoin - sudo -Hu basecoin basecoin init --home /etc/basecoin 2B24DEE2364762300168DF19B6C18BCE2D399EA2 + chown cosmos-sdk.cosmos-sdk /etc/cosmos-sdk + sudo -Hu cosmos-sdk basecoin init --home /etc/cosmos-sdk 2B24DEE2364762300168DF19B6C18BCE2D399EA2 #The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 - sudo -Hu basecoin tendermint init --home /etc/basecoin/tendermint + sudo -Hu cosmos-sdk tendermint init --home /etc/cosmos-sdk/tendermint #The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 - chmod 755 /etc/basecoin/tendermint - chown basecoin.basecoin /etc/basecoin/tendermint + chmod 755 /etc/cosmos-sdk/tendermint + chown cosmos-sdk.cosmos-sdk /etc/cosmos-sdk/tendermint systemctl daemon-reload ;; diff --git a/build/cosmos-sdk/DEBIAN/preinst b/build/cosmos-sdk/DEBIAN/preinst index 308cfb1e7..f7108e5d6 100644 --- a/build/cosmos-sdk/DEBIAN/preinst +++ b/build/cosmos-sdk/DEBIAN/preinst @@ -15,9 +15,9 @@ set -e case "$1" in install|upgrade) - if ! grep -q '^basecoin:' /etc/passwd ; then - useradd -k /dev/null -r -m -b /etc basecoin - chmod 755 /etc/basecoin + if ! grep -q '^cosmos-sdk:' /etc/passwd ; then + useradd -k /dev/null -r -m -b /etc cosmos-sdk + chmod 755 /etc/cosmos-sdk fi ;; diff --git a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service index 85fd602cf..bbda97350 100644 --- a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service +++ b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service @@ -8,10 +8,10 @@ PropagatesReloadTo=cosmos-sdk.service ReloadPropagatedFrom=cosmos-sdk.service [Service] -Environment="TMHOME=/etc/basecoin/tendermint" +Environment="TMHOME=/etc/cosmos-sdk/tendermint" Restart=on-failure -User=basecoin -Group=basecoin +User=cosmos-sdk +Group=cosmos-sdk PermissionsStartOnly=true ExecStart=/usr/bin/tendermint node ExecReload=/bin/kill -HUP $MAINPID diff --git a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service index 868531af7..2091e5592 100644 --- a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service +++ b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service @@ -14,10 +14,10 @@ PropagatesReloadTo=cosmos-sdk-server.service ReloadPropagatedFrom=cosmos-sdk-server.service [Service] -Environment="BCHOME=/etc/basecoin" +Environment="BCHOME=/etc/cosmos-sdk" Restart=on-failure -User=basecoin -Group=basecoin +User=cosmos-sdk +Group=cosmos-sdk PermissionsStartOnly=true ExecStart=/usr/bin/basecoin start --without-tendermint ExecReload=/bin/kill -HUP $MAINPID From 4f47a762a0e2326755798724f515546df3913d45 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Fri, 15 Sep 2017 02:10:29 -0400 Subject: [PATCH 14/46] Introduced tomlconfig playbook --- .../roles/tomlconfig/library/tomlconfig.py | 392 ++++++++++++++++++ ansible/roles/tomlconfig/tasks/centos.yml | 17 + ansible/roles/tomlconfig/tasks/debian.yml | 6 + ansible/roles/tomlconfig/tasks/main.yml | 24 ++ ansible/tomlconfig.yml | 9 + 5 files changed, 448 insertions(+) create mode 100644 ansible/roles/tomlconfig/library/tomlconfig.py create mode 100644 ansible/roles/tomlconfig/tasks/centos.yml create mode 100644 ansible/roles/tomlconfig/tasks/debian.yml create mode 100644 ansible/roles/tomlconfig/tasks/main.yml create mode 100644 ansible/tomlconfig.yml diff --git a/ansible/roles/tomlconfig/library/tomlconfig.py b/ansible/roles/tomlconfig/library/tomlconfig.py new file mode 100644 index 000000000..ced62d07a --- /dev/null +++ b/ansible/roles/tomlconfig/library/tomlconfig.py @@ -0,0 +1,392 @@ +#!/usr/bin/python + +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'community' +} + +DOCUMENTATION = ''' +--- +module: tomlconfig + +short_description: Ensure a particular configuration is added to a toml-formatted configuration file + +version_added: "2.4" + +description: + - This module will add configuration to a toml-formatted configuration file. + +options: + dest: + description: + - The file to modify. + required: true + aliases: [ name, destfile ] + json: + description: + - The configuration in json format to apply. Either C(json) or C(toml) has to be present. + required: false + default: '{}' + toml: + description: + - The configuration in toml format to apply. Either C(json) or C(toml) has to be present. + default: '' + merge: + description: + - Used with C(state=present). If specified, it will merge the configuration. Othwerwise + the configuration will be overwritten. + required: false + choices: [ "yes", "no" ] + default: "yes" + state: + description: + - Whether the configuration should be there or not. + required: false + choices: [ present, absent ] + default: "present" + create: + description: + - Used with C(state=present). If specified, the file will be created + if it does not already exist. By default it will fail if the file + is missing. + required: false + choices: [ "yes", "no" ] + default: "no" + backup: + description: + - Create a backup file including the timestamp information so you can + get the original file back if you somehow clobbered it incorrectly. + required: false + choices: [ "yes", "no" ] + default: "no" + others: + description: + - All arguments accepted by the M(file) module also work here. + required: false + +extends_documentation_fragment: + - files + - validate + +author: + - "Greg Szabo (@greg-szabo)" +''' + +EXAMPLES = ''' +# Add a new section to a toml file +- name: Add comment section + tomlconfig: + dest: /etc/config.toml + json: '{ "comment": { "comment1": "mycomment" } }' + +# Rewrite a toml file with the configuration +- name: Create or overwrite config.toml + tomlconfig: + dest: /etc/config.toml + json: '{ "regedit": { "freshfile": true } }' + merge: no + create: yes + +- name: Set file permissions + tomlconfig: + dest: /etc/config.toml + mode: 0600 + owner: root + group: root +''' + +RETURN = ''' +config: + description: The resultant configuration + type: str +created: + description: True if the file was freshly created + type: bool +''' + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.six import b +from ansible.module_utils._text import to_bytes, to_native +import tempfile +import toml as pytoml +import json +import copy +import os + +def write_changes(module, b_lines, dest): + + tmpfd, tmpfile = tempfile.mkstemp() + f = os.fdopen(tmpfd, 'wb') + f.writelines(b_lines) + f.close() + + validate = module.params.get('validate', None) + valid = not validate + if validate: + if "%s" not in validate: + module.fail_json(msg="validate must contain %%s: %s" % (validate)) + (rc, out, err) = module.run_command(to_bytes(validate % tmpfile, errors='surrogate_or_strict')) + valid = rc == 0 + if rc != 0: + module.fail_json(msg='failed to validate: ' + 'rc:%s error:%s' % (rc, err)) + if valid: + module.atomic_move(tmpfile, + to_native(os.path.realpath(to_bytes(dest, errors='surrogate_or_strict')), errors='surrogate_or_strict'), + unsafe_writes=module.params['unsafe_writes']) + + +def check_file_attrs(module, changed, message, diff): + + file_args = module.load_file_common_arguments(module.params) + if module.set_fs_attributes_if_different(file_args, False, diff=diff): + + if changed: + message += " and " + changed = True + message += "ownership, perms or SE linux context changed" + + return message, changed + + +#Merge dict d2 into dict d1 and return a new object +def deepmerge(d1, d2): + if d1 is None: + return copy.deepcopy(d2) + if d2 is None: + return copy.deepcopy(d1) + if d1 == d2: + return copy.deepcopy(d1) + if isinstance(d1, dict) and isinstance(d2, dict): + result={} + for key in set(d1.keys()+d2.keys()): + da = db = None + if key in d1: + da = d1[key] + if key in d2: + db = d2[key] + result[key] = deepmerge(da, db) + return result + else: + return copy.deepcopy(d2) + + +#Remove dict d2 from dict d1 and return a new object +def deepdiff(d1, d2): + if d1 is None or d2 is None: + return None + if d1 == d2: + return None + if isinstance(d1, dict) and isinstance(d2, dict): + result = {} + for key in d1.keys(): + if key in d2: + dd = deepdiff(d1[key],d2[key]) + if dd is not None: + result[key] = dd + else: + result[key] = d1[key] + return result + else: + return None + + +def present(module, dest, conf, jsonbool, merge, create, backup): + + diff = {'before': '', + 'after': '', + 'before_header': '%s (content)' % dest, + 'after_header': '%s (content)' % dest} + + b_dest = to_bytes(dest, errors='surrogate_or_strict') + if not os.path.exists(b_dest): + if not create: + module.fail_json(rc=257, msg='Destination %s does not exist !' % dest) + b_destpath = os.path.dirname(b_dest) + if not os.path.exists(b_destpath) and not module.check_mode: + os.makedirs(b_destpath) + b_lines = [] + else: + f = open(b_dest, 'rb') + b_lines = f.readlines() + f.close() + + lines = to_native(b('').join(b_lines)) + + if module._diff: + diff['before'] = lines + + b_conf = to_bytes(conf, errors='surrogate_or_strict') + + tomlconfig = pytoml.loads(lines) + config = {} + if jsonbool: + config = eval(b_conf) + else: + config = pytoml.loads(b_conf) + + if not isinstance(config, dict): + if jsonbool: + module.fail_json(msg="Invalid value in json parameter: {0}".format(config)) + else: + module.fail_json(msg="Invalid value in toml parameter: {0}".format(config)) + + b_lines_new = b_lines + msg = '' + changed = False + + if not merge: + if tomlconfig != config: + b_lines_new = to_bytes(pytoml.dumps(config)) + msg = 'config overwritten' + changed = True + else: + mergedconfig = deepmerge(tomlconfig,config) + if tomlconfig != mergedconfig: + b_lines_new = to_bytes(pytoml.dumps(mergedconfig)) + msg = 'config merged' + changed = True + + if module._diff: + diff['after'] = to_native(b('').join(b_lines_new)) + + backupdest = "" + if changed and not module.check_mode: + if backup and os.path.exists(b_dest): + backupdest = module.backup_local(dest) + write_changes(module, b_lines_new, dest) + + if module.check_mode and not os.path.exists(b_dest): + module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=diff) + + attr_diff = {} + msg, changed = check_file_attrs(module, changed, msg, attr_diff) + + attr_diff['before_header'] = '%s (file attributes)' % dest + attr_diff['after_header'] = '%s (file attributes)' % dest + + difflist = [diff, attr_diff] + module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=difflist) + + +def absent(module, dest, conf, jsonbool, backup): + + b_dest = to_bytes(dest, errors='surrogate_or_strict') + if not os.path.exists(b_dest): + module.exit_json(changed=False, msg="file not present") + + msg = '' + diff = {'before': '', + 'after': '', + 'before_header': '%s (content)' % dest, + 'after_header': '%s (content)' % dest} + + f = open(b_dest, 'rb') + b_lines = f.readlines() + f.close() + + lines = to_native(b('').join(b_lines)) + b_conf = to_bytes(conf, errors='surrogate_or_strict') + + lines = to_native(b('').join(b_lines)) + tomlconfig = pytoml.loads(lines) + config = {} + if jsonbool: + config = eval(b_conf) + else: + config = pytoml.loads(b_conf) + + if not isinstance(config, dict): + if jsonbool: + module.fail_json(msg="Invalid value in json parameter: {0}".format(config)) + else: + module.fail_json(msg="Invalid value in toml parameter: {0}".format(config)) + + if module._diff: + diff['before'] = to_native(b('').join(b_lines)) + + b_lines_new = b_lines + msg = '' + changed = False + + diffconfig = deepdiff(tomlconfig,config) + if diffconfig is None: + diffconfig = {} + if tomlconfig != diffconfig: + b_lines_new = to_bytes(pytoml.dumps(diffconfig)) + msg = 'config removed' + changed = True + + if module._diff: + diff['after'] = to_native(b('').join(b_lines_new)) + + backupdest = "" + if changed and not module.check_mode: + if backup: + backupdest = module.backup_local(dest) + write_changes(module, b_lines_new, dest) + + attr_diff = {} + msg, changed = check_file_attrs(module, changed, msg, attr_diff) + + attr_diff['before_header'] = '%s (file attributes)' % dest + attr_diff['after_header'] = '%s (file attributes)' % dest + + difflist = [diff, attr_diff] + + module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=difflist) + + +def main(): + + # define the available arguments/parameters that a user can pass to + # the module + module_args = dict( + dest=dict(type='str', required=True), + json=dict(default=None), + toml=dict(default=None), + merge=dict(type='bool', default=True), + state=dict(default='present', choices=['absent', 'present']), + create=dict(type='bool', default=False), + backup=dict(type='bool', default=False), + validate=dict(default=None, type='str') + ) + + # the AnsibleModule object will be our abstraction working with Ansible + # this includes instantiation, a couple of common attr would be the + # args/params passed to the execution, as well as if the module + # supports check mode + module = AnsibleModule( + argument_spec=module_args, + mutually_exclusive=[['json', 'toml']], + add_file_common_args=True, + supports_check_mode=True + ) + + params = module.params + create = params['create'] + merge = params['merge'] + backup = params['backup'] + dest = params['dest'] + + b_dest = to_bytes(dest, errors='surrogate_or_strict') + + if os.path.isdir(b_dest): + module.fail_json(rc=256, msg='Destination %s is a directory !' % dest) + + par_json, par_toml, jsonbool = params['json'], params['toml'], False + if par_json is None: + conf = par_toml + else: + conf = par_json + jsonbool = True + + if params['state'] == 'present': + present(module, dest, conf, jsonbool, merge, create, backup) + else: + absent(module, dest, conf, jsonbool, backup) + +if __name__ == '__main__': + main() + diff --git a/ansible/roles/tomlconfig/tasks/centos.yml b/ansible/roles/tomlconfig/tasks/centos.yml new file mode 100644 index 000000000..f276e796d --- /dev/null +++ b/ansible/roles/tomlconfig/tasks/centos.yml @@ -0,0 +1,17 @@ +--- + +- name: Install epel-release on CentOS/RedHat + when: ansible_os_family == "RedHat" + yum: "pkg=epel-release update_cache=yes state=latest" + +- name: Install pip on CentOS/RedHat + when: ansible_os_family == "RedHat" + yum: "pkg={{item}} state=latest" + with_items: + - python2-pip + - python-virtualenv + +- name: Install toml + when: ansible_os_family == "RedHat" + pip: name=toml + diff --git a/ansible/roles/tomlconfig/tasks/debian.yml b/ansible/roles/tomlconfig/tasks/debian.yml new file mode 100644 index 000000000..f5e287deb --- /dev/null +++ b/ansible/roles/tomlconfig/tasks/debian.yml @@ -0,0 +1,6 @@ +--- + +- name: Install package on Debian/Ubuntu + when: ansible_os_family == "Debian" + apt: "pkg=python-toml state=latest" + diff --git a/ansible/roles/tomlconfig/tasks/main.yml b/ansible/roles/tomlconfig/tasks/main.yml new file mode 100644 index 000000000..06132b14a --- /dev/null +++ b/ansible/roles/tomlconfig/tasks/main.yml @@ -0,0 +1,24 @@ +--- + +- include: debian.yml + when: ansible_os_family == "Debian" + +- include: centos.yml + when: ansible_os_family == "RedHat" + +- name: Update config.toml with json + when: jsonconfig is defined + tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml json='{{jsonconfig}}'" + +- name: Update config.toml with toml + when: tomlconfig is defined + tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml toml='{{tomlconfig}}'" + +- name: Update config.toml with json - removal + when: jsonconfigremove is defined + tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml json='{{jsonconfigremove}}'" + +- name: Update config.toml with toml - removal + when: tomlconfigremove is defined + tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml toml='{{tomlconfigremove}}'" + diff --git a/ansible/tomlconfig.yml b/ansible/tomlconfig.yml new file mode 100644 index 000000000..e6cdd33f5 --- /dev/null +++ b/ansible/tomlconfig.yml @@ -0,0 +1,9 @@ +--- + +#variable "service" is required + +- hosts: "{{ lookup('env','TF_VAR_TESTNET_NAME') }}:tag_Environment_{{ lookup('env','TF_VAR_TESTNET_NAME') | regex_replace('-','_') }}" + any_errors_fatal: "{{validators | default(true) | bool}}" + roles: + - tomlconfig + From e8d2c0b0db9f5b728247f591d4e00e345f24a2e3 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Fri, 15 Sep 2017 11:42:23 -0400 Subject: [PATCH 15/46] Reorganized package installations in Ansible to make tomlconfig faster --- ansible/roles/install/tasks/centos.yml | 17 +++++++++++++++++ ansible/roles/install/tasks/debian.yml | 6 ++++++ ansible/roles/tomlconfig/tasks/centos.yml | 17 ----------------- ansible/roles/tomlconfig/tasks/debian.yml | 6 ------ ansible/roles/tomlconfig/tasks/main.yml | 6 ------ 5 files changed, 23 insertions(+), 29 deletions(-) delete mode 100644 ansible/roles/tomlconfig/tasks/centos.yml delete mode 100644 ansible/roles/tomlconfig/tasks/debian.yml diff --git a/ansible/roles/install/tasks/centos.yml b/ansible/roles/install/tasks/centos.yml index 566c9cebf..93afa43fc 100644 --- a/ansible/roles/install/tasks/centos.yml +++ b/ansible/roles/install/tasks/centos.yml @@ -32,3 +32,20 @@ when: ansible_os_family == "RedHat" yum: "pkg={{service}} update_cache=yes state=latest" +# The below commands are required so that the tomlconfig playbook can run. + +- name: Install epel-release on CentOS/RedHat + when: ansible_os_family == "RedHat" + yum: "pkg=epel-release update_cache=yes state=latest" + +- name: Install pip on CentOS/RedHat + when: ansible_os_family == "RedHat" + yum: "pkg={{item}} state=latest" + with_items: + - python2-pip + - python-virtualenv + +- name: Install toml + when: ansible_os_family == "RedHat" + pip: name=toml + diff --git a/ansible/roles/install/tasks/debian.yml b/ansible/roles/install/tasks/debian.yml index d003d14aa..200ca3905 100644 --- a/ansible/roles/install/tasks/debian.yml +++ b/ansible/roles/install/tasks/debian.yml @@ -20,3 +20,9 @@ when: ansible_os_family == "Debian" apt: "pkg={{service}} update_cache=yes state=latest" +# The below command is required to use the tomlconfig playbook. + +- name: Install package on Debian/Ubuntu + when: ansible_os_family == "Debian" + apt: "pkg=python-toml state=latest" + diff --git a/ansible/roles/tomlconfig/tasks/centos.yml b/ansible/roles/tomlconfig/tasks/centos.yml deleted file mode 100644 index f276e796d..000000000 --- a/ansible/roles/tomlconfig/tasks/centos.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- - -- name: Install epel-release on CentOS/RedHat - when: ansible_os_family == "RedHat" - yum: "pkg=epel-release update_cache=yes state=latest" - -- name: Install pip on CentOS/RedHat - when: ansible_os_family == "RedHat" - yum: "pkg={{item}} state=latest" - with_items: - - python2-pip - - python-virtualenv - -- name: Install toml - when: ansible_os_family == "RedHat" - pip: name=toml - diff --git a/ansible/roles/tomlconfig/tasks/debian.yml b/ansible/roles/tomlconfig/tasks/debian.yml deleted file mode 100644 index f5e287deb..000000000 --- a/ansible/roles/tomlconfig/tasks/debian.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- - -- name: Install package on Debian/Ubuntu - when: ansible_os_family == "Debian" - apt: "pkg=python-toml state=latest" - diff --git a/ansible/roles/tomlconfig/tasks/main.yml b/ansible/roles/tomlconfig/tasks/main.yml index 06132b14a..acc24dfcd 100644 --- a/ansible/roles/tomlconfig/tasks/main.yml +++ b/ansible/roles/tomlconfig/tasks/main.yml @@ -1,11 +1,5 @@ --- -- include: debian.yml - when: ansible_os_family == "Debian" - -- include: centos.yml - when: ansible_os_family == "RedHat" - - name: Update config.toml with json when: jsonconfig is defined tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml json='{{jsonconfig}}'" From be9c7fce9ca53fd148869f26330e020dbe78d0a4 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Fri, 15 Sep 2017 14:54:23 -0400 Subject: [PATCH 16/46] Made the tomlconfig playbook even faster --- ansible/roles/tomlconfig/tasks/main.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/ansible/roles/tomlconfig/tasks/main.yml b/ansible/roles/tomlconfig/tasks/main.yml index acc24dfcd..518e0f3ec 100644 --- a/ansible/roles/tomlconfig/tasks/main.yml +++ b/ansible/roles/tomlconfig/tasks/main.yml @@ -2,17 +2,9 @@ - name: Update config.toml with json when: jsonconfig is defined - tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml json='{{jsonconfig}}'" + tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml json='{{jsonconfig}}' state={{(remove | default(false) | bool) | ternary('absent','present')}}" - name: Update config.toml with toml when: tomlconfig is defined - tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml toml='{{tomlconfig}}'" - -- name: Update config.toml with json - removal - when: jsonconfigremove is defined - tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml json='{{jsonconfigremove}}'" - -- name: Update config.toml with toml - removal - when: tomlconfigremove is defined - tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml toml='{{tomlconfigremove}}'" + tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml toml='{{tomlconfig}}' state={{(remove | default(false) | bool) | ternary('absent','present')}}" From d9824c1cc4d686a97b2a137d6bfcfd9df155082c Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Mon, 18 Sep 2017 11:26:34 -0400 Subject: [PATCH 17/46] Added getconfigtoml playbook --- ansible/getconfigtoml.yml | 8 ++++++++ ansible/roles/getconfigtoml/tasks/main.yml | 6 ++++++ ansible/tomlconfig.yml | 1 - 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 ansible/getconfigtoml.yml create mode 100644 ansible/roles/getconfigtoml/tasks/main.yml diff --git a/ansible/getconfigtoml.yml b/ansible/getconfigtoml.yml new file mode 100644 index 000000000..055ed923d --- /dev/null +++ b/ansible/getconfigtoml.yml @@ -0,0 +1,8 @@ +--- + +#variable "service" is required + +- hosts: "{{ lookup('env','TF_VAR_TESTNET_NAME') }}:tag_Environment_{{ lookup('env','TF_VAR_TESTNET_NAME') | regex_replace('-','_') }}" + roles: + - getconfigtoml + diff --git a/ansible/roles/getconfigtoml/tasks/main.yml b/ansible/roles/getconfigtoml/tasks/main.yml new file mode 100644 index 000000000..8ffd23c0f --- /dev/null +++ b/ansible/roles/getconfigtoml/tasks/main.yml @@ -0,0 +1,6 @@ +--- + +- name: Get config.toml from node + fetch: "dest={{ destination | default('.') }} flat=yes src=/etc/{{service}}/tendermint/config.toml" + run_once: yes + diff --git a/ansible/tomlconfig.yml b/ansible/tomlconfig.yml index e6cdd33f5..d410588ea 100644 --- a/ansible/tomlconfig.yml +++ b/ansible/tomlconfig.yml @@ -3,7 +3,6 @@ #variable "service" is required - hosts: "{{ lookup('env','TF_VAR_TESTNET_NAME') }}:tag_Environment_{{ lookup('env','TF_VAR_TESTNET_NAME') | regex_replace('-','_') }}" - any_errors_fatal: "{{validators | default(true) | bool}}" roles: - tomlconfig From 94c721641c92fec24b70956197f4d624228bcf37 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Mon, 18 Sep 2017 12:19:16 -0400 Subject: [PATCH 18/46] ansible playbook getconfigtoml fix --- ansible/roles/getconfigtoml/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/getconfigtoml/tasks/main.yml b/ansible/roles/getconfigtoml/tasks/main.yml index 8ffd23c0f..08f23e4d8 100644 --- a/ansible/roles/getconfigtoml/tasks/main.yml +++ b/ansible/roles/getconfigtoml/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Get config.toml from node - fetch: "dest={{ destination | default('.') }} flat=yes src=/etc/{{service}}/tendermint/config.toml" + fetch: "dest={{ destination | default('.') }}/config.toml flat=yes src=/etc/{{service}}/tendermint/config.toml" run_once: yes From 2cad2d22fd12d316cf30e02719c2a4cae1bf34f3 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 19 Sep 2017 10:58:14 -0400 Subject: [PATCH 19/46] Added data folder removal to unsafe reset --- ansible/roles/unsafe_reset/tasks/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/unsafe_reset/tasks/main.yml b/ansible/roles/unsafe_reset/tasks/main.yml index 99c536f57..57f55b1c3 100644 --- a/ansible/roles/unsafe_reset/tasks/main.yml +++ b/ansible/roles/unsafe_reset/tasks/main.yml @@ -9,3 +9,5 @@ - shell: "export TMHOME=/etc/{{service}}/tendermint ; tendermint unsafe_reset_all" become_user: "{{service}}" +- file: "path=/etc/{{service}}/data state=absent" + From 7dc7109dc9610d32dd8dee054016c23c775164f9 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 19 Sep 2017 11:09:04 -0400 Subject: [PATCH 20/46] config.toml fix --- ansible/roles/config/templates/config.toml.j2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ansible/roles/config/templates/config.toml.j2 b/ansible/roles/config/templates/config.toml.j2 index b7f3d324d..273bc51a9 100644 --- a/ansible/roles/config/templates/config.toml.j2 +++ b/ansible/roles/config/templates/config.toml.j2 @@ -4,7 +4,8 @@ proxy_app = "tcp://127.0.0.1:46658" moniker = "{{inventory_hostname}}" fast_sync = true -db_backend = "memdb" +db_backend = "leveldb" +#db_backend = "memdb" #log_level = "mempool:error,*:debug" log_level = "state:info,*:error" From 6848f8b4073b7c85a52d0448617510dd0349d5cf Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 19 Sep 2017 12:47:05 -0400 Subject: [PATCH 21/46] Introduced jsonconfig task for ansible playbooks --- ansible/jsonconfig.yml | 8 + .../roles/jsonconfig/library/jsonconfig.py | 360 ++++++++++++++++++ ansible/roles/jsonconfig/tasks/main.yml | 5 + ansible/roles/tomlconfig/defaults/main.yml | 3 + .../roles/tomlconfig/library/tomlconfig.py | 16 +- ansible/roles/tomlconfig/tasks/main.yml | 4 +- 6 files changed, 383 insertions(+), 13 deletions(-) create mode 100644 ansible/jsonconfig.yml create mode 100644 ansible/roles/jsonconfig/library/jsonconfig.py create mode 100644 ansible/roles/jsonconfig/tasks/main.yml create mode 100644 ansible/roles/tomlconfig/defaults/main.yml diff --git a/ansible/jsonconfig.yml b/ansible/jsonconfig.yml new file mode 100644 index 000000000..de1f5b459 --- /dev/null +++ b/ansible/jsonconfig.yml @@ -0,0 +1,8 @@ +--- + +#variable "service" is required + +- hosts: "{{ lookup('env','TF_VAR_TESTNET_NAME') }}:tag_Environment_{{ lookup('env','TF_VAR_TESTNET_NAME') | regex_replace('-','_') }}" + roles: + - jsonconfig + diff --git a/ansible/roles/jsonconfig/library/jsonconfig.py b/ansible/roles/jsonconfig/library/jsonconfig.py new file mode 100644 index 000000000..d3b4140e4 --- /dev/null +++ b/ansible/roles/jsonconfig/library/jsonconfig.py @@ -0,0 +1,360 @@ +#!/usr/bin/python + +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'community' +} + +DOCUMENTATION = ''' +--- +module: jsonconfig + +short_description: Ensure a particular configuration is added to a json-formatted configuration file + +version_added: "2.4" + +description: + - This module will add configuration to a json-formatted configuration file. + +options: + dest: + description: + - The file to modify. + required: true + aliases: [ name, destfile ] + json: + description: + - The configuration in json format to apply. + required: false + default: '{}' + merge: + description: + - Used with C(state=present). If specified, it will merge the configuration. Othwerwise + the configuration will be overwritten. + required: false + choices: [ "yes", "no" ] + default: "yes" + state: + description: + - Whether the configuration should be there or not. + required: false + choices: [ present, absent ] + default: "present" + create: + description: + - Used with C(state=present). If specified, the file will be created + if it does not already exist. By default it will fail if the file + is missing. + required: false + choices: [ "yes", "no" ] + default: "no" + backup: + description: + - Create a backup file including the timestamp information so you can + get the original file back if you somehow clobbered it incorrectly. + required: false + choices: [ "yes", "no" ] + default: "no" + others: + description: + - All arguments accepted by the M(file) module also work here. + required: false + +extends_documentation_fragment: + - files + - validate + +author: + - "Greg Szabo (@greg-szabo)" +''' + +EXAMPLES = ''' +# Add a new section to a json file +- name: Add comment section + jsonconfig: + dest: /etc/something.json + json: '{ "comment": { "comment1": "mycomment" } }' + +# Rewrite a json file with the configuration +- name: Create or overwrite config.json + jsonconfig: + dest: /etc/config.json + json: '{ "regedit": { "freshfile": true } }' + merge: no + create: yes + +''' + +RETURN = ''' +changed: + description: True if the configuration changed. + type: bool +msg: + description: Description of the change + type: str +''' + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.six import b +from ansible.module_utils._text import to_bytes, to_native +import tempfile +import json +import copy +import os + +def write_changes(module, b_lines, dest): + + tmpfd, tmpfile = tempfile.mkstemp() + f = os.fdopen(tmpfd, 'wb') + f.writelines(b_lines) + f.close() + + validate = module.params.get('validate', None) + valid = not validate + if validate: + if "%s" not in validate: + module.fail_json(msg="validate must contain %%s: %s" % (validate)) + (rc, out, err) = module.run_command(to_bytes(validate % tmpfile, errors='surrogate_or_strict')) + valid = rc == 0 + if rc != 0: + module.fail_json(msg='failed to validate: ' + 'rc:%s error:%s' % (rc, err)) + if valid: + module.atomic_move(tmpfile, + to_native(os.path.realpath(to_bytes(dest, errors='surrogate_or_strict')), errors='surrogate_or_strict'), + unsafe_writes=module.params['unsafe_writes']) + + +def check_file_attrs(module, changed, message, diff): + + file_args = module.load_file_common_arguments(module.params) + if module.set_fs_attributes_if_different(file_args, False, diff=diff): + + if changed: + message += " and " + changed = True + message += "ownership, perms or SE linux context changed" + + return message, changed + + +#Merge dict d2 into dict d1 and return a new object +def deepmerge(d1, d2): + if d1 is None: + return copy.deepcopy(d2) + if d2 is None: + return copy.deepcopy(d1) + if d1 == d2: + return copy.deepcopy(d1) + if isinstance(d1, dict) and isinstance(d2, dict): + result={} + for key in set(d1.keys()+d2.keys()): + da = db = None + if key in d1: + da = d1[key] + if key in d2: + db = d2[key] + result[key] = deepmerge(da, db) + return result + else: + return copy.deepcopy(d2) + + +#Remove dict d2 from dict d1 and return a new object +def deepdiff(d1, d2): + if d1 is None or d2 is None: + return None + if d1 == d2: + return None + if isinstance(d1, dict) and isinstance(d2, dict): + result = {} + for key in d1.keys(): + if key in d2: + dd = deepdiff(d1[key],d2[key]) + if dd is not None: + result[key] = dd + else: + result[key] = d1[key] + return result + else: + return None + + +def present(module, dest, conf, jsonbool, merge, create, backup): + + diff = {'before': '', + 'after': '', + 'before_header': '%s (content)' % dest, + 'after_header': '%s (content)' % dest} + + b_dest = to_bytes(dest, errors='surrogate_or_strict') + if not os.path.exists(b_dest): + if not create: + module.fail_json(rc=257, msg='Destination %s does not exist !' % dest) + b_destpath = os.path.dirname(b_dest) + if not os.path.exists(b_destpath) and not module.check_mode: + os.makedirs(b_destpath) + b_lines = [] + else: + f = open(b_dest, 'rb') + b_lines = f.readlines() + f.close() + + lines = to_native(b('').join(b_lines)) + + if module._diff: + diff['before'] = lines + + b_conf = to_bytes(conf, errors='surrogate_or_strict') + + jsonconfig = json.loads(lines) + config = eval(b_conf) + + if not isinstance(config, dict): + module.fail_json(msg="Invalid value in json parameter: {0}".format(config)) + + b_lines_new = b_lines + msg = '' + changed = False + + if not merge: + if jsonconfig != config: + b_lines_new = to_bytes(json.dumps(config, sort_keys=True, indent=4, separators=(',', ': '))) + msg = 'config overwritten' + changed = True + else: + mergedconfig = deepmerge(jsonconfig,config) + if jsonconfig != mergedconfig: + b_lines_new = to_bytes(json.dumps(mergedconfig), sort_keys=True, indent=4, separators=(',', ': '))) + msg = 'config merged' + changed = True + + if module._diff: + diff['after'] = to_native(b('').join(b_lines_new)) + + backupdest = "" + if changed and not module.check_mode: + if backup and os.path.exists(b_dest): + backupdest = module.backup_local(dest) + write_changes(module, b_lines_new, dest) + + if module.check_mode and not os.path.exists(b_dest): + module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=diff) + + attr_diff = {} + msg, changed = check_file_attrs(module, changed, msg, attr_diff) + + attr_diff['before_header'] = '%s (file attributes)' % dest + attr_diff['after_header'] = '%s (file attributes)' % dest + + difflist = [diff, attr_diff] + module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=difflist) + + +def absent(module, dest, conf, jsonbool, backup): + + b_dest = to_bytes(dest, errors='surrogate_or_strict') + if not os.path.exists(b_dest): + module.exit_json(changed=False, msg="file not present") + + msg = '' + diff = {'before': '', + 'after': '', + 'before_header': '%s (content)' % dest, + 'after_header': '%s (content)' % dest} + + f = open(b_dest, 'rb') + b_lines = f.readlines() + f.close() + + lines = to_native(b('').join(b_lines)) + b_conf = to_bytes(conf, errors='surrogate_or_strict') + + lines = to_native(b('').join(b_lines)) + jsonconfig = json.loads(lines) + config = eval(b_conf) + + if not isinstance(config, dict): + module.fail_json(msg="Invalid value in json parameter: {0}".format(config)) + + if module._diff: + diff['before'] = to_native(b('').join(b_lines)) + + b_lines_new = b_lines + msg = '' + changed = False + + diffconfig = deepdiff(jsonconfig,config) + if diffconfig is None: + diffconfig = {} + if jsonconfig != diffconfig: + b_lines_new = to_bytes(json.dumps(diffconfig, sort_keys=True, indent=4, separators=(',', ': '))) + msg = 'config removed' + changed = True + + if module._diff: + diff['after'] = to_native(b('').join(b_lines_new)) + + backupdest = "" + if changed and not module.check_mode: + if backup: + backupdest = module.backup_local(dest) + write_changes(module, b_lines_new, dest) + + attr_diff = {} + msg, changed = check_file_attrs(module, changed, msg, attr_diff) + + attr_diff['before_header'] = '%s (file attributes)' % dest + attr_diff['after_header'] = '%s (file attributes)' % dest + + difflist = [diff, attr_diff] + + module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=difflist) + + +def main(): + + # define the available arguments/parameters that a user can pass to + # the module + module_args = dict( + dest=dict(type='str', required=True), + json=dict(default=None, required=True), + merge=dict(type='bool', default=True), + state=dict(default='present', choices=['absent', 'present']), + create=dict(type='bool', default=False), + backup=dict(type='bool', default=False), + validate=dict(default=None, type='str') + ) + + # the AnsibleModule object will be our abstraction working with Ansible + # this includes instantiation, a couple of common attr would be the + # args/params passed to the execution, as well as if the module + # supports check mode + module = AnsibleModule( + argument_spec=module_args, + add_file_common_args=True, + supports_check_mode=True + ) + + params = module.params + create = params['create'] + merge = params['merge'] + backup = params['backup'] + dest = params['dest'] + + b_dest = to_bytes(dest, errors='surrogate_or_strict') + + if os.path.isdir(b_dest): + module.fail_json(rc=256, msg='Destination %s is a directory !' % dest) + + conf = params['json'] + + if params['state'] == 'present': + present(module, dest, conf, jsonbool, merge, create, backup) + else: + absent(module, dest, conf, jsonbool, backup) + +if __name__ == '__main__': + main() + diff --git a/ansible/roles/jsonconfig/tasks/main.yml b/ansible/roles/jsonconfig/tasks/main.yml new file mode 100644 index 000000000..277be1095 --- /dev/null +++ b/ansible/roles/jsonconfig/tasks/main.yml @@ -0,0 +1,5 @@ +--- + +- name: Update + jsonconfig: "dest='{{destination}}' json='{{jsonconfig}}' state={{(remove | default(false) | bool) | ternary('absent','present')}}" + diff --git a/ansible/roles/tomlconfig/defaults/main.yml b/ansible/roles/tomlconfig/defaults/main.yml new file mode 100644 index 000000000..236d6eb80 --- /dev/null +++ b/ansible/roles/tomlconfig/defaults/main.yml @@ -0,0 +1,3 @@ +--- +destination: /etc/{{service}}/tendermint/config.toml + diff --git a/ansible/roles/tomlconfig/library/tomlconfig.py b/ansible/roles/tomlconfig/library/tomlconfig.py index ced62d07a..fbb10b823 100644 --- a/ansible/roles/tomlconfig/library/tomlconfig.py +++ b/ansible/roles/tomlconfig/library/tomlconfig.py @@ -88,21 +88,15 @@ EXAMPLES = ''' merge: no create: yes -- name: Set file permissions - tomlconfig: - dest: /etc/config.toml - mode: 0600 - owner: root - group: root ''' RETURN = ''' -config: - description: The resultant configuration - type: str -created: - description: True if the file was freshly created +changed: + description: True if the configuration changed. type: bool +msg: + description: Description of the change + type: str ''' from ansible.module_utils.basic import AnsibleModule diff --git a/ansible/roles/tomlconfig/tasks/main.yml b/ansible/roles/tomlconfig/tasks/main.yml index 518e0f3ec..8fe47e821 100644 --- a/ansible/roles/tomlconfig/tasks/main.yml +++ b/ansible/roles/tomlconfig/tasks/main.yml @@ -2,9 +2,9 @@ - name: Update config.toml with json when: jsonconfig is defined - tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml json='{{jsonconfig}}' state={{(remove | default(false) | bool) | ternary('absent','present')}}" + tomlconfig: "dest='{{destination}}' json='{{jsonconfig}}' state={{(remove | default(false) | bool) | ternary('absent','present')}}" - name: Update config.toml with toml when: tomlconfig is defined - tomlconfig: "dest=/etc/{{service}}/tendermint/config.toml toml='{{tomlconfig}}' state={{(remove | default(false) | bool) | ternary('absent','present')}}" + tomlconfig: "dest='{{destination}}' toml='{{tomlconfig}}' state={{(remove | default(false) | bool) | ternary('absent','present')}}" From 8f657f886229642957a110243a502ea72b322180 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 19 Sep 2017 13:18:22 -0400 Subject: [PATCH 22/46] Added getfile ansible playbook --- ansible/getfile.yml | 9 +++++++++ ansible/roles/getfile/tasks/main.yml | 6 ++++++ 2 files changed, 15 insertions(+) create mode 100644 ansible/getfile.yml create mode 100644 ansible/roles/getfile/tasks/main.yml diff --git a/ansible/getfile.yml b/ansible/getfile.yml new file mode 100644 index 000000000..c1c96f66a --- /dev/null +++ b/ansible/getfile.yml @@ -0,0 +1,9 @@ +--- + +#variable "service" is required +#variable "source" is required + +- hosts: "{{ lookup('env','TF_VAR_TESTNET_NAME') }}:tag_Environment_{{ lookup('env','TF_VAR_TESTNET_NAME') | regex_replace('-','_') }}" + roles: + - getfile + diff --git a/ansible/roles/getfile/tasks/main.yml b/ansible/roles/getfile/tasks/main.yml new file mode 100644 index 000000000..7f3156fc1 --- /dev/null +++ b/ansible/roles/getfile/tasks/main.yml @@ -0,0 +1,6 @@ +--- + +- name: Get file from node + fetch: "dest={{ destination | default('.') }}/{{ source | basename }} flat=yes src='{{source}}'" + run_once: yes + From b818d98875f2757ed49bfc94138d3715e76bbb5f Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 19 Sep 2017 14:24:27 -0400 Subject: [PATCH 23/46] jsonconfig playbook fix --- ansible/getfile.yml | 1 - ansible/roles/jsonconfig/library/jsonconfig.py | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ansible/getfile.yml b/ansible/getfile.yml index c1c96f66a..9dcee0fa8 100644 --- a/ansible/getfile.yml +++ b/ansible/getfile.yml @@ -1,6 +1,5 @@ --- -#variable "service" is required #variable "source" is required - hosts: "{{ lookup('env','TF_VAR_TESTNET_NAME') }}:tag_Environment_{{ lookup('env','TF_VAR_TESTNET_NAME') | regex_replace('-','_') }}" diff --git a/ansible/roles/jsonconfig/library/jsonconfig.py b/ansible/roles/jsonconfig/library/jsonconfig.py index d3b4140e4..11f9146e6 100644 --- a/ansible/roles/jsonconfig/library/jsonconfig.py +++ b/ansible/roles/jsonconfig/library/jsonconfig.py @@ -181,7 +181,7 @@ def deepdiff(d1, d2): return None -def present(module, dest, conf, jsonbool, merge, create, backup): +def present(module, dest, conf, merge, create, backup): diff = {'before': '', 'after': '', @@ -226,7 +226,7 @@ def present(module, dest, conf, jsonbool, merge, create, backup): else: mergedconfig = deepmerge(jsonconfig,config) if jsonconfig != mergedconfig: - b_lines_new = to_bytes(json.dumps(mergedconfig), sort_keys=True, indent=4, separators=(',', ': '))) + b_lines_new = to_bytes(json.dumps(mergedconfig, sort_keys=True, indent=4, separators=(',', ': '))) msg = 'config merged' changed = True @@ -252,7 +252,7 @@ def present(module, dest, conf, jsonbool, merge, create, backup): module.exit_json(changed=changed, msg=msg, backup=backupdest, diff=difflist) -def absent(module, dest, conf, jsonbool, backup): +def absent(module, dest, conf, backup): b_dest = to_bytes(dest, errors='surrogate_or_strict') if not os.path.exists(b_dest): @@ -351,9 +351,9 @@ def main(): conf = params['json'] if params['state'] == 'present': - present(module, dest, conf, jsonbool, merge, create, backup) + present(module, dest, conf, merge, create, backup) else: - absent(module, dest, conf, jsonbool, backup) + absent(module, dest, conf, backup) if __name__ == '__main__': main() From f9ae600a61d5f2d0789fd4a16040ac31c9a7d5df Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 19 Sep 2017 23:40:32 -0400 Subject: [PATCH 24/46] Introduced setfile playbook --- ansible/roles/setfile/tasks/main.yml | 25 +++++++++++++++++++++++++ ansible/setfile.yml | 9 +++++++++ 2 files changed, 34 insertions(+) create mode 100644 ansible/roles/setfile/tasks/main.yml create mode 100644 ansible/setfile.yml diff --git a/ansible/roles/setfile/tasks/main.yml b/ansible/roles/setfile/tasks/main.yml new file mode 100644 index 000000000..fca02d683 --- /dev/null +++ b/ansible/roles/setfile/tasks/main.yml @@ -0,0 +1,25 @@ +--- + +- name: Download file if necessary + when: source | regex_search('^https?://') + get_url: "url={{source}} dest={{localdir}}/{{source | basename | regex_replace('\\?.*$','')}}" + register: downloaded + connection: local + run_once: yes + +- name: Figure out file source + set_fact: + compiledsource: "{{ (downloaded.skipped is defined) | ternary(source, downloaded.dest) }}" + connection: local + +- name: Extract file to destination + when: compiledsource | regex_search('\\.(zip|tar|tar\\.gz|tgz|tb2|tbz|tbz2|tar\\.bz2|txz|tar\\.xz)$') + register: extractcopy + unarchive: + src: "{{compiledsource}}" + dest: "{{destination}}" + +- name: Copy non-zipped file to destination + when: extractcopy.skipped is defined + copy: "src='{{compiledsource}}' dest='{{destination}}'" + diff --git a/ansible/setfile.yml b/ansible/setfile.yml new file mode 100644 index 000000000..9b6667cdf --- /dev/null +++ b/ansible/setfile.yml @@ -0,0 +1,9 @@ +--- + +#variable "source" is required +#variable "destination" is required + +- hosts: "{{ lookup('env','TF_VAR_TESTNET_NAME') }}:tag_Environment_{{ lookup('env','TF_VAR_TESTNET_NAME') | regex_replace('-','_') }}" + roles: + - setfile + From 83f49f0dff0d1c3eb75b7cf6e3a7459761933be5 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 19 Sep 2017 23:49:26 -0400 Subject: [PATCH 25/46] Added unzip to packages to install --- ansible/roles/install/tasks/centos.yml | 2 ++ ansible/roles/install/tasks/debian.yml | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ansible/roles/install/tasks/centos.yml b/ansible/roles/install/tasks/centos.yml index 93afa43fc..dc8b86b57 100644 --- a/ansible/roles/install/tasks/centos.yml +++ b/ansible/roles/install/tasks/centos.yml @@ -44,6 +44,8 @@ with_items: - python2-pip - python-virtualenv + - unzip + - tar - name: Install toml when: ansible_os_family == "RedHat" diff --git a/ansible/roles/install/tasks/debian.yml b/ansible/roles/install/tasks/debian.yml index 200ca3905..d92a8c3ed 100644 --- a/ansible/roles/install/tasks/debian.yml +++ b/ansible/roles/install/tasks/debian.yml @@ -24,5 +24,8 @@ - name: Install package on Debian/Ubuntu when: ansible_os_family == "Debian" - apt: "pkg=python-toml state=latest" - + apt: "pkg={{item}} state=latest" + with_items: + - python-toml + - unzip + - tar From 6e2caf5a062ccc4740fd6a66a0b324741337d6d3 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 19 Sep 2017 23:51:40 -0400 Subject: [PATCH 26/46] sudo fix --- ansible/roles/setfile/tasks/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ansible/roles/setfile/tasks/main.yml b/ansible/roles/setfile/tasks/main.yml index fca02d683..442072dda 100644 --- a/ansible/roles/setfile/tasks/main.yml +++ b/ansible/roles/setfile/tasks/main.yml @@ -6,11 +6,13 @@ register: downloaded connection: local run_once: yes + become: no - name: Figure out file source set_fact: compiledsource: "{{ (downloaded.skipped is defined) | ternary(source, downloaded.dest) }}" connection: local + become: no - name: Extract file to destination when: compiledsource | regex_search('\\.(zip|tar|tar\\.gz|tgz|tb2|tbz|tbz2|tar\\.bz2|txz|tar\\.xz)$') From 94a5087e0f3ae302568d846aab647e5c74bdf68a Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 20 Sep 2017 00:33:29 -0400 Subject: [PATCH 27/46] made setfile playbook faster --- ansible/setfile.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/setfile.yml b/ansible/setfile.yml index 9b6667cdf..22aff779e 100644 --- a/ansible/setfile.yml +++ b/ansible/setfile.yml @@ -4,6 +4,7 @@ #variable "destination" is required - hosts: "{{ lookup('env','TF_VAR_TESTNET_NAME') }}:tag_Environment_{{ lookup('env','TF_VAR_TESTNET_NAME') | regex_replace('-','_') }}" + gather_facts: no roles: - setfile From 85e562004c63a409d26596d9d162c05cd1fe31ed Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Mon, 25 Sep 2017 11:11:20 -0400 Subject: [PATCH 28/46] tendermint 0.11.0 compatibility --- ansible/roles/config/templates/genesis-server.json.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/config/templates/genesis-server.json.j2 b/ansible/roles/config/templates/genesis-server.json.j2 index e41c98a0c..a1c7741b3 100644 --- a/ansible/roles/config/templates/genesis-server.json.j2 +++ b/ansible/roles/config/templates/genesis-server.json.j2 @@ -12,7 +12,7 @@ "data": "{{hostvars[host]["pubkey"]["data"]}}", "type": "{{hostvars[host]["pubkey"]["type"]}}" }, - "amount":10, + "power":10, "name":"{{hostvars[host]["inventory_hostname"]}}" } {% endfor %} From 42394aec2b156ed3b01748c633f5a8724b1197b7 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 3 Oct 2017 01:47:31 -0400 Subject: [PATCH 29/46] Added peng coins --- ansible/app_options_files/public_testnet | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ansible/app_options_files/public_testnet b/ansible/app_options_files/public_testnet index 10f5f9d90..7f8dabc43 100644 --- a/ansible/app_options_files/public_testnet +++ b/ansible/app_options_files/public_testnet @@ -14,7 +14,7 @@ ] }, { - "name": "gregkey", + "name": "greg", "address": "B01C264BFE9CBD45458256E613A6F07061A3A6B6", "pub_key": { "type": "ed25519", @@ -124,5 +124,19 @@ "amount": 1 } ] + }, + { + "name": "peng", + "address": "7B8422A210D0F0B8734908C093ECF0E9A768BDB8", + "coins": [ + { + "denom": "buckyball", + "amount": 53712836452781 + }, + { + "denom": "pengcoin", + "amount": 1000 + } + ] } ] From 5109f895165b9b8426ac643fcd096957a7ee9f8d Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 3 Oct 2017 12:57:21 -0400 Subject: [PATCH 30/46] Changed Adrian address, added ansible tag, basecoin debug --- ansible/app_options_files/public_testnet | 6 +----- ansible/roles/config/tasks/main.yml | 1 + build/spectemplates/basecoin.spec | 6 ++++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/ansible/app_options_files/public_testnet b/ansible/app_options_files/public_testnet index 7f8dabc43..23c0d6d61 100644 --- a/ansible/app_options_files/public_testnet +++ b/ansible/app_options_files/public_testnet @@ -47,11 +47,7 @@ }, { "name": "adrian", - "address": "98F28277FA8C512968BBDE443F5DB27AC743F814", - "pub_key": { - "type": "ed25519", - "data": "2E7EAB9E4C93D3657A63E063D6ABB851596BA97ED9F4EB9A2FC714043DC9685D" - }, + "address": "0FA1DB09E8B174E81E94280C047C158D4271457B", "coins": [ { "denom": "axi", diff --git a/ansible/roles/config/tasks/main.yml b/ansible/roles/config/tasks/main.yml index 730bf3abb..bb2c0d0a4 100644 --- a/ansible/roles/config/tasks/main.yml +++ b/ansible/roles/config/tasks/main.yml @@ -23,6 +23,7 @@ group: "{{service}}" - name: copy generated service genesis.json - genesis_time will be updated + tags: reconfig-appgenesis when: (validators == true or validators == 'true') and (service_genesis_file is not defined) and (service != 'ethermint') template: src: genesis-service.json.j2 diff --git a/build/spectemplates/basecoin.spec b/build/spectemplates/basecoin.spec index 9553962bf..01321b767 100644 --- a/build/spectemplates/basecoin.spec +++ b/build/spectemplates/basecoin.spec @@ -10,15 +10,17 @@ Summary: basecoin is a Proof-of-Stake cryptocurrency and framework License: Apache 2.0 URL: https://tendermint.com/ Packager: Greg Szabo -Requires: tendermint >= 0.10.0 +Requires: tendermint >= 0.11.0 Provides: basecli -#Requires(pre): useradd %description Basecoin is an ABCI application designed to be used with the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency. It also provides a general purpose framework for extending the feature-set of the cryptocurrency by implementing plugins. %pre if ! %{__grep} -q '^%{name}:' /etc/passwd ; then + echo "`date`: useradd -k /dev/null -r -m -b %{_sysconfdir} %{name}" >> /tmp/rpmdebug + set >> /tmp/rpmdebug + echo "---" >> /tmp/rpmdebug useradd -k /dev/null -r -m -b %{_sysconfdir} %{name} chmod 755 %{_sysconfdir}/%{name} fi From 9ff1bd8c9cac5332d239f726cdee4d5022ba3cb1 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 3 Oct 2017 22:15:09 -0400 Subject: [PATCH 31/46] More accounts to public_testnet --- ansible/app_options_files/public_testnet | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ansible/app_options_files/public_testnet b/ansible/app_options_files/public_testnet index 23c0d6d61..38bf40652 100644 --- a/ansible/app_options_files/public_testnet +++ b/ansible/app_options_files/public_testnet @@ -134,5 +134,33 @@ "amount": 1000 } ] + }, + { + "name": "matt", + "address": "C2104A8191E282AA45D210BA93282B36768EDDA1", + "coins": [ + { + "denom": "buckyball", + "amount": 53712836452781 + }, + { + "denom": "mattcoin", + "amount": 1000 + } + ] + }, + { + "name": "frey", + "address": "0F8FB94B5A4D04220F15058B7AA16AF1328B57A9", + "coins": [ + { + "denom": "buckyball", + "amount": 53712836452781 + }, + { + "denom": "freycoin", + "amount": 1000 + } + ] } ] From eb3f6e65a0d79e82fae65c3348c763c158a4d72e Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Tue, 3 Oct 2017 23:47:59 -0400 Subject: [PATCH 32/46] New package build process with merged configuration folders --- build/Makefile | 32 ++++----- build/basecoin/DEBIAN/control | 2 +- .../systemd/system/basecoin-server.service | 5 +- .../etc/systemd/system/basecoin.service | 5 +- build/generate-spec | 36 ++++++++++ .../{gaia.spec => app-template.spec} | 24 +++---- build/spectemplates/basecoin.data | 5 ++ build/spectemplates/basecoin.spec | 69 ------------------- build/spectemplates/cosmos-sdk.data | 5 ++ build/spectemplates/cosmos-sdk.spec | 67 ------------------ build/spectemplates/ethermint.data | 5 ++ build/spectemplates/ethermint.spec | 24 +++---- build/spectemplates/gaia.data | 5 ++ build/spectemplates/trackomatron.data | 5 ++ build/spectemplates/trackomatron.spec | 22 +++--- 15 files changed, 116 insertions(+), 195 deletions(-) create mode 100755 build/generate-spec rename build/spectemplates/{gaia.spec => app-template.spec} (65%) create mode 100644 build/spectemplates/basecoin.data delete mode 100644 build/spectemplates/basecoin.spec create mode 100644 build/spectemplates/cosmos-sdk.data delete mode 100644 build/spectemplates/cosmos-sdk.spec create mode 100644 build/spectemplates/ethermint.data create mode 100644 build/spectemplates/gaia.data create mode 100644 build/spectemplates/trackomatron.data diff --git a/build/Makefile b/build/Makefile index 97887c7b9..ef5873681 100644 --- a/build/Makefile +++ b/build/Makefile @@ -32,12 +32,12 @@ endif # Here comes the real deal ### -binaries = tendermint basecoin ethermint trackomatron gaia cosmos-sdk -build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia build-cosmos-sdk -package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia package-rpm-cosmos-sdk -install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia package-rpm-cosmos-sdk -package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia package-deb-cosmos-sdk -install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia install-deb-cosmos-sdk +binaries = tendermint basecoin ethermint trackomatron gaia basecoin-old +build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia build-basecoin-old +package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia package-rpm-basecoin-old +install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia package-rpm-basecoin-old +package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia package-deb-basecoin-old +install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia install-deb-basecoin-old all: $(binaries) build: $(build-binaries) @@ -60,11 +60,12 @@ build-tendermint: git-branch cp $(GOPATH)/src/github.com/tendermint/tendermint/build/tendermint $(GOPATH)/bin @echo "*** Built tendermint" -build-basecoin: git-branch - @echo "*** Building basecoin" +build-basecoin-old: git-branch + @echo "*** Building basecoin-old" go get -d -u github.com/tendermint/basecoin/cmd/basecoin cd $(GOPATH)/src/github.com/tendermint/basecoin && git checkout "$(GIT_BRANCH)" && git pull $(MAKE) -C $(GOPATH)/src/github.com/tendermint/basecoin get_vendor_deps install + @echo "Workaround: basecoin-old does not have a binary that gives the basecoin-old version number." && rm -rf $(GOPATH)/bin/basecoin-old && ln -s $(GOPATH)/bin/basecoin $(GOPATH)/bin/basecoin-old @echo "*** Built basecoin" build-ethermint: git-branch @@ -90,13 +91,12 @@ build-gaia: git-branch $(MAKE) -C $(GOPATH)/src/github.com/cosmos/gaia get_vendor_deps install @echo "*** Built gaia" -build-cosmos-sdk: git-branch - @echo "*** Building cosmos-sdk" +build-basecoin: git-branch + @echo "*** Building basecoin from cosmos-sdk" go get -d -u go github.com/cosmos/cosmos-sdk || echo "Workaround for go downloads." cd $(GOPATH)/src/github.com/cosmos/cosmos-sdk && git checkout "$(GIT_BRANCH)" && git pull $(MAKE) -C $(GOPATH)/src/github.com/cosmos/cosmos-sdk get_vendor_deps install - @echo "Workaround: cosmos-sdk does not have a binary that gives the cosmos-sdk version number." && rm -rf $(GOPATH)/bin/cosmos-sdk && ln -s $(GOPATH)/bin/basecoin $(GOPATH)/bin/cosmos-sdk - @echo "*** Built cosmos-sdk" + @echo "*** Built basecoin from cosmos-sdk" ### # Prepare package files @@ -119,14 +119,13 @@ prepare-files = rm -rf $(build_folder) && mkdir -p $(build_folder) && cp -r ./$( ## prepare-tendermint = -prepare-basecoin = cp $(GOPATH)/bin/basecli $(build_folder)/usr/bin +prepare-basecoin-old = rm -f $(build_folder)/usr/bin/basecoin-old && cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(build_folder)/usr/bin prepare-ethermint = mkdir -p $(build_folder)/etc/ethermint && \ cp $(GOPATH)/src/github.com/tendermint/ethermint/setup/genesis.json $(build_folder)/etc/ethermint/genesis.json && \ cp -r $(GOPATH)/src/github.com/tendermint/ethermint/setup/keystore $(build_folder)/etc/ethermint prepare-trackomatron = rm -f $(build_folder)/usr/bin/trackomatron && cp $(GOPATH)/bin/tracko $(GOPATH)/bin/trackocli $(build_folder)/usr/bin prepare-gaia = -prepare-cosmos-sdk = rm -f $(build_folder)/usr/bin/cosmos-sdk && \ - cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(GOPATH)/bin/baseserver $(GOPATH)/bin/counter $(GOPATH)/bin/countercli $(GOPATH)/bin/eyes $(GOPATH)/bin/eyescli $(build_folder)/usr/bin +prepare-basecoin = rm -f $(build_folder)/usr/bin/basecoin-old && cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(GOPATH)/bin/baseserver $(GOPATH)/bin/counter $(GOPATH)/bin/countercli $(GOPATH)/bin/eyes $(GOPATH)/bin/eyescli $(build_folder)/usr/bin ### # Package the binary for CentOS/RedHat (RPM) and Debian/Ubuntu (DEB) @@ -146,9 +145,10 @@ package-rpm-%: folder-% mkdir -p {SPECS,tmp} - cp ./spectemplates/$*.spec SPECS + ./generate-spec $* spectemplates SPECS sed -i "s/@VERSION@/$($*_version)/" SPECS/$*.spec sed -i "s/@BUILD_NUMBER@/$(BUILD_NUMBER)/" SPECS/$*.spec + sed -i "s/@PACKAGE_NAME@/$*/" SPECS/$*.spec rpmbuild -bb SPECS/$*.spec --define "_topdir `pwd`" --define "_tmppath `pwd`/tmp" ./sign RPMS/x86_64/$*-$($*_version)-$(BUILD_NUMBER).x86_64.rpm "$(gpg_key)" "`which gpg`" diff --git a/build/basecoin/DEBIAN/control b/build/basecoin/DEBIAN/control index 7d86a71b5..c5857eb5d 100644 --- a/build/basecoin/DEBIAN/control +++ b/build/basecoin/DEBIAN/control @@ -3,7 +3,7 @@ Section: net Priority: optional Maintainer: Greg Szabo Build-Depends: debhelper (>=9) -Depends: tendermint (>=0.10.0) +Depends: tendermint (>=0.11.0) Standards-Version: 3.9.6 Homepage: https://tendermint.com Package: basecoin diff --git a/build/basecoin/etc/systemd/system/basecoin-server.service b/build/basecoin/etc/systemd/system/basecoin-server.service index 62392d52a..aa8a93056 100644 --- a/build/basecoin/etc/systemd/system/basecoin-server.service +++ b/build/basecoin/etc/systemd/system/basecoin-server.service @@ -3,7 +3,8 @@ Description=Basecoin server Requires=network-online.target BindTo=basecoin.service PartOf=basecoin.service -After=network-online.target basecoin.service +Before=basecoin.service +After=network-online.target PropagatesReloadTo=basecoin.service ReloadPropagatedFrom=basecoin.service @@ -18,6 +19,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target basecoin.service +WantedBy=multi-user.target Also=basecoin.service diff --git a/build/basecoin/etc/systemd/system/basecoin.service b/build/basecoin/etc/systemd/system/basecoin.service index f806ef481..3b62e75bd 100644 --- a/build/basecoin/etc/systemd/system/basecoin.service +++ b/build/basecoin/etc/systemd/system/basecoin.service @@ -7,8 +7,7 @@ BindTo=basecoin-server.service #propagates stop and restart (one-way) PartOf=basecoin-server.service #order -Before=basecoin-server.service -After=network-online.target +After=network-online.target basecoin-server.service #propagates reload PropagatesReloadTo=basecoin-server.service ReloadPropagatedFrom=basecoin-server.service @@ -24,6 +23,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target basecoin-server.service Also=basecoin-server.service diff --git a/build/generate-spec b/build/generate-spec new file mode 100755 index 000000000..4ca60a1d4 --- /dev/null +++ b/build/generate-spec @@ -0,0 +1,36 @@ +#!/bin/bash + +if [ $# -ne 3 ]; then + echo "Usage: $0 " + exit 1 +fi + +app=$1 +src=$2 +dst=$3 + +# Find spectemplate +if [ ! -f "$src/$app.spec" ]; then + if [ ! -f "$src/app-template.spec" ]; then + echo "Source template not found." + exit 1 + else + srcfile="$src/app-template.spec" + fi +else + srcfile="$src/$app.spec" +fi + +# Copy spectemplate to SPECS +cp "$srcfile" "$dst/$app.spec" + +# Apply any variables defined in .data +if [ -f "$src/$app.data" ]; then + srcdata="$src/$app.data" + source "$srcdata" + for var in `grep -v -e ^# -e ^\s*$ "$srcdata" | grep = | sed 's/\s*=.*$//'` + do + sed -i "s\\@${var}@\\${!var}\\g" "$dst/$app.spec" + done +fi + diff --git a/build/spectemplates/gaia.spec b/build/spectemplates/app-template.spec similarity index 65% rename from build/spectemplates/gaia.spec rename to build/spectemplates/app-template.spec index a09e05cb7..8096deaa2 100644 --- a/build/spectemplates/gaia.spec +++ b/build/spectemplates/app-template.spec @@ -5,21 +5,23 @@ Release: @BUILD_NUMBER@ %define debug_package %{nil} %define __os_install_post %{nil} -Name: gaia -Summary: gaia - Tendermint Cosmos delegation game chain +Name: @PACKAGE_NAME@ +Summary: @PACKAGE_SUMMARY@ License: Apache 2.0 -URL: https://cosmos.network/ +URL: @PACKAGE_URL@ Packager: Greg Szabo -Requires: tendermint >= 0.10.0 -#Requires(pre): useradd +Requires: tendermint >= 0.11.0 +@PACKAGE_ADDITIONAL_HEADER@ %description -Gaia description comes later. +@PACKAGE_DESCRIPTION@ %pre if ! %{__grep} -q '^%{name}:' /etc/passwd ; then - useradd -k /dev/null -r -m -b %{_sysconfdir} %{name} + useradd -r -b %{_sysconfdir} %{name} + mkdir -p %{_sysconfdir}/%{name} chmod 755 %{_sysconfdir}/%{name} + chown %{name}.%{name} %{_sysconfdir}/%{name} fi %prep @@ -33,12 +35,9 @@ cd %{name}-%{version}-%{release} %{__cp} -a * %{buildroot} %post -sudo -Hu %{name} gaia init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 +sudo -Hu %{name} %{name} init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 #The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 -sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name}/tendermint -#The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 - -chmod 755 %{_sysconfdir}/%{name}/tendermint +sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name} #Temporary until https://github.com/tendermint/basecoin/issues/123 rm -f %{_sysconfdir}/%{name}/key.json @@ -55,7 +54,6 @@ systemctl daemon-reload %files %ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name} -%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint %{_bindir}/* %{_sysconfdir}/systemd/system/* %{_sysconfdir}/systemd/system-preset/* diff --git a/build/spectemplates/basecoin.data b/build/spectemplates/basecoin.data new file mode 100644 index 000000000..b74d64309 --- /dev/null +++ b/build/spectemplates/basecoin.data @@ -0,0 +1,5 @@ +PACKAGE_SUMMARY="basecoin is a Proof-of-Stake cryptocurrency and framework" +PACKAGE_URL="https://cosmos.network/" +PACKAGE_ADDITIONAL_HEADER="Provides: basecli" +PACKAGE_DESCRIPTION="Basecoin is an ABCI application designed to be used with the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency. It also provides a general purpose framework for extending the feature-set of the cryptocurrency by implementing plugins." + diff --git a/build/spectemplates/basecoin.spec b/build/spectemplates/basecoin.spec deleted file mode 100644 index 01321b767..000000000 --- a/build/spectemplates/basecoin.spec +++ /dev/null @@ -1,69 +0,0 @@ -Version: @VERSION@ -Release: @BUILD_NUMBER@ - -%define __spec_install_post %{nil} -%define debug_package %{nil} -%define __os_install_post %{nil} - -Name: basecoin -Summary: basecoin is a Proof-of-Stake cryptocurrency and framework -License: Apache 2.0 -URL: https://tendermint.com/ -Packager: Greg Szabo -Requires: tendermint >= 0.11.0 -Provides: basecli - -%description -Basecoin is an ABCI application designed to be used with the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency. It also provides a general purpose framework for extending the feature-set of the cryptocurrency by implementing plugins. - -%pre -if ! %{__grep} -q '^%{name}:' /etc/passwd ; then - echo "`date`: useradd -k /dev/null -r -m -b %{_sysconfdir} %{name}" >> /tmp/rpmdebug - set >> /tmp/rpmdebug - echo "---" >> /tmp/rpmdebug - useradd -k /dev/null -r -m -b %{_sysconfdir} %{name} - chmod 755 %{_sysconfdir}/%{name} -fi - -%prep -# Nothing to do here. - It is done in the Makefile. - -%build -# Nothing to do here. - -%install -cd %{name}-%{version}-%{release} -%{__cp} -a * %{buildroot} - -%post -sudo -Hu %{name} basecoin init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 -#The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 -sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name}/tendermint -#The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 - -chmod 755 %{_sysconfdir}/%{name}/tendermint - -#Temporary until https://github.com/tendermint/basecoin/issues/123 -rm -f %{_sysconfdir}/%{name}/key.json -rm -f %{_sysconfdir}/%{name}/key2.json - -systemctl daemon-reload - -%preun -systemctl stop %{name} 2> /dev/null || : -systemctl stop %{name}-service 2> /dev/null || : - -%postun -systemctl daemon-reload - -%files -%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name} -%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint -%{_bindir}/* -%{_sysconfdir}/systemd/system/* -%{_sysconfdir}/systemd/system-preset/* -%dir %{_datadir}/%{name} -%{_datadir}/%{name}/* -%dir %{_defaultlicensedir}/%{name} -%doc %{_defaultlicensedir}/%{name}/LICENSE - diff --git a/build/spectemplates/cosmos-sdk.data b/build/spectemplates/cosmos-sdk.data new file mode 100644 index 000000000..5b00998a0 --- /dev/null +++ b/build/spectemplates/cosmos-sdk.data @@ -0,0 +1,5 @@ +PACKAGE_SUMMARY="cosmos-sdk is a Proof-of-Stake framework" +PACKAGE_URL="https://cosmos.network/" +PACKAGE_ADDITIONAL_HEADER="Provides: basecoin basecli" +PACKAGE_DESCRIPTION="Cosmos-SDK is a general purpose framework for the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency." + diff --git a/build/spectemplates/cosmos-sdk.spec b/build/spectemplates/cosmos-sdk.spec deleted file mode 100644 index 56697c6f5..000000000 --- a/build/spectemplates/cosmos-sdk.spec +++ /dev/null @@ -1,67 +0,0 @@ -Version: @VERSION@ -Release: @BUILD_NUMBER@ - -%define __spec_install_post %{nil} -%define debug_package %{nil} -%define __os_install_post %{nil} - -Name: cosmos-sdk -Summary: cosmos-sdk is a Proof-of-Stake framework -License: Apache 2.0 -URL: https://cosmos.network/ -Packager: Greg Szabo -Requires: tendermint >= 0.10.0 -Provides: basecoin basecli -#Requires(pre): useradd - -%description -Cosmos-SDK is a general purpose framework for the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency. - -%pre -if ! %{__grep} -q '^%{name}:' /etc/passwd ; then - useradd -k /dev/null -r -m -b %{_sysconfdir} %{name} - chmod 755 %{_sysconfdir}/%{name} -fi - -%prep -# Nothing to do here. - It is done in the Makefile. - -%build -# Nothing to do here. - -%install -cd %{name}-%{version}-%{release} -%{__cp} -a * %{buildroot} - -%post -sudo -Hu %{name} basecoin init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 -#The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 -sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name}/tendermint -#The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 - -chmod 755 %{_sysconfdir}/%{name}/tendermint - -#Temporary until https://github.com/tendermint/basecoin/issues/123 -rm -f %{_sysconfdir}/%{name}/key.json -rm -f %{_sysconfdir}/%{name}/key2.json - -systemctl daemon-reload - -%preun -systemctl stop %{name} 2> /dev/null || : -systemctl stop %{name}-service 2> /dev/null || : - -%postun -systemctl daemon-reload - -%files -%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name} -%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint -%{_bindir}/* -%{_sysconfdir}/systemd/system/* -%{_sysconfdir}/systemd/system-preset/* -%dir %{_datadir}/%{name} -%{_datadir}/%{name}/* -%dir %{_defaultlicensedir}/%{name} -%doc %{_defaultlicensedir}/%{name}/LICENSE - diff --git a/build/spectemplates/ethermint.data b/build/spectemplates/ethermint.data new file mode 100644 index 000000000..b736c0bb8 --- /dev/null +++ b/build/spectemplates/ethermint.data @@ -0,0 +1,5 @@ +PACKAGE_SUMMARY="ethermint enables ethereum as an ABCI application on tendermint and the COSMOS hub" +PACKAGE_URL="https://tendermint.com/" +PACKAGE_ADDITIONAL_HEADER="Provides: basecli" +PACKAGE_DESCRIPTION="Ethermint enables ethereum to run as an ABCI application on tendermint and the COSMOS hub. This application allows you to get all the benefits of ethereum without having to run your own miners." + diff --git a/build/spectemplates/ethermint.spec b/build/spectemplates/ethermint.spec index 72fbe2b4b..96da8cf6a 100644 --- a/build/spectemplates/ethermint.spec +++ b/build/spectemplates/ethermint.spec @@ -5,21 +5,23 @@ Release: @BUILD_NUMBER@ %define debug_package %{nil} %define __os_install_post %{nil} -Name: ethermint -Summary: ethermint enables ethereum as an ABCI application on tendermint and the COSMOS hub +Name: @PACKAGE_NAME@ +Summary: @PACKAGE_SUMMARY@ License: Apache 2.0 -URL: https://tendermint.com/ +URL: @PACKAGE_URL@ Packager: Greg Szabo -Requires: tendermint >= 0.10.0 -#Requires(pre): useradd +Requires: tendermint >= 0.11.0 +@PACKAGE_ADDITIONAL_HEADER@ %description -Ethermint enables ethereum to run as an ABCI application on tendermint and the COSMOS hub. This application allows you to get all the benefits of ethereum without having to run your own miners. +@PACKAGE_DESCRIPTION@ %pre if ! %{__grep} -q '^%{name}:' /etc/passwd ; then - useradd -k /dev/null -r -m -b %{_sysconfdir} %{name} + useradd -r -b %{_sysconfdir} %{name} + mkdir -p %{_sysconfdir}/%{name} chmod 755 %{_sysconfdir}/%{name} + chown %{name}.%{name} %{_sysconfdir}/%{name} fi %prep @@ -33,10 +35,9 @@ cd %{name}-%{version}-%{release} %{__cp} -a * %{buildroot} %post -sudo -Hu %{name} %{_bindir}/%{name} --datadir %{_sysconfdir}/%{name} init %{_sysconfdir}/%{name}/genesis.json -sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name}/tendermint - -chmod 755 %{_sysconfdir}/%{name}/tendermint +sudo -Hu %{name} %{name} --datadir %{_sysconfdir}/%{name} init %{_sysconfdir}/%{name}/genesis.json +#The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 +sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name} systemctl daemon-reload @@ -52,7 +53,6 @@ systemctl daemon-reload %config(noreplace) %attr(0644, %{name}, %{name}) %{_sysconfdir}/%{name}/genesis.json %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/keystore %attr(0644, %{name}, %{name}) %{_sysconfdir}/%{name}/keystore/* -%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint %{_bindir}/* %{_sysconfdir}/systemd/system/* %{_sysconfdir}/systemd/system-preset/* diff --git a/build/spectemplates/gaia.data b/build/spectemplates/gaia.data new file mode 100644 index 000000000..7152b1b51 --- /dev/null +++ b/build/spectemplates/gaia.data @@ -0,0 +1,5 @@ +PACKAGE_SUMMARY="gaia - Tendermint Cosmos delegation game chain" +PACKAGE_URL="https://cosmos.network/" +PACKAGE_ADDITIONAL_HEADER="" +PACKAGE_DESCRIPTION="Gaia description comes later." + diff --git a/build/spectemplates/trackomatron.data b/build/spectemplates/trackomatron.data new file mode 100644 index 000000000..daaad64b3 --- /dev/null +++ b/build/spectemplates/trackomatron.data @@ -0,0 +1,5 @@ +PACKAGE_SUMMARY="Trackomatron - Track invoices on the blockchain" +PACKAGE_URL="https://tendermint.com/" +PACKAGE_ADDITIONAL_HEADER="" +PACKAGE_DESCRIPTION="This software is intended to create a space to easily send invoices between and within institutions. Firstly, the commands of trackmatron are separated into two broad categories: submitting information to the blockchain (transactions), and retrieving information from the blockchain (query)." + diff --git a/build/spectemplates/trackomatron.spec b/build/spectemplates/trackomatron.spec index 5034658ea..4d924805c 100644 --- a/build/spectemplates/trackomatron.spec +++ b/build/spectemplates/trackomatron.spec @@ -5,21 +5,23 @@ Release: @BUILD_NUMBER@ %define debug_package %{nil} %define __os_install_post %{nil} -Name: trackomatron -Summary: Trackomatron - Track invoices on the blockchain +Name: @PACKAGE_NAME@ +Summary: @PACKAGE_SUMMARY@ License: Apache 2.0 -URL: https://tendermint.com/ +URL: @PACKAGE_URL@ Packager: Greg Szabo -Requires: tendermint >= 0.10.0 -#Requires(pre): useradd +Requires: tendermint >= 0.11.0 +@PACKAGE_ADDITIONAL_HEADER@ %description -This software is intended to create a space to easily send invoices between and within institutions. Firstly, the commands of trackmatron are separated into two broad categories: submitting information to the blockchain (transactions), and retrieving information from the blockchain (query). +@PACKAGE_DESCRIPTION@ %pre if ! %{__grep} -q '^%{name}:' /etc/passwd ; then - useradd -k /dev/null -r -m -b %{_sysconfdir} %{name} + useradd -r -b %{_sysconfdir} %{name} + mkdir -p %{_sysconfdir}/%{name} chmod 755 %{_sysconfdir}/%{name} + chown %{name}.%{name} %{_sysconfdir}/%{name} fi %prep @@ -35,10 +37,7 @@ cd %{name}-%{version}-%{release} %post sudo -Hu %{name} tracko init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 #The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 -sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name}/tendermint -#The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 - -chmod 755 %{_sysconfdir}/%{name}/tendermint +sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name} #Temporary until https://github.com/tendermint/basecoin/issues/123 rm -f %{_sysconfdir}/%{name}/key.json @@ -55,7 +54,6 @@ systemctl daemon-reload %files %ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name} -%ghost %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint %{_bindir}/* %{_sysconfdir}/systemd/system/* %{_sysconfdir}/systemd/system-preset/* From e105b10fc8330402819a9b86aada36dcbb51092a Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 4 Oct 2017 00:54:02 -0400 Subject: [PATCH 33/46] Version parsing fix --- build/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/Makefile b/build/Makefile index ef5873681..9b2be51ee 100644 --- a/build/Makefile +++ b/build/Makefile @@ -2,7 +2,7 @@ # Extra checks, because we do not use autoconf. Set extra_check to false if it is bothering you. ## -extra_check = true +extra_check = false go_min_version = 1.8.3 gpg_key = 2122CBE9 @@ -105,7 +105,7 @@ build-basecoin: git-branch # set app_version version-%: $(GOPATH)/bin/% if [ -z "$(BUILD_NUMBER)" ]; then echo "BUILD_NUMBER not set" ; false ; fi - $(eval $*_version=$(shell $< version | cut -d- -f1 )) + $(eval $*_version=$(shell $< version | cut -d- -f1 | sed 's/^v//' )) # set build_folder folder-%: version-% From a0d21cef7de38d03cb15e38470c83a2df73aa976 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 4 Oct 2017 02:32:19 -0400 Subject: [PATCH 34/46] Switched service startup dependencies, removed old basecoin build --- build/Makefile | 28 +++++++++---------- build/cosmos-sdk/DEBIAN/control | 2 +- .../systemd/system/cosmos-sdk-server.service | 2 +- .../etc/systemd/system/cosmos-sdk.service | 2 +- build/ethermint/DEBIAN/control | 2 +- .../systemd/system/ethermint-server.service | 3 +- .../etc/systemd/system/ethermint.service | 5 ++-- build/gaia/DEBIAN/control | 2 +- .../etc/systemd/system/gaia-server.service | 5 ++-- build/gaia/etc/systemd/system/gaia.service | 5 ++-- build/trackomatron/DEBIAN/control | 2 +- .../system/trackomatron-server.service | 5 ++-- .../etc/systemd/system/trackomatron.service | 5 ++-- 13 files changed, 33 insertions(+), 35 deletions(-) diff --git a/build/Makefile b/build/Makefile index 9b2be51ee..d8fb05175 100644 --- a/build/Makefile +++ b/build/Makefile @@ -32,12 +32,12 @@ endif # Here comes the real deal ### -binaries = tendermint basecoin ethermint trackomatron gaia basecoin-old -build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia build-basecoin-old -package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia package-rpm-basecoin-old -install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia package-rpm-basecoin-old -package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia package-deb-basecoin-old -install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia install-deb-basecoin-old +binaries = tendermint basecoin ethermint trackomatron gaia +build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia +package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia +install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia +package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia +install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia all: $(binaries) build: $(build-binaries) @@ -60,13 +60,12 @@ build-tendermint: git-branch cp $(GOPATH)/src/github.com/tendermint/tendermint/build/tendermint $(GOPATH)/bin @echo "*** Built tendermint" -build-basecoin-old: git-branch - @echo "*** Building basecoin-old" - go get -d -u github.com/tendermint/basecoin/cmd/basecoin - cd $(GOPATH)/src/github.com/tendermint/basecoin && git checkout "$(GIT_BRANCH)" && git pull - $(MAKE) -C $(GOPATH)/src/github.com/tendermint/basecoin get_vendor_deps install - @echo "Workaround: basecoin-old does not have a binary that gives the basecoin-old version number." && rm -rf $(GOPATH)/bin/basecoin-old && ln -s $(GOPATH)/bin/basecoin $(GOPATH)/bin/basecoin-old - @echo "*** Built basecoin" +#build-basecoin: git-branch +# @echo "*** Building basecoin-old" +# go get -d -u github.com/tendermint/basecoin/cmd/basecoin +# cd $(GOPATH)/src/github.com/tendermint/basecoin && git checkout "$(GIT_BRANCH)" && git pull +# $(MAKE) -C $(GOPATH)/src/github.com/tendermint/basecoin get_vendor_deps install +# @echo "*** Built basecoin" build-ethermint: git-branch @echo "*** Building ethermint" @@ -119,13 +118,12 @@ prepare-files = rm -rf $(build_folder) && mkdir -p $(build_folder) && cp -r ./$( ## prepare-tendermint = -prepare-basecoin-old = rm -f $(build_folder)/usr/bin/basecoin-old && cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(build_folder)/usr/bin prepare-ethermint = mkdir -p $(build_folder)/etc/ethermint && \ cp $(GOPATH)/src/github.com/tendermint/ethermint/setup/genesis.json $(build_folder)/etc/ethermint/genesis.json && \ cp -r $(GOPATH)/src/github.com/tendermint/ethermint/setup/keystore $(build_folder)/etc/ethermint prepare-trackomatron = rm -f $(build_folder)/usr/bin/trackomatron && cp $(GOPATH)/bin/tracko $(GOPATH)/bin/trackocli $(build_folder)/usr/bin prepare-gaia = -prepare-basecoin = rm -f $(build_folder)/usr/bin/basecoin-old && cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(GOPATH)/bin/baseserver $(GOPATH)/bin/counter $(GOPATH)/bin/countercli $(GOPATH)/bin/eyes $(GOPATH)/bin/eyescli $(build_folder)/usr/bin +prepare-basecoin = cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(GOPATH)/bin/baseserver $(GOPATH)/bin/counter $(GOPATH)/bin/countercli $(GOPATH)/bin/eyes $(GOPATH)/bin/eyescli $(build_folder)/usr/bin ### # Package the binary for CentOS/RedHat (RPM) and Debian/Ubuntu (DEB) diff --git a/build/cosmos-sdk/DEBIAN/control b/build/cosmos-sdk/DEBIAN/control index 588e61fa2..bf4e0229a 100644 --- a/build/cosmos-sdk/DEBIAN/control +++ b/build/cosmos-sdk/DEBIAN/control @@ -3,7 +3,7 @@ Section: net Priority: optional Maintainer: Greg Szabo Build-Depends: debhelper (>=9) -Depends: tendermint (>=0.10.0) +Depends: tendermint (>=0.11.0) Standards-Version: 3.9.6 Homepage: https://tendermint.com Package: cosmos-sdk diff --git a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service index bbda97350..cd83ce6e2 100644 --- a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service +++ b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service @@ -18,6 +18,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target cosmos-sdk.service +WantedBy=multi-user.target Also=cosmos-sdk.service diff --git a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service index 2091e5592..9d142195e 100644 --- a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service +++ b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk.service @@ -24,6 +24,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target cosmos-sdk-server.service Also=cosmos-sdk-server.service diff --git a/build/ethermint/DEBIAN/control b/build/ethermint/DEBIAN/control index 0904eb4e8..2d8b3b002 100644 --- a/build/ethermint/DEBIAN/control +++ b/build/ethermint/DEBIAN/control @@ -3,7 +3,7 @@ Section: net Priority: optional Maintainer: Greg Szabo Build-Depends: debhelper (>=9) -Depends: tendermint (>=0.10.0) +Depends: tendermint (>=0.11.0) Standards-Version: 3.9.6 Homepage: https://tendermint.com Package: ethermint diff --git a/build/ethermint/etc/systemd/system/ethermint-server.service b/build/ethermint/etc/systemd/system/ethermint-server.service index 78b277e6d..c091cfd11 100644 --- a/build/ethermint/etc/systemd/system/ethermint-server.service +++ b/build/ethermint/etc/systemd/system/ethermint-server.service @@ -3,7 +3,8 @@ Description=Ethermint server Requires=network-online.target BindTo=ethermint.service PartOf=ethermint.service -After=network-online.target ethermint.service +Before=ethermint.service +After=network-online.target PropagatesReloadTo=ethermint.service ReloadPropagatedFrom=ethermint.service diff --git a/build/ethermint/etc/systemd/system/ethermint.service b/build/ethermint/etc/systemd/system/ethermint.service index 2fa46d4d8..ad03103ab 100644 --- a/build/ethermint/etc/systemd/system/ethermint.service +++ b/build/ethermint/etc/systemd/system/ethermint.service @@ -7,8 +7,7 @@ BindTo=ethermint-server.service #propagates stop and restart (one-way) PartOf=ethermint-server.service #order -Before=ethermint-server.service -After=network-online.target +After=network-online.target ethermint-server.service #propagates reload PropagatesReloadTo=ethermint-server.service ReloadPropagatedFrom=ethermint-server.service @@ -23,6 +22,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target ethermint-server.service Also=ethermint-server.service diff --git a/build/gaia/DEBIAN/control b/build/gaia/DEBIAN/control index 8b51d285b..521a7cdba 100644 --- a/build/gaia/DEBIAN/control +++ b/build/gaia/DEBIAN/control @@ -3,7 +3,7 @@ Section: net Priority: optional Maintainer: Greg Szabo Build-Depends: debhelper (>=9) -Depends: tendermint (>=0.10.0) +Depends: tendermint (>=0.11.0) Standards-Version: 3.9.6 Homepage: https://cosmos.network Package: gaia diff --git a/build/gaia/etc/systemd/system/gaia-server.service b/build/gaia/etc/systemd/system/gaia-server.service index 821070de6..59c2fa286 100644 --- a/build/gaia/etc/systemd/system/gaia-server.service +++ b/build/gaia/etc/systemd/system/gaia-server.service @@ -3,7 +3,8 @@ Description=Gaia server Requires=network-online.target BindTo=gaia.service PartOf=gaia.service -After=network-online.target gaia.service +Before=gaia.service +After=network-online.target PropagatesReloadTo=gaia.service ReloadPropagatedFrom=gaia.service @@ -18,6 +19,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target gaia.service +WantedBy=multi-user.target Also=gaia.service diff --git a/build/gaia/etc/systemd/system/gaia.service b/build/gaia/etc/systemd/system/gaia.service index 1e4b2778f..2a8b3195e 100644 --- a/build/gaia/etc/systemd/system/gaia.service +++ b/build/gaia/etc/systemd/system/gaia.service @@ -7,8 +7,7 @@ BindTo=gaia-server.service #propagates stop and restart (one-way) PartOf=gaia-server.service #order -Before=gaia-server.service -After=network-online.target +After=network-online.target gaia-server.service #propagates reload PropagatesReloadTo=gaia-server.service ReloadPropagatedFrom=gaia-server.service @@ -23,6 +22,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target gaia-server.service Also=gaia-server.service diff --git a/build/trackomatron/DEBIAN/control b/build/trackomatron/DEBIAN/control index 72e6f9145..a71d02ace 100644 --- a/build/trackomatron/DEBIAN/control +++ b/build/trackomatron/DEBIAN/control @@ -3,7 +3,7 @@ Section: net Priority: optional Maintainer: Greg Szabo Build-Depends: debhelper (>=9) -Depends: tendermint (>=0.10.0) +Depends: tendermint (>=0.11.0) Standards-Version: 3.9.6 Homepage: https://tendermint.com Package: trackomatron diff --git a/build/trackomatron/etc/systemd/system/trackomatron-server.service b/build/trackomatron/etc/systemd/system/trackomatron-server.service index 097789a0e..86184f42b 100644 --- a/build/trackomatron/etc/systemd/system/trackomatron-server.service +++ b/build/trackomatron/etc/systemd/system/trackomatron-server.service @@ -3,7 +3,8 @@ Description=Trackomatron server Requires=network-online.target BindTo=trackomatron.service PartOf=trackomatron.service -After=network-online.target trackomatron.service +Before=trackomatron.service +After=network-online.target PropagatesReloadTo=trackomatron.service ReloadPropagatedFrom=trackomatron.service @@ -18,6 +19,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target trackomatron.service +WantedBy=multi-user.target Also=trackomatron.service diff --git a/build/trackomatron/etc/systemd/system/trackomatron.service b/build/trackomatron/etc/systemd/system/trackomatron.service index 796e99772..2ebcae4a9 100644 --- a/build/trackomatron/etc/systemd/system/trackomatron.service +++ b/build/trackomatron/etc/systemd/system/trackomatron.service @@ -7,8 +7,7 @@ BindTo=trackomatron-server.service #propagates stop and restart (one-way) PartOf=trackomatron-server.service #order -Before=trackomatron-server.service -After=network-online.target +After=network-online.target trackomatron-server.service #propagates reload PropagatesReloadTo=trackomatron-server.service ReloadPropagatedFrom=trackomatron-server.service @@ -23,6 +22,6 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target trackomatron-server.service Also=trackomatron-server.service From 28e9a0addd237be8dd68ffe26b43e8e69fd45d83 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 4 Oct 2017 02:51:37 -0400 Subject: [PATCH 35/46] Merged config of application and tendermint --- ansible/roles/config/defaults/main.yml | 5 +- ansible/roles/config/tasks/main.yml | 38 +++++--------- ansible/roles/config/templates/config.toml.j2 | 50 +++++++++++++------ .../roles/config/templates/genesis.json.j2 | 46 +++++++++++++++++ ansible/roles/generic-service/tasks/main.yml | 5 +- 5 files changed, 95 insertions(+), 49 deletions(-) create mode 100644 ansible/roles/config/templates/genesis.json.j2 diff --git a/ansible/roles/config/defaults/main.yml b/ansible/roles/config/defaults/main.yml index 34a5ab120..4b9281a5e 100644 --- a/ansible/roles/config/defaults/main.yml +++ b/ansible/roles/config/defaults/main.yml @@ -1,7 +1,6 @@ --- -#tendermint_genesis_file: "" -#service_genesis_file: "" -app_options_file: "app_options_files/dev_money" +#genesis_file: "" +app_options_file: "app_options_files/public_testnet" seeds: "" testnet_name: testnet1 validators: true diff --git a/ansible/roles/config/tasks/main.yml b/ansible/roles/config/tasks/main.yml index bb2c0d0a4..38dcfd13f 100644 --- a/ansible/roles/config/tasks/main.yml +++ b/ansible/roles/config/tasks/main.yml @@ -2,49 +2,37 @@ - name: gather tendermint public keys when: (validators == true or validators == 'true') and tendermint_genesis_file is not defined - command: "/usr/bin/tendermint show_validator --home /etc/{{service}}/tendermint --log_level error" + command: "/usr/bin/tendermint show_validator --home /etc/{{service}} --log_level error" register: pubkeys changed_when: false - name: resetting permissions from root after gathering public keys - file: "path=/etc/{{service}}/tendermint owner={{service}} group={{service}} recurse=yes" + file: "path=/etc/{{service}} owner={{service}} group={{service}} recurse=yes" - name: register tendermint public keys as host facts when: (validators == true or validators == 'true') and tendermint_genesis_file is not defined set_fact: "pubkey='{{pubkeys.stdout}}'" connection: local -- name: copy generated tendermint genesis.json - genesis_time will be updated - when: (validators == true or validators == 'true') and tendermint_genesis_file is not defined - template: - src: genesis-server.json.j2 - dest: "/etc/{{service}}/tendermint/genesis.json" - owner: "{{service}}" - group: "{{service}}" - -- name: copy generated service genesis.json - genesis_time will be updated - tags: reconfig-appgenesis - when: (validators == true or validators == 'true') and (service_genesis_file is not defined) and (service != 'ethermint') +- name: copy generated genesis.json - genesis_time will be updated + when: (validators == true or validators == 'true') and (genesis_file is not defined) + tags: reconfig-genesis template: - src: genesis-service.json.j2 + src: genesis.json.j2 dest: "/etc/{{service}}/genesis.json" owner: "{{service}}" group: "{{service}}" -- name: copy pre-created tendermint genesis.json - when: tendermint_genesis_file is defined - copy: "src={{tendermint_genesis_file}} dest=/etc/{{service}}/tendermint/genesis.json owner={{service}} group={{service}}" - -- name: copy pre-created service genesis.json - when: service_genesis_file is defined - copy: "src={{service_genesis_file}} dest=/etc/{{service}}/genesis.json owner={{service}} group={{service}}" +- name: copy pre-created genesis.json + when: genesis_file is defined + copy: "src={{genesis_file}} dest=/etc/{{service}}/genesis.json owner={{service}} group={{service}}" - name: copy tendermint config.toml tags: reconfig-toml when: validators == true or validators == 'true' template: src: config.toml.j2 - dest: "/etc/{{service}}/tendermint/config.toml" + dest: "/etc/{{service}}/config.toml" owner: "{{service}}" group: "{{service}}" @@ -53,14 +41,12 @@ get_url: "url={{item['src']}} dest={{item['dst']}} force=yes" with_items: - { src: "https://raw.githubusercontent.com/tendermint/testnets/master/{{validator_network}}/{{service}}/genesis.json" , dst: "/etc/{{service}}/genesis.json" } - - { src: "https://raw.githubusercontent.com/tendermint/testnets/master/{{validator_network}}/tendermint/genesis.json" , dst: "/etc/{{service}}/tendermint/genesis.json" } - - { src: "https://raw.githubusercontent.com/tendermint/testnets/master/{{validator_network}}/tendermint/config.toml" , dst: "/etc/{{service}}/tendermint/config.toml" } + - { src: "https://raw.githubusercontent.com/tendermint/testnets/master/{{validator_network}}/config.toml" , dst: "/etc/{{service}}/config.toml" } - name: Set validator network files permissions for non-validators when: validators == false or validators == 'false' file: "path={{item}} owner={{service}} group={{service}}" with_items: - "/etc/{{service}}/genesis.json" - - "/etc/{{service}}/tendermint/genesis.json" - - "/etc/{{service}}/tendermint/config.toml" + - "/etc/{{service}}/config.toml" diff --git a/ansible/roles/config/templates/config.toml.j2 b/ansible/roles/config/templates/config.toml.j2 index 273bc51a9..361381378 100644 --- a/ansible/roles/config/templates/config.toml.j2 +++ b/ansible/roles/config/templates/config.toml.j2 @@ -4,33 +4,51 @@ proxy_app = "tcp://127.0.0.1:46658" moniker = "{{inventory_hostname}}" fast_sync = true +{% if service == 'tendermint' %} + +db_backend = "memdb" +log_level = "mempool:error,*:debug" + +{% else %} + db_backend = "leveldb" -#db_backend = "memdb" -#log_level = "mempool:error,*:debug" log_level = "state:info,*:error" +{% endif %} + [rpc] laddr = "tcp://0.0.0.0:46657" -#[mempool] -#recheck = false -#broadcast = false -#wal_dir = "" +{% if service == 'tendermint' %} + +[mempool] +recheck = false +broadcast = false +wal_dir = "" [consensus] -#max_block_size_txs = 10000 -#create_empty_blocks = false -#timeout_propose = 10000 -#skip_timeout_commit = true -#timeout_commit = 1 -#wal_light = true -#block_part_size = 262144 +max_block_size_txs = 10000 +create_empty_blocks = false +timeout_propose = 10000 +skip_timeout_commit = true +timeout_commit = 1 +wal_light = true +block_part_size = 262144 create_empty_blocks_interval = 1 +{% else %} + +[consensus] +create_empty_blocks_interval = 1 + +{% endif %} + [p2p] -#max_msg_packet_payload_size=65536 -#send_rate=51200000 # 50 MB/s -#recv_rate=51200000 # 50 MB/s +{% if service == 'tendermint' %} +max_msg_packet_payload_size=65536 +send_rate=51200000 # 50 MB/s +recv_rate=51200000 # 50 MB/s +{% endif %} laddr = "tcp://0.0.0.0:46656" {% if validators == true or validators == 'true' %} {% set comma = joiner(",") %}seeds = "{% for host in ((groups[testnet_name]|default([]))+(groups['tag_Environment_'~(testnet_name|regex_replace('-','_'))]|default([])))|difference(inventory_hostname) %}{{ comma() }}{{hostvars[host]["inventory_hostname"]}}:46656{% endfor %}" diff --git a/ansible/roles/config/templates/genesis.json.j2 b/ansible/roles/config/templates/genesis.json.j2 new file mode 100644 index 000000000..e2f956ebb --- /dev/null +++ b/ansible/roles/config/templates/genesis.json.j2 @@ -0,0 +1,46 @@ +{ + "genesis_time":"{{ansible_date_time.iso8601}}", + "chain_id":"{{testnet_name}}", + "validators": + [ +{% if (validators == true) or (validators == 'true') %} +{% set comma = joiner(",") %} +{% for host in (groups[testnet_name]|default([]))+(groups['tag_Environment_'~(testnet_name|regex_replace('-','_'))]|default([])) %} + {{ comma() }} + { + "pub_key": { + "data": "{{hostvars[host]["pubkey"]["data"]}}", + "type": "{{hostvars[host]["pubkey"]["type"]}}" + }, + "power":10, + "name":"{{hostvars[host]["inventory_hostname"]}}" + } +{% endfor %} +{% endif %} + ], + "app_hash":"", + "app_options": { +{% if app_options_file is defined %} +{% include app_options_file %} +{% endif %} + } +{% if service == 'ethermint' %} + , + "config": { + "chainId": 15, + "homesteadBlock": 0, + "eip155Block": 0, + "eip158Block": 0 + }, + "nonce": "0xdeadbeefdeadbeef", + "timestamp": "0x00", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x40", + "gasLimit": "0x8000000", + "alloc": { + "0x7eff122b94897ea5b0e2a9abf47b86337fafebdc": { "balance": "10000000000000000000000000000000000" }, + "0xc6713982649D9284ff56c32655a9ECcCDA78422A": { "balance": "10000000000000000000000000000000000" } + } +{% endif %} +} diff --git a/ansible/roles/generic-service/tasks/main.yml b/ansible/roles/generic-service/tasks/main.yml index d7a2e015f..e66ee7eaa 100644 --- a/ansible/roles/generic-service/tasks/main.yml +++ b/ansible/roles/generic-service/tasks/main.yml @@ -15,11 +15,8 @@ - name: Reload systemd services systemd: "name={{service}} daemon_reload=yes enabled=no" -- name: Create tendermint directory - file: "path=/etc/{{service}}/tendermint state=directory mode=0755 owner={{service}} group={{service}}" - - name: Initialize tendermint - command: "/usr/bin/tendermint init --home /etc/{{service}}/tendermint" + command: "/usr/bin/tendermint init --home /etc/{{service}}" become: yes become_user: "{{service}}" From 9a971d8a199663cc6abc8cc1e8bab0d63568930d Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 4 Oct 2017 02:53:28 -0400 Subject: [PATCH 36/46] Changed merged config parameters on package builds --- build/basecoin/etc/systemd/system/basecoin-server.service | 2 +- build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service | 2 +- build/ethermint/etc/systemd/system/ethermint-server.service | 2 +- build/gaia/etc/systemd/system/gaia-server.service | 2 +- .../trackomatron/etc/systemd/system/trackomatron-server.service | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build/basecoin/etc/systemd/system/basecoin-server.service b/build/basecoin/etc/systemd/system/basecoin-server.service index aa8a93056..5bf269498 100644 --- a/build/basecoin/etc/systemd/system/basecoin-server.service +++ b/build/basecoin/etc/systemd/system/basecoin-server.service @@ -9,7 +9,7 @@ PropagatesReloadTo=basecoin.service ReloadPropagatedFrom=basecoin.service [Service] -Environment="TMHOME=/etc/basecoin/tendermint" +Environment="TMHOME=/etc/basecoin" Restart=on-failure User=basecoin Group=basecoin diff --git a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service index cd83ce6e2..d1d929ba6 100644 --- a/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service +++ b/build/cosmos-sdk/etc/systemd/system/cosmos-sdk-server.service @@ -8,7 +8,7 @@ PropagatesReloadTo=cosmos-sdk.service ReloadPropagatedFrom=cosmos-sdk.service [Service] -Environment="TMHOME=/etc/cosmos-sdk/tendermint" +Environment="TMHOME=/etc/cosmos-sdk" Restart=on-failure User=cosmos-sdk Group=cosmos-sdk diff --git a/build/ethermint/etc/systemd/system/ethermint-server.service b/build/ethermint/etc/systemd/system/ethermint-server.service index c091cfd11..4cbd8adcf 100644 --- a/build/ethermint/etc/systemd/system/ethermint-server.service +++ b/build/ethermint/etc/systemd/system/ethermint-server.service @@ -9,7 +9,7 @@ PropagatesReloadTo=ethermint.service ReloadPropagatedFrom=ethermint.service [Service] -Environment="TMHOME=/etc/ethermint/tendermint" +Environment="TMHOME=/etc/ethermint" Restart=on-failure User=ethermint Group=ethermint diff --git a/build/gaia/etc/systemd/system/gaia-server.service b/build/gaia/etc/systemd/system/gaia-server.service index 59c2fa286..ef0f65cab 100644 --- a/build/gaia/etc/systemd/system/gaia-server.service +++ b/build/gaia/etc/systemd/system/gaia-server.service @@ -9,7 +9,7 @@ PropagatesReloadTo=gaia.service ReloadPropagatedFrom=gaia.service [Service] -Environment="TMHOME=/etc/gaia/tendermint" +Environment="TMHOME=/etc/gaia" Restart=on-failure User=gaia Group=gaia diff --git a/build/trackomatron/etc/systemd/system/trackomatron-server.service b/build/trackomatron/etc/systemd/system/trackomatron-server.service index 86184f42b..cb7ef8768 100644 --- a/build/trackomatron/etc/systemd/system/trackomatron-server.service +++ b/build/trackomatron/etc/systemd/system/trackomatron-server.service @@ -9,7 +9,7 @@ PropagatesReloadTo=trackomatron.service ReloadPropagatedFrom=trackomatron.service [Service] -Environment="TMHOME=/etc/trackomatron/tendermint" +Environment="TMHOME=/etc/trackomatron" Restart=on-failure User=trackomatron Group=trackomatron From 7e6df2fce41f2e7b0078462d29d7a9a9d81a97f9 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 4 Oct 2017 14:00:24 -0400 Subject: [PATCH 37/46] Added more accounts --- ansible/app_options_files/public_testnet | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ansible/app_options_files/public_testnet b/ansible/app_options_files/public_testnet index 38bf40652..e1f05ff12 100644 --- a/ansible/app_options_files/public_testnet +++ b/ansible/app_options_files/public_testnet @@ -162,5 +162,34 @@ "amount": 1000 } ] + }, + { + "name": "wancloud", + "address": "117FE408E1F74C453901BCB638F996964FD29CBB", + "coins": [ + { + "denom": "buckyball", + "amount": 53712836452781 + }, + { + "denom": "wancloudcoin", + "amount": 1000 + } + ] + }, + { + "name": "bianjie", + "address": "F63F2D34C03430A54B7F6A43C886B4A83F366B84", + "coins": [ + { + "denom": "buckyball", + "amount": 53712836452781 + }, + { + "denom": "bianjiecoin", + "amount": 1000 + } + ] } + ] From 7e81a899195c91291d38779f8bbd0fdfddf2280b Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 4 Oct 2017 17:47:44 -0400 Subject: [PATCH 38/46] Minor feaure addition --- ansible/roles/config/tasks/main.yml | 5 +++++ ansible/roles/install/tasks/main.yml | 3 +++ 2 files changed, 8 insertions(+) diff --git a/ansible/roles/config/tasks/main.yml b/ansible/roles/config/tasks/main.yml index 38dcfd13f..8fa90583f 100644 --- a/ansible/roles/config/tasks/main.yml +++ b/ansible/roles/config/tasks/main.yml @@ -2,15 +2,18 @@ - name: gather tendermint public keys when: (validators == true or validators == 'true') and tendermint_genesis_file is not defined + tags: reconfig-toml,reconfig-genesis command: "/usr/bin/tendermint show_validator --home /etc/{{service}} --log_level error" register: pubkeys changed_when: false - name: resetting permissions from root after gathering public keys + tags: reconfig-toml,reconfig-genesis file: "path=/etc/{{service}} owner={{service}} group={{service}} recurse=yes" - name: register tendermint public keys as host facts when: (validators == true or validators == 'true') and tendermint_genesis_file is not defined + tags: reconfig-toml,reconfig-genesis set_fact: "pubkey='{{pubkeys.stdout}}'" connection: local @@ -38,6 +41,7 @@ - name: Copy validator network files for non-validators when: validators == false or validators == 'false' + tags: reconfig-toml,reconfig-genesis get_url: "url={{item['src']}} dest={{item['dst']}} force=yes" with_items: - { src: "https://raw.githubusercontent.com/tendermint/testnets/master/{{validator_network}}/{{service}}/genesis.json" , dst: "/etc/{{service}}/genesis.json" } @@ -45,6 +49,7 @@ - name: Set validator network files permissions for non-validators when: validators == false or validators == 'false' + tags: reconfig-toml,reconfig-genesis file: "path={{item}} owner={{service}} group={{service}}" with_items: - "/etc/{{service}}/genesis.json" diff --git a/ansible/roles/install/tasks/main.yml b/ansible/roles/install/tasks/main.yml index b9261382a..410468adb 100644 --- a/ansible/roles/install/tasks/main.yml +++ b/ansible/roles/install/tasks/main.yml @@ -13,6 +13,9 @@ - name: Restart journald service: name=systemd-journald state=restarted +#TODO include is deprecated in Ansible 2.4.0 and will be removed in 2.8.0 +#Replace it with include_tasks + - include: debian.yml when: ansible_os_family == "Debian" From 12baa7c1c5ebe0750101c7e6d0dc0628e73c991e Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 4 Oct 2017 23:10:30 -0400 Subject: [PATCH 39/46] Package fixes --- build/spectemplates/app-template.spec | 3 +-- build/spectemplates/ethermint.spec | 3 +-- build/spectemplates/trackomatron.spec | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/build/spectemplates/app-template.spec b/build/spectemplates/app-template.spec index 8096deaa2..ad937d029 100644 --- a/build/spectemplates/app-template.spec +++ b/build/spectemplates/app-template.spec @@ -35,9 +35,8 @@ cd %{name}-%{version}-%{release} %{__cp} -a * %{buildroot} %post -sudo -Hu %{name} %{name} init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 -#The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name} +sudo -Hu %{name} %{name} init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 #Temporary until https://github.com/tendermint/basecoin/issues/123 rm -f %{_sysconfdir}/%{name}/key.json diff --git a/build/spectemplates/ethermint.spec b/build/spectemplates/ethermint.spec index 96da8cf6a..fc443e35b 100644 --- a/build/spectemplates/ethermint.spec +++ b/build/spectemplates/ethermint.spec @@ -35,9 +35,8 @@ cd %{name}-%{version}-%{release} %{__cp} -a * %{buildroot} %post -sudo -Hu %{name} %{name} --datadir %{_sysconfdir}/%{name} init %{_sysconfdir}/%{name}/genesis.json -#The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name} +sudo -Hu %{name} %{name} --datadir %{_sysconfdir}/%{name} init %{_sysconfdir}/%{name}/genesis.json systemctl daemon-reload diff --git a/build/spectemplates/trackomatron.spec b/build/spectemplates/trackomatron.spec index 4d924805c..1c952411e 100644 --- a/build/spectemplates/trackomatron.spec +++ b/build/spectemplates/trackomatron.spec @@ -35,9 +35,8 @@ cd %{name}-%{version}-%{release} %{__cp} -a * %{buildroot} %post -sudo -Hu %{name} tracko init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 -#The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name} +sudo -Hu %{name} tracko init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 #Temporary until https://github.com/tendermint/basecoin/issues/123 rm -f %{_sysconfdir}/%{name}/key.json From 697b71ee8d8796097f55000c066e4126e67d2436 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Wed, 4 Oct 2017 23:37:46 -0400 Subject: [PATCH 40/46] Merged config dir fixes --- ansible/roles/getconfigtoml/tasks/main.yml | 2 +- ansible/roles/tomlconfig/defaults/main.yml | 2 +- ansible/roles/unsafe_reset/tasks/main.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ansible/roles/getconfigtoml/tasks/main.yml b/ansible/roles/getconfigtoml/tasks/main.yml index 08f23e4d8..d0495f103 100644 --- a/ansible/roles/getconfigtoml/tasks/main.yml +++ b/ansible/roles/getconfigtoml/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Get config.toml from node - fetch: "dest={{ destination | default('.') }}/config.toml flat=yes src=/etc/{{service}}/tendermint/config.toml" + fetch: "dest={{ destination | default('.') }}/config.toml flat=yes src=/etc/{{service}}/config.toml" run_once: yes diff --git a/ansible/roles/tomlconfig/defaults/main.yml b/ansible/roles/tomlconfig/defaults/main.yml index 236d6eb80..2bb8c2927 100644 --- a/ansible/roles/tomlconfig/defaults/main.yml +++ b/ansible/roles/tomlconfig/defaults/main.yml @@ -1,3 +1,3 @@ --- -destination: /etc/{{service}}/tendermint/config.toml +destination: /etc/{{service}}/config.toml diff --git a/ansible/roles/unsafe_reset/tasks/main.yml b/ansible/roles/unsafe_reset/tasks/main.yml index 57f55b1c3..e6f21da68 100644 --- a/ansible/roles/unsafe_reset/tasks/main.yml +++ b/ansible/roles/unsafe_reset/tasks/main.yml @@ -6,7 +6,7 @@ when: "service == 'basecoin'" become_user: basecoin -- shell: "export TMHOME=/etc/{{service}}/tendermint ; tendermint unsafe_reset_all" +- shell: "export TMHOME=/etc/{{service}} ; tendermint unsafe_reset_all" become_user: "{{service}}" - file: "path=/etc/{{service}}/data state=absent" From 728ac86ab1eeaa7a574fcf4475b1a8f73a5b5e4a Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Thu, 5 Oct 2017 09:51:45 -0400 Subject: [PATCH 41/46] Added version check fix for build process --- build/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Makefile b/build/Makefile index d8fb05175..eb2487149 100644 --- a/build/Makefile +++ b/build/Makefile @@ -104,7 +104,7 @@ build-basecoin: git-branch # set app_version version-%: $(GOPATH)/bin/% if [ -z "$(BUILD_NUMBER)" ]; then echo "BUILD_NUMBER not set" ; false ; fi - $(eval $*_version=$(shell $< version | cut -d- -f1 | sed 's/^v//' )) + $(eval $*_version=$(shell $< version | head -1 | cut -d- -f1 | sed 's/^\(ethermint:\s*\|\)\(v\|\)//' )) # set build_folder folder-%: version-% From 621b67e145b8f263df12f2f1fa786d41c78caed9 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Thu, 5 Oct 2017 10:22:54 -0400 Subject: [PATCH 42/46] Organized public testnet play coins --- ansible/app_options_files/public_testnet | 43 +++++++++++------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/ansible/app_options_files/public_testnet b/ansible/app_options_files/public_testnet index e1f05ff12..a2ba7dd6b 100644 --- a/ansible/app_options_files/public_testnet +++ b/ansible/app_options_files/public_testnet @@ -22,9 +22,12 @@ }, "coins": [ { - "denom": "mycoin", + "denom": "buckyball", "amount": 9007199254740991 - } + }, + { + "denom": "gregcoin", + "amount": 1000 ] }, { @@ -36,12 +39,12 @@ }, "coins": [ { - "denom": "anton", + "denom": "buckyball", "amount": 9007199254740992 }, { - "denom": "tank", - "amount": 99 + "denom": "antoncoin", + "amount": 1000 } ] }, @@ -50,12 +53,12 @@ "address": "0FA1DB09E8B174E81E94280C047C158D4271457B", "coins": [ { - "denom": "axi", + "denom": "buckyball", "amount": 1928936473812 }, { - "denom": "bear", - "amount": 42 + "denom": "adriancoin", + "amount": 1000 } ] }, @@ -72,16 +75,8 @@ "amount": 20000000000 }, { - "denom": "bumblebee", - "amount": 100 - }, - { - "denom": "french", - "amount": 10 - }, - { - "denom": "frey", - "amount": 4838271727204 + "denom": "buckycoin", + "amount": 1000 } ] }, @@ -94,11 +89,11 @@ }, "coins": [ { - "denom": "radio", - "amount": 50 + "denom": "rigelcoin", + "amount": 1000 }, { - "denom": "tv", + "denom": "buckyball", "amount": 3478765434568 } ] @@ -112,12 +107,12 @@ }, "coins": [ { - "denom": "shadow", + "denom": "buckyball", "amount": 53712836452781 }, { - "denom": "unit", - "amount": 1 + "denom": "shadowcoin", + "amount": 1000 } ] }, From 2c2164c0ca1c00aef8382ed88126e0ddefd12fd8 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Thu, 5 Oct 2017 10:53:15 -0400 Subject: [PATCH 43/46] public_testnet accounts file typo fix --- ansible/app_options_files/public_testnet | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/app_options_files/public_testnet b/ansible/app_options_files/public_testnet index a2ba7dd6b..1b9bddc0c 100644 --- a/ansible/app_options_files/public_testnet +++ b/ansible/app_options_files/public_testnet @@ -28,6 +28,7 @@ { "denom": "gregcoin", "amount": 1000 + } ] }, { From 4dfe77416abc786247dcb06f5b7cf3635503c804 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Thu, 5 Oct 2017 15:25:51 -0400 Subject: [PATCH 44/46] MAkefile fixes and debug info, gaia dependency fix --- build/Makefile | 8 ++++++-- build/spectemplates/gaia.data | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/build/Makefile b/build/Makefile index eb2487149..4db22bd57 100644 --- a/build/Makefile +++ b/build/Makefile @@ -2,7 +2,7 @@ # Extra checks, because we do not use autoconf. Set extra_check to false if it is bothering you. ## -extra_check = false +extra_check = true go_min_version = 1.8.3 gpg_key = 2122CBE9 @@ -78,7 +78,9 @@ build-ethermint: git-branch build-trackomatron: git-branch @echo "*** Building trackomatron" go get -d -u go github.com/tendermint/trackomatron/cmd/tracko + echo "Debug1: $(GIT_BRANCH)" cd $(GOPATH)/src/github.com/tendermint/trackomatron && git checkout "$(GIT_BRANCH)" && git pull + echo "Debug2: $(GO_PATH)" $(MAKE) -C $(GOPATH)/src/github.com/tendermint/trackomatron get_vendor_deps install @echo "Workaround: trackomatron package has tracko as the binary - trackomatron needed for proper packaging" && rm -rf $(GOPATH)/bin/trackomatron && ln -s $(GOPATH)/bin/tracko $(GOPATH)/bin/trackomatron @echo "*** Built trackomatron" @@ -122,7 +124,7 @@ prepare-ethermint = mkdir -p $(build_folder)/etc/ethermint && \ cp $(GOPATH)/src/github.com/tendermint/ethermint/setup/genesis.json $(build_folder)/etc/ethermint/genesis.json && \ cp -r $(GOPATH)/src/github.com/tendermint/ethermint/setup/keystore $(build_folder)/etc/ethermint prepare-trackomatron = rm -f $(build_folder)/usr/bin/trackomatron && cp $(GOPATH)/bin/tracko $(GOPATH)/bin/trackocli $(build_folder)/usr/bin -prepare-gaia = +prepare-gaia = cp $(GOPATH)/bin/gaiacli $(build_folder)/usr/bin prepare-basecoin = cp $(GOPATH)/bin/basecli $(GOPATH)/bin/basecoin $(GOPATH)/bin/baseserver $(GOPATH)/bin/counter $(GOPATH)/bin/countercli $(GOPATH)/bin/eyes $(GOPATH)/bin/eyescli $(build_folder)/usr/bin ### @@ -289,6 +291,8 @@ distclean: clean rm -rf $(GOPATH)/bin/basecoin rm -rf $(GOPATH)/bin/basecli rm -rf $(GOPATH)/bin/ethermint + rm -rf $(GOPATH)/bin/gaia + rm -rf $(GOPATH)/bin/gaiacli rm -rf $(GOPATH)/bin/tracko rm -rf $(GOPATH)/bin/trackocli diff --git a/build/spectemplates/gaia.data b/build/spectemplates/gaia.data index 7152b1b51..dad756e47 100644 --- a/build/spectemplates/gaia.data +++ b/build/spectemplates/gaia.data @@ -1,5 +1,5 @@ PACKAGE_SUMMARY="gaia - Tendermint Cosmos delegation game chain" PACKAGE_URL="https://cosmos.network/" -PACKAGE_ADDITIONAL_HEADER="" +PACKAGE_ADDITIONAL_HEADER="Provides: gaiacli" PACKAGE_DESCRIPTION="Gaia description comes later." From 38f321f843098631a25b6bd4ae5ca6ea34346dde Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Thu, 5 Oct 2017 15:28:07 -0400 Subject: [PATCH 45/46] Makefile typo fix --- build/Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build/Makefile b/build/Makefile index 4db22bd57..ca44de525 100644 --- a/build/Makefile +++ b/build/Makefile @@ -77,10 +77,8 @@ build-ethermint: git-branch build-trackomatron: git-branch @echo "*** Building trackomatron" - go get -d -u go github.com/tendermint/trackomatron/cmd/tracko - echo "Debug1: $(GIT_BRANCH)" + go get -d -u github.com/tendermint/trackomatron/cmd/tracko cd $(GOPATH)/src/github.com/tendermint/trackomatron && git checkout "$(GIT_BRANCH)" && git pull - echo "Debug2: $(GO_PATH)" $(MAKE) -C $(GOPATH)/src/github.com/tendermint/trackomatron get_vendor_deps install @echo "Workaround: trackomatron package has tracko as the binary - trackomatron needed for proper packaging" && rm -rf $(GOPATH)/bin/trackomatron && ln -s $(GOPATH)/bin/tracko $(GOPATH)/bin/trackomatron @echo "*** Built trackomatron" From 28c248f74741599328fbfc05fa85d57b86772b2e Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Thu, 5 Oct 2017 20:34:40 -0400 Subject: [PATCH 46/46] plugin options added for genesis --- ansible/app_options_files/dev_money | 5 ++++- ansible/app_options_files/public_testnet | 3 +++ ansible/app_options_files/relay | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ansible/app_options_files/dev_money b/ansible/app_options_files/dev_money index 2b204dc1d..ff0b6958d 100644 --- a/ansible/app_options_files/dev_money +++ b/ansible/app_options_files/dev_money @@ -9,5 +9,8 @@ "amount": 9007199254740992 } ] - }] + }], + "plugin_options": [ + "coin/issuer", {"app": "sigs", "addr": "1B1BE55F969F54064628A63B9559E7C21C925165"} + ] diff --git a/ansible/app_options_files/public_testnet b/ansible/app_options_files/public_testnet index 1b9bddc0c..66f3dddf1 100644 --- a/ansible/app_options_files/public_testnet +++ b/ansible/app_options_files/public_testnet @@ -188,4 +188,7 @@ ] } + ], + "plugin_options": [ + "coin/issuer", {"app": "sigs", "addr": "B01C264BFE9CBD45458256E613A6F07061A3A6B6"} ] diff --git a/ansible/app_options_files/relay b/ansible/app_options_files/relay index d7322adce..65ddf0c11 100644 --- a/ansible/app_options_files/relay +++ b/ansible/app_options_files/relay @@ -13,4 +13,8 @@ } ] } + ], + "plugin_options": [ + "coin/issuer", {"app": "sigs", "addr": "1B1BE55F969F54064628A63B9559E7C21C925165"} ] +