diff --git a/Taskfile.yml b/Taskfile.yml index afbafc1..38f96d1 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -1,5 +1,4 @@ version: 3 -# silent: true includes: tf: { taskfile: terraform, dir: terraform } @@ -7,14 +6,9 @@ includes: tasks: dev: docker compose -f compose.dev.yml up --build --force-recreate --no-deps - - build:slow: ansible-playbook playbooks/build.yml - deploy:slow: ansible-playbook playbooks/deploy.yml - build:fast: ansible-playbook playbooks/fast-build.yml - deploy:fast: ansible-playbook playbooks/fast-deploy.yml - restore: ansible-playbook playbooks/restore.yml -e "restore_bucket={{.BUCKET}} restore_key={{.KEY}}" - run:slow: [task: build:slow, task: deploy:slow] - run:fast: [task: build:fast, task: deploy:fast] + deploy:fast: ansible-playbook playbooks/fast.yml + deploy:slow: ansible-playbook playbooks/slow.yml + deploy:restore: ansible-playbook playbooks/restore.yml -e "restore_bucket={{.BUCKET}} restore_key={{.KEY}}" enter: cmd: aws ssm start-session --target $INSTANCE_ID diff --git a/playbooks/build.yml b/playbooks/build.yml deleted file mode 100644 index 4a35e37..0000000 --- a/playbooks/build.yml +++ /dev/null @@ -1,42 +0,0 @@ -- name: Make build artifact. - hosts: localhost - vars_files: ../config/ansible.secret.json - gather_facts: false - tasks: - - name: Build image. - community.docker.docker_image_build: - name: "{{ image_name }}" - path: ../gitea - nocache: true - rebuild: always - pull: true - - - name: Make temp file. - ansible.builtin.tempfile: - suffix: .tar - register: tar_file - - - name: Push image to archive. - community.docker.docker_image: - name: "{{ image_name }}" - archive_path: "{{ tar_file.path }}" - source: local - - - name: Compress archive to artifact. - register: compress_image - community.general.archive: - path: "{{ tar_file.path }}" - dest: "{{ tar_file.path }}.xz" - format: xz - mode: "0644" - - - name: Push artifact to S3. - amazon.aws.s3_object: - bucket: "{{ image_bucket }}" - object: "{{ image_key }}" - src: "{{ tar_file.path }}.xz" - mode: put - - region: "{{ aws_region }}" - access_key: "{{ aws_access_key }}" - secret_key: "{{ aws_secret_key }}" diff --git a/playbooks/fast-build.yml b/playbooks/fast-build.yml deleted file mode 100644 index 303e27c..0000000 --- a/playbooks/fast-build.yml +++ /dev/null @@ -1,29 +0,0 @@ -- name: Make build artifact. - hosts: localhost - vars_files: - - ../config/ansible.secret.json - - ../config/infrastructure.secret.tf.json - gather_facts: false - tasks: - - name: Log into Docker. - community.docker.docker_login: - registry_url: '{{ full_domain.value }}' - username: '{{ username }}' - password: '{{ api_key }}' - reauthorize: true - - - name: Build image. - community.docker.docker_image_build: - name: "{{ full_domain.value }}/{{ image_name }}:latest" - path: ../gitea - nocache: true - rebuild: always - pull: true - outputs: [{ type: image, push: true }] - platform: - - linux/amd64 - - linux/arm64/v8 - - - name: Log out of Docker. - community.docker.docker_login: - state: absent diff --git a/playbooks/fast-deploy.yml b/playbooks/fast.yml similarity index 73% rename from playbooks/fast-deploy.yml rename to playbooks/fast.yml index a662305..2af8760 100644 --- a/playbooks/fast-deploy.yml +++ b/playbooks/fast.yml @@ -1,3 +1,33 @@ +- name: Make build artifact. + hosts: localhost + vars_files: + - ../config/ansible.secret.json + - ../config/infrastructure.secret.tf.json + gather_facts: false + tasks: + - name: Log into Docker. + community.docker.docker_login: + registry_url: '{{ full_domain.value }}' + username: '{{ username }}' + password: '{{ api_key }}' + reauthorize: true + + - name: Build image. + community.docker.docker_image_build: + name: "{{ full_domain.value }}/{{ image_name }}:latest" + path: ../gitea + nocache: true + rebuild: always + pull: true + outputs: [{ type: image, push: true }] + platform: + - linux/amd64 + - linux/arm64/v8 + + - name: Log out of Docker. + community.docker.docker_login: + state: absent + - name: Deploy artifact to instance. hosts: localhost become: true @@ -7,11 +37,10 @@ - ../config/infrastructure.secret.tf.json vars: ansible_connection: aws_ssm - ansible_python_interpreter: /usr/bin/python3 ansible_aws_ssm_plugin: "{{ ssm_plugin }}" ansible_aws_ssm_bucket_name: "{{ image_bucket }}" ansible_aws_ssm_instance_id: "{{ instance_id.value }}" - + ansible_python_interpreter: /usr/bin/python3 ansible_aws_ssm_region: "{{ aws_region }}" ansible_aws_ssm_access_key_id: "{{ aws_access_key }}" ansible_aws_ssm_secret_access_key: "{{ aws_secret_key }}" diff --git a/playbooks/restore.yml b/playbooks/restore.yml index 79c8eb1..9719807 100644 --- a/playbooks/restore.yml +++ b/playbooks/restore.yml @@ -11,7 +11,6 @@ ansible_aws_ssm_plugin: "{{ ssm_plugin }}" ansible_aws_ssm_bucket_name: "{{ image_bucket }}" ansible_aws_ssm_instance_id: "{{ instance_id.value }}" - ansible_aws_ssm_region: "{{ aws_region }}" ansible_aws_ssm_access_key_id: "{{ aws_access_key }}" ansible_aws_ssm_secret_access_key: "{{ aws_secret_key }}" diff --git a/playbooks/deploy.yml b/playbooks/slow.yml similarity index 71% rename from playbooks/deploy.yml rename to playbooks/slow.yml index 7330747..1d056cc 100644 --- a/playbooks/deploy.yml +++ b/playbooks/slow.yml @@ -1,3 +1,46 @@ +- name: Make build artifact. + hosts: localhost + vars_files: ../config/ansible.secret.json + gather_facts: false + tasks: + - name: Build image. + community.docker.docker_image_build: + name: "{{ image_name }}" + path: ../gitea + nocache: true + rebuild: always + pull: true + + - name: Make temp file. + ansible.builtin.tempfile: + suffix: .tar + register: tar_file + + - name: Push image to archive. + community.docker.docker_image: + name: "{{ image_name }}" + archive_path: "{{ tar_file.path }}" + source: local + + - name: Compress archive to artifact. + register: compress_image + community.general.archive: + path: "{{ tar_file.path }}" + dest: "{{ tar_file.path }}.xz" + format: xz + mode: "0644" + + - name: Push artifact to S3. + amazon.aws.s3_object: + bucket: "{{ image_bucket }}" + object: "{{ image_key }}" + src: "{{ tar_file.path }}.xz" + mode: put + + region: "{{ aws_region }}" + access_key: "{{ aws_access_key }}" + secret_key: "{{ aws_secret_key }}" + - name: Deploy artifact to instance. hosts: localhost become: true @@ -11,7 +54,6 @@ ansible_aws_ssm_plugin: "{{ ssm_plugin }}" ansible_aws_ssm_bucket_name: "{{ image_bucket }}" ansible_aws_ssm_instance_id: "{{ instance_id.value }}" - ansible_aws_ssm_region: "{{ aws_region }}" ansible_aws_ssm_access_key_id: "{{ aws_access_key }}" ansible_aws_ssm_secret_access_key: "{{ aws_secret_key }}"