blockscout-terraform/roles/main_software/tasks/main.yml

170 lines
6.7 KiB
YAML
Raw Normal View History

2019-03-19 10:09:10 -07:00
- name: Clone BlockScout
git:
repo: "{{ blockscout_repo }}"
dest: "blockscout-{{ chain }}"
version: "{{ chain_branch[chain] }}"
force: true
when: skip_fetch | bool != true
2019-03-20 09:20:47 -07:00
- name: Git clean
command: "git clean -fdx"
args:
chdir: "blockscout-{{ chain }}"
when: skip_fetch | bool != true
2019-03-19 10:09:10 -07:00
- name: Merge branches
command: "git merge {{ chain_merge_commit[chain] }}"
args:
chdir: "blockscout-{{ chain }}"
when: skip_fetch | bool != true and chain_merge_commit_item | bool != false
vars:
chain_mc: "{{ chain_merge_commit | default({}) }}"
chain_merge_commit_item: "{{ chain_mc[chain] | default('false') }}"
- name: Copy web config files
copy:
src: "blockscout-{{ chain }}/apps/block_scout_web/config/dev.secret.exs.example"
dest: "blockscout-{{ chain }}/apps/block_scout_web/config/dev.secret.exs"
- name: Template explorer config files
template:
src: dev.secret.exs.j2
dest: "blockscout-{{ chain }}/apps/explorer/config/dev.secret.exs"
- name: Remove static assets from previous deployment, if any
file:
path: "blockscout-{{ chain }}/apps/block_scout_web/priv/static"
state: absent
- name: Compile BlockScout
2019-03-20 09:20:47 -07:00
command: "mix do {{ item }}"
2019-03-19 10:09:10 -07:00
args:
chdir: "blockscout-{{ chain }}"
2019-03-20 09:20:47 -07:00
with_items:
- deps.get
- local.rebar --force
- deps.compile
- compile
- ecto.drop
- ecto.create
- ecto.migrate
2019-03-19 10:09:10 -07:00
- name: Install Node modules at apps/block_scout_web/assets
2019-03-20 09:20:47 -07:00
command: npm install
2019-03-19 10:09:10 -07:00
args:
chdir: "blockscout-{{ chain }}/apps/block_scout_web/assets"
2019-03-20 09:20:47 -07:00
- name: Execute webpack.js at apps/block_scout_web/assets/node_modules/webpack/bin
command: node_modules/webpack/bin/webpack.js --mode production
args:
chdir: "blockscout-{{ chain }}/apps/block_scout_web/assets"
2019-03-19 10:09:10 -07:00
- name: Instal Node modules at apps/explorer
command: npm install
args:
chdir: "blockscout-{{ chain }}/apps/explorer"
- name: Install SSL certificates
command: mix phx.gen.cert blockscout blockscout.local
args:
chdir: "blockscout-{{ chain }}/apps/block_scout_web"
- name: Start server
2019-03-20 09:20:47 -07:00
block:
- name: Start server
command: "mix phx.server"
environment: "{{ chain_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."
rescue:
- name: 'Stop execution'
fail:
msg: "Execution aborted."
always:
- name: kill server
command: "pkill -e {{ item }}"
with_items:
- beam.smp
- node
failed_when: false
2019-03-19 10:09:10 -07:00
- name: Build static assets
command: mix phx.digest
args:
chdir: "blockscout-{{ chain }}"
- name: Remove dev dependencies
file:
state: absent
path: "{{ item }}"
with_items:
2019-03-20 09:20:47 -07:00
- "blockscout-{{ chain }}/_build/"
2019-03-19 10:09:10 -07:00
- "blockscout-{{ chain }}/deps/"
- "blockscout-{{ chain }}/apps/block_scout_web/assets/node_modules/"
- "blockscout-{{ chain }}/apps/explorer/node_modules/"
- "blockscout-{{ chain }}/logs/dev/"
- name: Upload Blockscout to S3
2019-03-20 09:20:47 -07:00
command: "aws deploy push --application-name={{ prefix }}-explorer --s3-location s3://{{ prefix }}-explorer-codedeploy-releases/blockscout-{{ chain }}.zip --source=blockscout-{{ chain }}"
2019-03-19 10:09:10 -07:00
register: push_output
2019-03-20 09:20:47 -07:00
environment:
AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
AWS_REGION: "{{ region }}"
2019-03-19 10:09:10 -07:00
- name: User prompt
pause:
prompt: "Do you want to deploy the built BlockScout version? [Yes/No] Default: No"
register: user_answer
- name: Update chain variables
aws_ssm_parameter_store:
name: "/{{ prefix }}/{{ chain }}/{{ item.name }}"
value: "{{ item.value }}"
with_items:
- { name: elixir_version, value: "{{ elixir_version }}" }
2019-03-20 09:20:47 -07:00
- { name: block_transformer, value: "{{ chain_block_transformer[chain] }}" }
2019-03-19 10:09:10 -07:00
- { 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] }}" }
2019-03-20 09:20:47 -07:00
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
2019-03-19 10:09:10 -07:00
- name: Deploy Blockscout
2019-03-20 09:20:47 -07:00
command: "{{ push_output.stdout_lines[1] }} --deployment-group-name {{ prefix }}-explorer-dg{{ index }} --deployment-config-name CodeDeployDefault.OneAtATime --description '{{ chain_blockscout_version[chain] }}'"
2019-03-19 10:09:10 -07:00
when: user_answer.user_input|bool == true
2019-03-20 09:20:47 -07:00
environment:
AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
AWS_REGION: "{{ region }}"