74 lines
2.1 KiB
YAML
74 lines
2.1 KiB
YAML
- name: Set up real host.
|
|
gather_facts: false
|
|
hosts: localhost
|
|
vars_files:
|
|
- ../vault.yml
|
|
- ../dist/terraform_outputs.yml
|
|
tasks:
|
|
- name: Add remote host.
|
|
ansible.builtin.add_host:
|
|
name: server
|
|
ansible_ssh_host: "{{ server_ip.value }}"
|
|
ansible_user: root
|
|
ansible_port: 2222
|
|
ansible_private_key_file: "{{ secret.private_ssh_key_path }}"
|
|
|
|
- name: Deploy artifact to instance.
|
|
hosts: server
|
|
become: true
|
|
gather_facts: false
|
|
vars_files:
|
|
- ../vault.yml
|
|
- ../dist/terraform_outputs.yml
|
|
tasks:
|
|
- name: Stop server.
|
|
community.docker.docker_container:
|
|
name: "{{ item }}"
|
|
state: stopped
|
|
loop: [server, backup]
|
|
|
|
- name: Copy backup from S3.
|
|
amazon.aws.s3_object:
|
|
bucket: "{{ secret.restore.bucket | mandatory(msg='You must specify the bucket of the data.') }}"
|
|
object: "{{ secret.restore.key | mandatory(msg='You must specify the key of the data.') }}"
|
|
dest: /root/snapshot.tar.gz
|
|
mode: get
|
|
endpoint_url: "{{ secret.restore.endpoint }}"
|
|
region: "{{ secret.restore.region }}"
|
|
access_key: "{{ secret.restore.access_key }}"
|
|
secret_key: "{{ secret.restore.secret_key }}"
|
|
ignore_nonexistent_bucket: true
|
|
|
|
- name: Ensure backup directory exists.
|
|
ansible.builtin.file:
|
|
path: /root/restore
|
|
state: directory
|
|
mode: '0777'
|
|
|
|
- name: Extract backup.
|
|
ansible.builtin.unarchive:
|
|
src: /root/snapshot.tar.gz
|
|
dest: /root/restore
|
|
remote_src: true
|
|
|
|
- name: Move backup files to data folder.
|
|
ansible.builtin.copy:
|
|
remote_src: true
|
|
src: /root/restore/backup/my-app-backup/
|
|
dest: /root/data/
|
|
mode: '0777'
|
|
|
|
- name: Update permissions.
|
|
ansible.builtin.file:
|
|
path: /root/data
|
|
recurse: true
|
|
mode: '0777'
|
|
owner: 1000
|
|
group: 1000
|
|
|
|
- name: Restart containers.
|
|
community.docker.docker_container:
|
|
name: "{{ item }}"
|
|
state: started
|
|
loop: [server, backup]
|