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 # Stack-specific information
/PREFIX /PREFIX
group_vars/*.yml group_vars/*
!group_vars/all.yml.example
*.retry *.retry
*.temp *.temp
*.swp *.swp

View File

@ -69,20 +69,37 @@
args: args:
chdir: "blockscout-{{ chain }}/apps/block_scout_web" 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 - name: Start server
block: block:
- name: Start server - name: Start server
command: "mix phx.server" command: "mix phx.server"
environment: "{{ chain_env }}" environment: "{{ chain_upper_env }}"
ignore_errors: true ignore_errors: true
args: args:
chdir: "blockscout-{{ chain }}" 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 async: 10000
poll: 0 poll: 0
- name: User prompt - name: User prompt
pause: 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." 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: args:
chdir: "blockscout-{{ chain }}" 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 - name: Remove dev dependencies
file: file:
state: absent state: absent
@ -113,6 +135,7 @@
- "blockscout-{{ chain }}/apps/block_scout_web/assets/node_modules/" - "blockscout-{{ chain }}/apps/block_scout_web/assets/node_modules/"
- "blockscout-{{ chain }}/apps/explorer/node_modules/" - "blockscout-{{ chain }}/apps/explorer/node_modules/"
- "blockscout-{{ chain }}/logs/dev/" - "blockscout-{{ chain }}/logs/dev/"
when: user_answer.user_input|bool == true
- name: Upload Blockscout to S3 - 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 }}" 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_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
AWS_REGION: "{{ region }}" 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 - name: User prompt
pause: 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 register: user_answer
- name: Update chain variables - name: Update chain variables
aws_ssm_parameter_store: aws_ssm_parameter_store:
name: "/{{ prefix }}/{{ chain }}/{{ item.name }}" name: "/{{ prefix }}/{{ chain }}/{{ item.key }}"
value: "{{ item.value }}" value: "{{ item.value }}"
with_items: with_dict: "{{ chain_env }}"
- { 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] }}" }
environment: environment:
AWS_ACCESS_KEY_ID: "{{ aws_access_key }}" AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}" AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
AWS_REGION: "{{ region }}" AWS_REGION: "{{ region }}"
when: user_answer.user_input|bool == true 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 - 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] }}'" command: "{{ push_output.stdout_lines[1] }} --deployment-group-name {{ prefix }}-explorer-dg{{ index }} --deployment-config-name CodeDeployDefault.OneAtATime --description '{{ chain_blockscout_version[chain] }}'"