From 09573218eb831d0d80c027aa9da26ac16c73e3c4 Mon Sep 17 00:00:00 2001 From: abikouo Date: Tue, 9 Jan 2024 14:44:09 +0100 Subject: [PATCH] add retries when trying to connect to ec2 instances --- .../tasks/start_containers.yaml | 24 +++++++++++++++++++ .../templates/deploy_app.yaml.j2 | 18 +++++++++++++- .../targets/test_deploy_flask_app/aliases | 1 - 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/roles/deploy_flask_app/tasks/start_containers.yaml b/roles/deploy_flask_app/tasks/start_containers.yaml index 1988f83c..ee875a66 100644 --- a/roles/deploy_flask_app/tasks/start_containers.yaml +++ b/roles/deploy_flask_app/tasks/start_containers.yaml @@ -44,6 +44,10 @@ path: "~/.ssh" - state: touch path: "~/.ssh/config" + retries: 5 + delay: 5 + until: result is successful + register: result - name: Update local .ssh/config ansible.builtin.blockinfile: @@ -51,18 +55,30 @@ insertafter: EOF dest: "~/.ssh/config" content: "{{ lookup('template', 'bastion_ssh_config.j2') }}" + retries: 5 + delay: 5 + until: result is successful + register: result - name: Copy remote ssh private key file into bastion ansible.builtin.copy: src: "{{ deploy_flask_app_bastion_ssh_private_key }}" dest: "{{ deploy_flask_app_workers_ssh_private_key }}" mode: 0400 + retries: 5 + delay: 5 + until: result is successful + register: result - name: Generate workers inventory file ansible.builtin.copy: content: "{{ lookup('template', 'workers_inventory.yaml.j2') }}" dest: "{{ deploy_flask_app_workers_inventory_file }}" mode: 0755 + retries: 5 + delay: 5 + until: result is successful + register: result - name: Generate playbook to deploy application ansible.builtin.copy: @@ -72,6 +88,10 @@ vars: deploy_flask_app_instances_list: "{{ deploy_flask_app_instances | join(',') }}" deploy_flask_app_worker_hostname: "{{ '{{' }} inventory_hostname {{ '}}' }}" + retries: 5 + delay: 5 + until: result is successful + register: result - name: Deploy application into workers ansible.builtin.command: >- @@ -79,3 +99,7 @@ --inventory {{ deploy_flask_app_workers_inventory_file }} {{ deploy_flask_app_workers_playbook_file }} -v + retries: 5 + delay: 5 + until: result is successful + register: result diff --git a/roles/deploy_flask_app/templates/deploy_app.yaml.j2 b/roles/deploy_flask_app/templates/deploy_app.yaml.j2 index 543890cc..7c39f042 100644 --- a/roles/deploy_flask_app/templates/deploy_app.yaml.j2 +++ b/roles/deploy_flask_app/templates/deploy_app.yaml.j2 @@ -12,6 +12,10 @@ block: | ClientAliveInterval 1200 ClientAliveCountMax 3 + retries: 5 + delay: 5 + until: result is successful + register: result - name: Install Podman ansible.builtin.yum: @@ -19,12 +23,20 @@ - podman update_cache: True state: present + retries: 5 + delay: 5 + until: result is successful + register: result - name: Check running container ansible.builtin.shell: cmd: "podman container ps -a -f name=webapp-container-1 --format=.Names" register: container changed_when: false + retries: 5 + delay: 5 + until: result is successful + register: result - name: Run application instance ansible.builtin.shell: @@ -46,4 +58,8 @@ -d {{ deploy_flask_app_container_image }} when: - container.stdout == "" - changed_when: true \ No newline at end of file + changed_when: true + retries: 5 + delay: 5 + until: result is successful + register: result \ No newline at end of file diff --git a/tests/integration/targets/test_deploy_flask_app/aliases b/tests/integration/targets/test_deploy_flask_app/aliases index c63f9525..de2fdf2f 100644 --- a/tests/integration/targets/test_deploy_flask_app/aliases +++ b/tests/integration/targets/test_deploy_flask_app/aliases @@ -1,4 +1,3 @@ cloud/aws role/deploy_flask_app time=35m -unstable