Files
python-tdd/infra/deploy-playbook.yaml

90 lines
2.9 KiB
YAML

- hosts: all
tasks:
- name: Install docker
ansible.builtin.apt:
name: docker.io
state: latest
update_cache: true
become: true
- name: Add our user to the docker group, so we don't need sudo/become
ansible.builtin.user:
name: '{{ ansible_user }}'
groups: docker
append: true # don't remove any existing groups
become: true
- name: Reset ssh connection to allow the user/group change to take effect
ansible.builtin.meta: reset_connection
- name: Build container image locally
community.docker.docker_image:
name: gamearray
source: build
state: present
build:
path: /mnt/d/cosmovault/latticework/oreilly/percival/python-tdd
platform: linux/amd64
force_source: true
delegate_to: 127.0.0.1
- name: Export container image locally
community.docker.docker_image:
name: gamearray
archive_path: /tmp/gamearray-img.tar
source: local
delegate_to: 127.0.0.1
- name: Upload image to server
ansible.builtin.copy:
src: /tmp/gamearray-img.tar
dest: /tmp/gamearray-img.tar
- name: Import container image on server
community.docker.docker_image:
name: gamearray
load_path: /tmp/gamearray-img.tar
source: load
force_source: true
state: present
- name: Ensure .secret-key files exists
# the intention is that this only happens once per server
ansible.builtin.copy:
dest: ~/.secret-key
content: "{{ lookup('password', '/dev/null length=32 chars=ascii_letters') }}"
mode: 0600
force: false # do not recreate file if it already exists
- name: Read secret key back from file
ansible.builtin.slurp:
src: ~/.secret-key
register: secret_key
- name: Ensure db.sqlite3 file exists outside container
ansible.builtin.file:
path: "{{ ansible_env.HOME }}/db.sqlite3"
state: touch
owner: 1234 # so nonroot user can access it in container
become: true # needed for ownership change
- name: Run container
community.docker.docker_container:
name: gamearray
image: gamearray
state: started
recreate: true
env:
DJANGO_DEBUG_FALSE: "1"
DJANGO_SECRET_KEY: "{{ secret_key.content | b64decode }}"
DJANGO_ALLOWED_HOST: "localhost,staging.earthmanrpg.me,www.earthmanrpg.me,dashboard.earthmanrpg.me,earthmanrpg.me,167.172.29.172"
DJANGO_DB_PATH: "/home/nonroot/db.sqlite3"
EMAIL_HOST_PASSWORD: "{{ lookup('env', 'EMAIL_HOST_PASSWORD') }}"
ports:
80:8888 # container port 80 (standard http port) maps to server port 8888 (arbitrary internal port)
- name: Run migration inside container
community.docker.docker_container_exec:
container: gamearray
command: ./manage.py migrate