diff --git a/.gitignore b/.gitignore index e975a07..f9f7507 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,8 @@ roles/main_infra/files/terraform.tfvars group_vars/* !group_vars/all.yml.example +!group_vars/blockscout.yml.example +!group_vars/infrastructure.yml.example *.retry *.temp *.swp diff --git a/README.md b/README.md index 8b983f1..dc81219 100644 --- a/README.md +++ b/README.md @@ -68,26 +68,6 @@ The single point of configuration in this script is a `group_vars/all.yml` file. - `backend` variable defines whether deployer should keep state files remote or locally. Set `backend` variable to `true` if you want to save state file to the remote S3 bucket; - `upload_config_to_s3` - set to `true` if you want to upload config`all.yml` file to the S3 bucket automatically during deployment. Will not work if `backend` is set to false; - `bucket` represents a globally unique name of the bucket where your configs and state will be stored. It will be created automatically during the deployment; -- `elixir_version` - is an Elixir version used in BlockScout release; - -- `chains` - maps chains to the URLs of HTTP RPC endpoints, an ordinary blockchain node can be used; - -*Note*: a chain name shouldn't be more than 5 characters. Otherwise, it causing the error, because the aws load balancer name should not be greater than 32 characters. - -- `chain_trace_endpoint` - maps chains to the URLs of HTTP RPC endpoints, which represents a node where state pruning is disabled (archive node) and tracing is enabled. If you don't have a trace endpoint, you can simply copy values from `chains` variable; -- `chain_ws_endpoint` - maps chains to the URLs of HTTP RPCs that supports websockets. This is required to get the real-time updates. Can be the same as `chains` if websocket is enabled there (but make sure to use`ws(s)` instead of `htpp(s)` protocol); -- `chain_jsonrpc_variant` - a client used to connect to the network. Can be `parity`, `geth`, etc; -- `chain_logo` - maps chains to the it logos. Place your own logo at `apps/block_scout_web/assets/static` and specify a relative path at `chain_logo` variable; -- `chain_coin` - a name of the coin used in each particular chain; -- `chain_network` - usually, a name of the organization keeping group of networks, but can represent a name of any logical network grouping you want; -- `chain_subnetwork` - a name of the network to be shown at BlockScout; -- `chain_network_path` - a relative URL path which will be used as an endpoint for defined chain. For example, if we will have our BlockScout at `blockscout.com` domain and place `core` network at `/poa/core`, then the resulting endpoint will be `blockscout.com/poa/core` for this network. -- `chain_network_icon` - maps the chain name to the network navigation icon at apps/block_scout_web/lib/block_scout_web/templates/icons without .eex extension -- `chain_graphiql_transaction` - is a variable that maps chain to a random transaction hash on that chain. This hash will be used to provide a sample query in the GraphIQL Playground. -- `chain_block_transformer` - will be `clique` for clique networks like Rinkeby and Goerli, and `base` for the rest; -- `chain_heart_beat_timeout`, `chain_heart_command` - configs for the integrated heartbeat. First describes a timeout after the command described at the second variable will be executed; -- Each of the `chain_db_*` variables configures the database for each chain. Each chain will have the separate RDS instance. -- `chain_blockscout_version` - is a text at the footer of BlockScout instance. Usually represents the current BlockScout version. ## Infrastructure related variables @@ -111,6 +91,25 @@ The single point of configuration in this script is a `group_vars/all.yml` file. - The `pool_size` defines the number of connections allowed by the RDS instance; - `secret_key_base` is a random password used for BlockScout internally. It is highly recommended to gernerate your own `secret_key_base` before the deployment. For instance, you can do it via `openssl rand -base64 64 | tr -d '\n'` command; - `new_relic_app_name` and `new_relic_license_key` should usually stay empty unless you want and know how to configure New Relic integration; +- `elixir_version` - is an Elixir version used in BlockScout release; +- `chains` - maps chains to the URLs of HTTP RPC endpoints, an ordinary blockchain node can be used; + +*Note*: a chain name shouldn't be more than 5 characters. Otherwise, it causing the error, because the aws load balancer name should not be greater than 32 characters. + +- `chain_trace_endpoint` - maps chains to the URLs of HTTP RPC endpoints, which represents a node where state pruning is disabled (archive node) and tracing is enabled. If you don't have a trace endpoint, you can simply copy values from `chains` variable; +- `chain_ws_endpoint` - maps chains to the URLs of HTTP RPCs that supports websockets. This is required to get the real-time updates. Can be the same as `chains` if websocket is enabled there (but make sure to use`ws(s)` instead of `htpp(s)` protocol); +- `chain_jsonrpc_variant` - a client used to connect to the network. Can be `parity`, `geth`, etc; +- `chain_logo` - maps chains to the it logos. Place your own logo at `apps/block_scout_web/assets/static` and specify a relative path at `chain_logo` variable; +- `chain_coin` - a name of the coin used in each particular chain; +- `chain_network` - usually, a name of the organization keeping group of networks, but can represent a name of any logical network grouping you want; +- `chain_subnetwork` - a name of the network to be shown at BlockScout; +- `chain_network_path` - a relative URL path which will be used as an endpoint for defined chain. For example, if we will have our BlockScout at `blockscout.com` domain and place `core` network at `/poa/core`, then the resulting endpoint will be `blockscout.com/poa/core` for this network. +- `chain_network_icon` - maps the chain name to the network navigation icon at apps/block_scout_web/lib/block_scout_web/templates/icons without .eex extension +- `chain_graphiql_transaction` - is a variable that maps chain to a random transaction hash on that chain. This hash will be used to provide a sample query in the GraphIQL Playground. +- `chain_block_transformer` - will be `clique` for clique networks like Rinkeby and Goerli, and `base` for the rest; +- `chain_heart_beat_timeout`, `chain_heart_command` - configs for the integrated heartbeat. First describes a timeout after the command described at the second variable will be executed; +- Each of the `chain_db_*` variables configures the database for each chain. Each chain will have the separate RDS instance. +- `chain_blockscout_version` - is a text at the footer of BlockScout instance. Usually represents the current BlockScout version. ## Blockscout related variables @@ -119,7 +118,7 @@ The single point of configuration in this script is a `group_vars/all.yml` file. - Specify the `chain_merge_commit` variable if you want to merge any of the specified `chains` with the commit in the other branch. Usually may be used to update production branches with the releases from master branch; - `skip_fetch` - if this variable is set to `true` , BlockScout repo will not be cloned and the process will start from building the dependencies. Use this variable to prevent playbooks from overriding manual changes in cloned repo; - `ps_*` variables represents a connection details to the test Postgres database. This one will not be installed automatically, so make sure `ps_*` credentials are valid before starting the deployment; -- `chain_custom_environment` - is a set of additional environment variables mapped with chains that needs to be set during the test deployment. +- `chain_custom_environment` - is a map of variables that should be overrided when deploying the new version of Blockscout. Can be omitted. *Note*: `chain_custom_environment` variables will not be propagated to the Parameter Store at production servers and need to be set there manually. @@ -142,26 +141,36 @@ The configuration variable `db_storage` can be used to define the amount of stor 2. Create the AWS access key and secret access key for user with [sufficient permissions](#AWS); -3. Set the appropriate [infrastructure](#Infrastructure-related-variables) and [common](#Common-variables) variables as described at the [corresponding part of instruction](#Configuration); +3. Merge `infrastructure` and `all` config template files into single config file: +```bash +cat group_vars/infrastructure.yml.example group_vars/all.yml.example > group_vars/all.yml +``` -4. Run `ansible-playbook deploy_infra.yml`; +4. Set the variables at `group_vars/all.yml` config template file as described at the [corresponding part of instruction](#Configuration); + +5. Run `ansible-playbook deploy_infra.yml`; - During the deployment the ["diffs didn't match"](#error-applying-plan-diffs-didnt-match) error may occur, it will be ignored automatically. If Ansible play recap shows 0 failed plays, then the deployment was successful despite the error. - Optionally, you may want to check the variables the were uploaded to the [Parameter Store](https://console.aws.amazon.com/systems-manager/parameters) at AWS Console. -5. Proceed to the [next part of instruction](#Deploying-Blockscout). +6. Proceed to the [next part of instruction](#Deploying-Blockscout). # Deploying BlockScout 1. Ensure all the [BlockScout prerequisites](#Prerequisites-for-deploying-blockscout) are installed and has the right version number; -2. Set the all the variables as described at the [corresponding part of instruction](#Configuration); -3. Run `ansible-playbook deploy_software.yml`; -4. When the prompt appears, check that server is running and there is no visual artifacts. The server will be launched at port 4000 at the same machine where you run the Ansible playbooks. If you face any errors you can either fix it or cancel the deployment by pressing **Ctrl+C** and then pressing **A** when additionally prompted. -5. When server is ready to be deployed simply press enter and deployer will upload Blockscout to the appropriate S3. -6. After that another prompt will ask you to confirm your will to deploy the BlockScout. Type **yes** or **true** to confirm the deployment. +2. Merge `blockscout` and `all` config template files into single config file: +```bash +cat group_vars/blockscout.yml.example group_vars/all.yml.example > group_vars/all.yml +``` +3. Set the variables at `group_vars/all.yml` config template file as described at the [corresponding part of instruction](#Configuration); +**Note!** Use `chain_custom_environment` to update the variables in each deployment. Map each deployed chain with variables as they should appear at the Parameter Store. Check the example at `group_vars/blockscout.yml.example` config file. +4. Run `ansible-playbook deploy_software.yml`; +5. When the prompt appears, check that server is running and there is no visual artifacts. The server will be launched at port 4000 at the same machine where you run the Ansible playbooks. If you face any errors you can either fix it or cancel the deployment by pressing **Ctrl+C** and then pressing **A** when additionally prompted. +6. When server is ready to be deployed simply press enter and deployer will upload Blockscout to the appropriate S3. +7. After that another prompt will ask you to confirm your will to deploy the BlockScout. Type **yes** or **true** to confirm the deployment. - Deployment will update most of the Parameter Store variables except **DB**, **EXQ** and **New Relic** ones. Those you will have to update manually **before** the deployment -7. Monitor and manage your deployment at [CodeDeploy](https://console.aws.amazon.com/codesuite/codedeploy/applications) service page at AWS Console. +8. Monitor and manage your deployment at [CodeDeploy](https://console.aws.amazon.com/codesuite/codedeploy/applications) service page at AWS Console. # Destroying Provisioned Infrastructure diff --git a/group_vars/all.yml.example b/group_vars/all.yml.example index bc2de43..4f91a48 100644 --- a/group_vars/all.yml.example +++ b/group_vars/all.yml.example @@ -11,208 +11,4 @@ upload_config_to_s3: true ## The bucket and dynamodb_table variables will be used only when backend variable is set to true ## Name of the bucket where TF state files will be stored -bucket: "poa-terraform-state" - -# Network related variables - -## This variable represents network RPC endpoint: -chains: - core: "http://10.10.10.10:8545" - sokol: "https://192.168.0.1:8545" - -## This variable represents network RPC endpoint in trace mode. Can be the same as the previous variable: -chain_trace_endpoint: - core: "http://10.10.10.11:8545" - sokol: "http://192.168.0.1:8546" - -## This variable represents network RPC endpoint in websocket mode: -chain_ws_endpoint: - core: "ws://10.10.10.10/ws" - sokol: "ws://192.168.0.1/ws" - -## Next variable represents the client that is used to connect to the chain. -chain_jsonrpc_variant: - core: "parity" - sokol: "geth" - -## Place your own logo at apps/block_scout_web/assets/static folder of blockscout repo and specify a relative path here -chain_logo: - core: "/images/core.svg" - sokol: "/images/sokol.svg" - -## The following variables represents a name of the coin that will be shown at blockchain explorer -chain_coin: - core: "POA" - sokol: "POA" - -## Next variable usually represents the name of the organization/community that hosts the chain -chain_network: - core: "POA Network" - sokol: "POA Network" - -## Next variable represents the actual name of the particular network -chain_subnetwork: - core: "POA Core Network" - sokol: "POA Sokol test network" - -## The next variable represent a relative URL path which will be used as an endpoint for defined chain. For example, if we will have our blockscout at blockscout.com domain and place "core" network at "/poa/core", then the resulting endpoint will be blockscout.com/poa/core for this network. -chain_network_path: - core: "/poa/core" - sokol: "/poa/sokol" - -## The following variable maps the chain name to the network navigation icon at apps/block_scout_web/lib/block_scout_web/templates/icons without .eex extension -chain_network_icon: - core: "_test_network_icon.html" - sokol: "_test_network_icon.html" - -## The following variable maps the chain names to random transaction hash on that chain. "chain_graphiql_transaction" is a variable that takes a transaction hash from a network to provide a sample query in the GraphIQL Playground. -chain_graphiql_transaction: - core: "0xbc426b4792c48d8ca31ec9786e403866e14e7f3e4d39c7f2852e518fae529ab4" - sokol: "0xbc426b4792c48d8ca31ec9786e403866e14e7f3e4d39c7f2852e518fae529ab5" - -## A variable required in indexer configuration files. Can be either base or clique. Usually you don't want to change this value unless you know what are you doing. -chain_block_transformer: - core: "base" - sokol: "base" - -## Heartbeat is an Erlang monitoring service that will restart BlockScout if it becomes unresponsive. The following two variables configures the timeout before Blockscout will be restarted and command to restart. Usually you don't want to change these values. -chain_heart_beat_timeout: - core: 30 - sokol: 30 - -chain_heart_command: - core: "systemctl restart explorer.service" - sokol: "systemctl restart explorer.service" - -## This value describes a version of Blockscout that will be shown at the footer. You can write any text there you want to see at the footer. -chain_blockscout_version: - core: "v1.3.7-beta" - sokol: "v1.3.7-beta" - -## This value represents the name of the DB that will be created/attached. Must be unique. Will be prefixed with `prefix` variable. -chain_db_id: - core: "core" - sokol: "sokol" - -## Each network should have it's own DB. This variable maps chain to DB name. Should not be messed with db_id variable, which represents the RDS instance ID. -chain_db_name: - core: "core" - sokol: "sokol" - -## The following variables describes the DB configurations for each network including usernames, password, instance class, etc. -chain_db_username: - core: "core" - sokol: "sokol" - -chain_db_password: - core: "fkowfjpoi309021" - sokol: "kopsdOPpa9213K" - -chain_db_instance_class: - core: "db.m4.xlarge" - sokol: "db.m4.large" - -## Size of storage in GiB. -chain_db_storage: - core: "200" - sokol: "100" - -## Type of disk to be used for the DB. -chain_db_storage_type: - core: "io1" - sokol: "gp2" - -## This should be set only if chain_db_storage is set to io1 -#chain_db_iops: -# core: "1000" -# sokol: "1500" - -## Blockscout uses Postgres as the DB engine. This variable describes the Postgres version used in each particular chain. -chain_db_version: - core: "10.5" - sokol: "10.6" - -## The following variable represents the elixir version that will be used to run BlockScout instance. Will be used to download the Elixir at the following link: https://github.com/elixir-lang/elixir/releases/download/{{ elixir_version }}/Precompiled.zip -elixir_version: "v1.7.4" - -# Infrastructure related variables - -## Name of the DynamoDB table where current lease of TF state file will be stored -dynamodb_table: "poa-terraform-lock" - -## If ec2_ssh_key_content is empty all the virtual machines will be created with ec2_ssh_key_name key. Otherwise, playbooks will upload ec2_ssh_key_content with the name of ec2_ssh_key_name and launch virtual machines with that key -ec2_ssh_key_name: "sokol-test" -ec2_ssh_key_content: "" - -## EC2 Instance will have the following size: -instance_type: "m5.large" - -## VPC containing Blockscout resources will be created as following: -vpc_cidr: "10.0.0.0/16" -public_subnet_cidr: "10.0.0.0/24" -# This variable should be interpreted as following: -# Variable: 10.0.1.0/16 -# Real networks: 10.0.1+{{ number of chain starting with 0 }}.0/24 -db_subnet_cidr: "10.0.1.0/16" - -## Internal DNS zone will looks like: -dns_zone_name: "poa.internal" - -## All resources will be prefixed with this one -prefix: "sokol" - -## The following settngs are related to SSL of Application Load Balancer that will be deployed to AWS. If use_ssl is set to false, alb_* variables can be omitted -use_ssl: "false" -alb_ssl_policy: "ELBSecurityPolicy-2016-08" -alb_certificate_arn: "arn:aws:acm:us-east-1:290379793816:certificate/6d1bab74-fb46-4244-aab2-832bf519ab24" - -## Region. It is recommended to deploy to us-east-1 as some of the other regions fails due to varied reasons -region: "us-east-1" - -## Size of the EC2 instance EBS root volume -root_block_size: 120 - -## Number of connections allowed by EC2 instance -pool_size: 30 - -## Secret key of Explorer. Please, generate your own key here. For example, you can use the following command: openssl rand -base64 64 | tr -d '\n' -secret_key_base: "TPGMvGK0iIwlXBQuQDA5KRqk77VETbEBlG4gAWeb93TvBsYAjvoAvdODMd6ZeguPwf2YTRY3n7uvxXzQP4WayQ==" - -## New Relic related configs. Usually you want this empty -new_relic_app_name: "" -new_relic_license_key: "" - -# BlockScout related variables - -## An address of BlockScout repo to download -blockscout_repo: https://github.com/poanetwork/blockscout - -## A branch at `blockscout_repo` with ready-to-deploy version of BlockScout -chain_branch: - core: "production-core" - sokol: "production-sokol" - -## Usually you don't want to merge branches, so it is commented out by default -#chain_merge_commit: -# core: "2cdead1" -# sokol: "2cdead1" - -## If you want you can download and configure repo on your own. It should has the following name - blockscout-{{ chain_name }} and exist inside root playbook folder. Use the following variable to prevent playbooks from overriding -skip_fetch: false - -## Login data for the test database. Please, use postgres database with the version specified at BlockScout repo prerequisites -ps_host: localhost -ps_user: myuser -ps_password: mypass -ps_db: mydb - -## Custom environment variables that will be exported when testing the Blockscout instance -chain_custom_environment: - core: - METADATA_CONTRACT: 0xE3FfFD154931EB80b2aCE096EC32D6df23661203 - VALIDATORS_CONTRACT: 0xa105Db0e6671C7B5f4f350ff1Af6460E6C696e71 - LINK_TO_OTHER_EXPLORERS: false - sokol: - METADATA_CONTRACT: 0x81c47A798226e1b90A1b4C9dBDd844033B528D06 - VALIDATORS_CONTRACT: 0x4c6a159659CCcb033F4b2e2Be0C16ACC62b89DDB - LINK_TO_OTHER_EXPLORERS: false +bucket: "poa-terraform-state" \ No newline at end of file diff --git a/group_vars/blockscout.yml.example b/group_vars/blockscout.yml.example new file mode 100644 index 0000000..71a1723 --- /dev/null +++ b/group_vars/blockscout.yml.example @@ -0,0 +1,34 @@ +# BlockScout related variables + +## An address of BlockScout repo to download +blockscout_repo: https://github.com/poanetwork/blockscout + +## A branch at `blockscout_repo` with ready-to-deploy version of BlockScout +chain_branch: + core: "production-core" + sokol: "production-sokol" + +## Usually you don't want to merge branches, so it is commented out by default +#chain_merge_commit: +# core: "2cdead1" +# sokol: "2cdead1" + +## If you want you can download and configure repo on your own. It should has the following name - blockscout-{{ chain_name }} and exist inside root playbook folder. Use the following variable to prevent playbooks from overriding +skip_fetch: false + +## Login data for the test database. Please, use postgres database with the version specified at BlockScout repo prerequisites +ps_host: localhost +ps_user: myuser +ps_password: mypass +ps_db: mydb + +## Custom environment variables that will be exported when testing the Blockscout instance +chain_custom_environment: + core: + METADATA_CONTRACT: 0xE3FfFD154931EB80b2aCE096EC32D6df23661203 + VALIDATORS_CONTRACT: 0xa105Db0e6671C7B5f4f350ff1Af6460E6C696e71 + LINK_TO_OTHER_EXPLORERS: false + sokol: + METADATA_CONTRACT: 0x81c47A798226e1b90A1b4C9dBDd844033B528D06 + VALIDATORS_CONTRACT: 0x4c6a159659CCcb033F4b2e2Be0C16ACC62b89DDB + LINK_TO_OTHER_EXPLORERS: false \ No newline at end of file diff --git a/group_vars/infrastructure.yml.example b/group_vars/infrastructure.yml.example new file mode 100644 index 0000000..dab7828 --- /dev/null +++ b/group_vars/infrastructure.yml.example @@ -0,0 +1,168 @@ +# Infrastructure related variables + +## Name of the DynamoDB table where current lease of TF state file will be stored +dynamodb_table: "poa-terraform-lock" + +## If ec2_ssh_key_content is empty all the virtual machines will be created with ec2_ssh_key_name key. Otherwise, playbooks will upload ec2_ssh_key_content with the name of ec2_ssh_key_name and launch virtual machines with that key +ec2_ssh_key_name: "sokol-test" +ec2_ssh_key_content: "" + +## EC2 Instance will have the following size: +instance_type: "m5.large" + +## VPC containing Blockscout resources will be created as following: +vpc_cidr: "10.0.0.0/16" +public_subnet_cidr: "10.0.0.0/24" +# This variable should be interpreted as following: +# Variable: 10.0.1.0/16 +# Real networks: 10.0.1+{{ number of chain starting with 0 }}.0/24 +db_subnet_cidr: "10.0.1.0/16" + +## Internal DNS zone will looks like: +dns_zone_name: "poa.internal" + +## All resources will be prefixed with this one +prefix: "sokol" + +## The following settngs are related to SSL of Application Load Balancer that will be deployed to AWS. If use_ssl is set to false, alb_* variables can be omitted +use_ssl: "false" +alb_ssl_policy: "ELBSecurityPolicy-2016-08" +alb_certificate_arn: "arn:aws:acm:us-east-1:290379793816:certificate/6d1bab74-fb46-4244-aab2-832bf519ab24" + +## Region. It is recommended to deploy to us-east-1 as some of the other regions fails due to varied reasons +region: "us-east-1" + +## Size of the EC2 instance EBS root volume +root_block_size: 120 + +## Number of connections allowed by EC2 instance +pool_size: 30 + +## Secret key of Explorer. Please, generate your own key here. For example, you can use the following command: openssl rand -base64 64 | tr -d '\n' +secret_key_base: "TPGMvGK0iIwlXBQuQDA5KRqk77VETbEBlG4gAWeb93TvBsYAjvoAvdODMd6ZeguPwf2YTRY3n7uvxXzQP4WayQ==" + +## New Relic related configs. Usually you want this empty +new_relic_app_name: "" +new_relic_license_key: "" + +# Network related variables + +## This variable represents network RPC endpoint: +chains: + core: "http://10.10.10.10:8545" + sokol: "https://192.168.0.1:8545" + +## This variable represents network RPC endpoint in trace mode. Can be the same as the previous variable: +chain_trace_endpoint: + core: "http://10.10.10.11:8545" + sokol: "http://192.168.0.1:8546" + +## This variable represents network RPC endpoint in websocket mode: +chain_ws_endpoint: + core: "ws://10.10.10.10/ws" + sokol: "ws://192.168.0.1/ws" + +## Next variable represents the client that is used to connect to the chain. +chain_jsonrpc_variant: + core: "parity" + sokol: "geth" + +## Place your own logo at apps/block_scout_web/assets/static folder of blockscout repo and specify a relative path here +chain_logo: + core: "/images/core.svg" + sokol: "/images/sokol.svg" + +## The following variables represents a name of the coin that will be shown at blockchain explorer +chain_coin: + core: "POA" + sokol: "POA" + +## Next variable usually represents the name of the organization/community that hosts the chain +chain_network: + core: "POA Network" + sokol: "POA Network" + +## Next variable represents the actual name of the particular network +chain_subnetwork: + core: "POA Core Network" + sokol: "POA Sokol test network" + +## The next variable represent a relative URL path which will be used as an endpoint for defined chain. For example, if we will have our blockscout at blockscout.com domain and place "core" network at "/poa/core", then the resulting endpoint will be blockscout.com/poa/core for this network. +chain_network_path: + core: "/poa/core" + sokol: "/poa/sokol" + +## The following variable maps the chain name to the network navigation icon at apps/block_scout_web/lib/block_scout_web/templates/icons without .eex extension +chain_network_icon: + core: "_test_network_icon.html" + sokol: "_test_network_icon.html" + +## The following variable maps the chain names to random transaction hash on that chain. "chain_graphiql_transaction" is a variable that takes a transaction hash from a network to provide a sample query in the GraphIQL Playground. +chain_graphiql_transaction: + core: "0xbc426b4792c48d8ca31ec9786e403866e14e7f3e4d39c7f2852e518fae529ab4" + sokol: "0xbc426b4792c48d8ca31ec9786e403866e14e7f3e4d39c7f2852e518fae529ab5" + +## A variable required in indexer configuration files. Can be either base or clique. Usually you don't want to change this value unless you know what are you doing. +chain_block_transformer: + core: "base" + sokol: "base" + +## Heartbeat is an Erlang monitoring service that will restart BlockScout if it becomes unresponsive. The following two variables configures the timeout before Blockscout will be restarted and command to restart. Usually you don't want to change these values. +chain_heart_beat_timeout: + core: 30 + sokol: 30 + +chain_heart_command: + core: "systemctl restart explorer.service" + sokol: "systemctl restart explorer.service" + +## This value describes a version of Blockscout that will be shown at the footer. You can write any text there you want to see at the footer. +chain_blockscout_version: + core: "v1.3.7-beta" + sokol: "v1.3.7-beta" + +## This value represents the name of the DB that will be created/attached. Must be unique. Will be prefixed with `prefix` variable. +chain_db_id: + core: "core" + sokol: "sokol" + +## Each network should have it's own DB. This variable maps chain to DB name. Should not be messed with db_id variable, which represents the RDS instance ID. +chain_db_name: + core: "core" + sokol: "sokol" + +## The following variables describes the DB configurations for each network including usernames, password, instance class, etc. +chain_db_username: + core: "core" + sokol: "sokol" + +chain_db_password: + core: "fkowfjpoi309021" + sokol: "kopsdOPpa9213K" + +chain_db_instance_class: + core: "db.m4.xlarge" + sokol: "db.m4.large" + +## Size of storage in GiB. +chain_db_storage: + core: "200" + sokol: "100" + +## Type of disk to be used for the DB. +chain_db_storage_type: + core: "io1" + sokol: "gp2" + +## This should be set only if chain_db_storage is set to io1 +#chain_db_iops: +# core: "1000" +# sokol: "1500" + +## Blockscout uses Postgres as the DB engine. This variable describes the Postgres version used in each particular chain. +chain_db_version: + core: "10.5" + sokol: "10.6" + +## The following variable represents the elixir version that will be used to run BlockScout instance. Will be used to download the Elixir at the following link: https://github.com/elixir-lang/elixir/releases/download/{{ elixir_version }}/Precompiled.zip +elixir_version: "v1.7.4" \ No newline at end of file