autofetch variables

This commit is contained in:
a@a.ru 2019-03-27 18:32:51 +03:00
parent f57a5502a8
commit 5987c3f6e5
2 changed files with 42 additions and 31 deletions

3
.gitignore vendored
View File

@ -19,7 +19,8 @@ roles/main_infra/files/terraform.tfvars
# Stack-specific information
/PREFIX
group_vars/*.yml
group_vars/*
!group_vars/all.yml.example
*.retry
*.temp
*.swp

View File

@ -69,20 +69,37 @@
args:
chdir: "blockscout-{{ chain }}/apps/block_scout_web"
- name: Fetch environment variables
set_fact:
chain_env: "{{ lookup('aws_ssm', path, aws_access_key=aws_access_key, aws_secret_key=aws_secret_key, region=region, shortnames=true, bypath=true, recursive=true ) }}"
vars:
path: "/{{ prefix }}/{{ chain }}"
- name: Override env variables
set_fact:
chain_env: "{{ chain_env | combine(chain_custom_environment_chain) }}"
vars:
chain_custom_environment_chain: "{{ chain_cec[chain] | default({}) }}"
chain_cec: "{{ chain_custom_environment | default ({}) }}"
- name: Uppercase chain
set_fact:
chain_upper_env: "{{ chain_upper_env | combine ({item.key|upper : item.value}) }}"
with_dict: "{{ chain_env }}"
vars:
chain_upper_env: {}
- name: Start server
block:
- name: Start server
command: "mix phx.server"
environment: "{{ chain_env }}"
environment: "{{ chain_upper_env }}"
ignore_errors: true
args:
chdir: "blockscout-{{ chain }}"
vars:
chain_env: "{{ chain_custom_environment_chain | combine({'BLOCKSCOUT_VERSION': chain_blockscout_version[chain], 'COIN': chain_coin[chain], 'ETHEREUM_JSONRPC_HTTP_URL': chains[chain], 'ETHEREUM_JSONRPC_TRACE_URL': chain_trace_endpoint[chain], 'ETHEREUM_JSONRPC_WS_URL': chain_ws_endpoint[chain], 'ETHEREUM_JSONRPC_VARIANT': chain_jsonrpc_variant[chain], 'HEART_BEAT_TIMEOUT': chain_heart_beat_timeout[chain], 'HEART_COMMAND': chain_heart_command[chain], 'LOGO': chain_logo[chain], 'NETWORK': chain_network[chain], 'SUBNETWORK': chain_subnetwork[chain], 'NETWORK_ICON': chain_network_icon[chain]}) }}"
chain_custom_environment_chain: "{{ chain_cec[chain] | default({}) }}"
chain_cec: "{{ chain_custom_environment | default ({}) }}"
async: 10000
poll: 0
- name: User prompt
pause:
prompt: "Please, open your browser and open 4000 port at the machine were Ansible is currently run. BlockScout should appear. Ensure that there is no visual artifacts and then press Enter to continue. Press Ctrl+C and then A if you face any issues to cancel the deployment."
@ -103,6 +120,11 @@
args:
chdir: "blockscout-{{ chain }}"
- name: User prompt
pause:
prompt: "Would you like to remove staging dependencies? [Yes/No] Default: No"
register: user_answer
- name: Remove dev dependencies
file:
state: absent
@ -113,6 +135,7 @@
- "blockscout-{{ chain }}/apps/block_scout_web/assets/node_modules/"
- "blockscout-{{ chain }}/apps/explorer/node_modules/"
- "blockscout-{{ chain }}/logs/dev/"
when: user_answer.user_input|bool == true
- name: Upload Blockscout to S3
command: "aws deploy push --application-name={{ prefix }}-explorer --s3-location s3://{{ prefix }}-explorer-codedeploy-releases/blockscout-{{ chain }}.zip --source=blockscout-{{ chain }}"
@ -122,43 +145,30 @@
AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
AWS_REGION: "{{ region }}"
- name: Upload output
debug:
msg: "If deployment will fail, you can try to deploy blockscout manually using the following commands: {{ push_output.stdout_lines }}"
- name: User prompt
pause:
prompt: "Do you want to deploy the built BlockScout version? [Yes/No] Default: No"
prompt: "Do you want to update the Parameter Store variables? [Yes/No] Default: No"
register: user_answer
- name: Update chain variables
aws_ssm_parameter_store:
name: "/{{ prefix }}/{{ chain }}/{{ item.name }}"
name: "/{{ prefix }}/{{ chain }}/{{ item.key }}"
value: "{{ item.value }}"
with_items:
- { name: elixir_version, value: "{{ elixir_version }}" }
- { name: block_transformer, value: "{{ chain_block_transformer[chain] }}" }
- { name: pool_size, value: "{{ pool_size }}" }
- { name: ecto_use_ssl, value: "{{ use_ssl }}" }
- { name: ethereum_jsonrpc_variant, value: "{{ chain_jsonrpc_variant[chain] }}" }
- { name: ethereum_jsonrpc_http_url, value: "{{ chains[chain] }}" }
- { name: ethereum_jsonrpc_trace_url, value: "{{ chain_trace_endpoint[chain] }}" }
- { name: ethereum_jsonrpc_ws_url, value: "{{ chain_ws_endpoint[chain] }}" }
- { name: logo, value: "{{ chain_logo[chain] }}" }
- { name: coin, value: "{{ chain_coin[chain] }}" }
- { name: network, value: "{{ chain_network[chain] }}" }
- { name: subnetwork, value: "{{ chain_subnetwork[chain] }}" }
- { name: network_path, value: "{{ chain_network_path[chain] }}" }
- { name: network_icon, value: "{{ chain_network_icon[chain] }}" }
- { name: graphiql_transaction, value: "{{ chain_graphiql_transaction[chain] }}" }
- { name: secret_key_base, value: "{{ secret_key_base }}" }
- { name: alb_ssl_policy, value: "{{ alb_ssl_policy }}" }
- { name: alb_certificate_arn, value: "{{ alb_certificate_arn }}" }
- { name: heart_beat_timeout, value: "{{ chain_heart_beat_timeout[chain] }}" }
- { name: heart_command, value: "{{ chain_heart_command[chain] }}" }
- { name: blockscout_version, value: "{{ chain_blockscout_version[chain] }}" }
with_dict: "{{ chain_env }}"
environment:
AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
AWS_REGION: "{{ region }}"
when: user_answer.user_input|bool == true
# DB and New Relic info will not be refreshed
- name: User prompt
pause:
prompt: "Do you want to deploy BlockScout? [Yes/No] Default: No"
register: user_answer
- name: Deploy Blockscout
command: "{{ push_output.stdout_lines[1] }} --deployment-group-name {{ prefix }}-explorer-dg{{ index }} --deployment-config-name CodeDeployDefault.OneAtATime --description '{{ chain_blockscout_version[chain] }}'"