docs: cosmovisor docs clean-up (#9364)
* cosmovisor docs clean-up * add cosmovisor docs on auto-download to cosmovisor README
This commit is contained in:
parent
b36664df4a
commit
c6306ab6d4
|
@ -80,6 +80,52 @@ for those who wish to sync a fullnode from start.
|
||||||
The `DAEMON` specific code and operations (e.g. tendermint config, the application db, syncing blocks, etc) are performed as normal.
|
The `DAEMON` specific code and operations (e.g. tendermint config, the application db, syncing blocks, etc) are performed as normal.
|
||||||
Application binaries' directives such as command-line flags and environment variables work normally.
|
Application binaries' directives such as command-line flags and environment variables work normally.
|
||||||
|
|
||||||
|
## Auto-Download
|
||||||
|
|
||||||
|
Generally, the system requires that the system administrator place all relevant binaries
|
||||||
|
on the disk before the upgrade happens. However, for people who don't need such
|
||||||
|
control and want an easier setup (maybe they are syncing a non-validating fullnode
|
||||||
|
and want to do little maintenance), there is another option.
|
||||||
|
|
||||||
|
If you set `DAEMON_ALLOW_DOWNLOAD_BINARIES=on` then when an upgrade is triggered and no local binary
|
||||||
|
can be found, the `cosmovisor` will attempt to download and install the binary itself.
|
||||||
|
The plan stored in the upgrade module has an info field for arbitrary json.
|
||||||
|
This info is expected to be outputed on the halt log message. There are two
|
||||||
|
valid format to specify a download in such a message:
|
||||||
|
|
||||||
|
1. Store an os/architecture -> binary URI map in the upgrade plan info field
|
||||||
|
as JSON under the `"binaries"` key, eg:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"binaries": {
|
||||||
|
"linux/amd64":"https://example.com/gaia.zip?checksum=sha256:aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
2. Store a link to a file that contains all information in the above format (eg. if you want
|
||||||
|
to specify lots of binaries, changelog info, etc without filling up the blockchain).
|
||||||
|
|
||||||
|
e.g. `https://example.com/testnet-1001-info.json?checksum=sha256:deaaa99fda9407c4dbe1d04bd49bab0cc3c1dd76fa392cd55a9425be074af01e`
|
||||||
|
|
||||||
|
This file contained in the link will be retrieved by [go-getter](https://github.com/hashicorp/go-getter)
|
||||||
|
and the `"binaries"` field will be parsed as above.
|
||||||
|
|
||||||
|
If there is no local binary, `DAEMON_ALLOW_DOWNLOAD_BINARIES=on`, and we can access a canonical url for the new binary,
|
||||||
|
then the `cosmovisor` will download it with [go-getter](https://github.com/hashicorp/go-getter) and
|
||||||
|
unpack it into the `upgrades/<name>` folder to be run as if we installed it manually.
|
||||||
|
|
||||||
|
Note that for this mechanism to provide strong security guarantees, all URLS should include a
|
||||||
|
sha{256,512} checksum. This ensures that no false binary is run, even if someone hacks the server
|
||||||
|
or hijacks the DNS. go-getter will always ensure the downloaded file matches the checksum if it
|
||||||
|
is provided. go-getter will also handle unpacking archives into directories (so these download links should be
|
||||||
|
a zip of all data in the `bin` directory).
|
||||||
|
|
||||||
|
To properly create a checksum on linux, you can use the `sha256sum` utility. e.g.
|
||||||
|
`sha256sum ./testdata/repo/zip_directory/autod.zip`
|
||||||
|
which should return `29139e1381b8177aec909fab9a75d11381cab5adf7d3af0c05ff1c9c117743a7`.
|
||||||
|
You can also use `sha512sum` if you like longer hashes, or `md5sum` if you like to use broken hashes.
|
||||||
|
Make sure to set the hash algorithm properly in the checksum argument to the url.
|
||||||
|
|
||||||
## Example: simd
|
## Example: simd
|
||||||
|
|
||||||
The following instructions provide a demonstration of `cosmovisor`'s integration with the `simd` application
|
The following instructions provide a demonstration of `cosmovisor`'s integration with the `simd` application
|
||||||
|
|
|
@ -105,22 +105,22 @@ as JSON under the `"binaries"` key, eg:
|
||||||
2. Store a link to a file that contains all information in the above format (eg. if you want
|
2. Store a link to a file that contains all information in the above format (eg. if you want
|
||||||
to specify lots of binaries, changelog info, etc without filling up the blockchain).
|
to specify lots of binaries, changelog info, etc without filling up the blockchain).
|
||||||
|
|
||||||
e.g `https://example.com/testnet-1001-info.json?checksum=sha256:deaaa99fda9407c4dbe1d04bd49bab0cc3c1dd76fa392cd55a9425be074af01e`
|
e.g. `https://example.com/testnet-1001-info.json?checksum=sha256:deaaa99fda9407c4dbe1d04bd49bab0cc3c1dd76fa392cd55a9425be074af01e`
|
||||||
|
|
||||||
This file contained in link will be retrieved by [go-getter](https://github.com/hashicorp/go-getter)
|
This file contained in the link will be retrieved by [go-getter](https://github.com/hashicorp/go-getter)
|
||||||
and the "binaries" field will be parsed as above.
|
and the `"binaries"` field will be parsed as above.
|
||||||
|
|
||||||
If there is no local binary, `DAEMON_ALLOW_DOWNLOAD_BINARIES=on`, and we can access a canonical url for the new binary,
|
If there is no local binary, `DAEMON_ALLOW_DOWNLOAD_BINARIES=on`, and we can access a canonical url for the new binary,
|
||||||
then the `cosmovisor` will download it with [go-getter](https://github.com/hashicorp/go-getter) and
|
then the `cosmovisor` will download it with [go-getter](https://github.com/hashicorp/go-getter) and
|
||||||
unpack it into the `upgrades/<name>` folder to be run as if we installed it manually
|
unpack it into the `upgrades/<name>` folder to be run as if we installed it manually.
|
||||||
|
|
||||||
Note that for this mechanism to provide strong security guarantees, all URLS should include a
|
Note that for this mechanism to provide strong security guarantees, all URLS should include a
|
||||||
sha{256,512} checksum. This ensures that no false binary is run, even if someone hacks the server
|
sha{256,512} checksum. This ensures that no false binary is run, even if someone hacks the server
|
||||||
or hijacks the dns. go-getter will always ensure the downloaded file matches the checksum if it
|
or hijacks the DNS. go-getter will always ensure the downloaded file matches the checksum if it
|
||||||
is provided. And also handles unpacking archives into directories (so these download links should be
|
is provided. go-getter will also handle unpacking archives into directories (so these download links should be
|
||||||
a zip of all data in the bin directory).
|
a zip of all data in the `bin` directory).
|
||||||
|
|
||||||
To properly create a checksum on linux, you can use the `sha256sum` utility. eg.
|
To properly create a checksum on linux, you can use the `sha256sum` utility. e.g.
|
||||||
`sha256sum ./testdata/repo/zip_directory/autod.zip`
|
`sha256sum ./testdata/repo/zip_directory/autod.zip`
|
||||||
which should return `29139e1381b8177aec909fab9a75d11381cab5adf7d3af0c05ff1c9c117743a7`.
|
which should return `29139e1381b8177aec909fab9a75d11381cab5adf7d3af0c05ff1c9c117743a7`.
|
||||||
You can also use `sha512sum` if you like longer hashes, or `md5sum` if you like to use broken hashes.
|
You can also use `sha512sum` if you like longer hashes, or `md5sum` if you like to use broken hashes.
|
||||||
|
|
Loading…
Reference in New Issue