@@ -54,69 +54,14 @@ jobs:
5454 sleep 60
5555 echo "Instance should be ready now"
5656
57- - name : Install Docker on EC2 instance
58- 59- with :
60- host : ${{ steps.terraform.outputs.public_ip }}
61- username : ${{ vars.AWS_EC2_USER }}
62- key : ${{ secrets.AWS_EC2_PRIVATE_KEY }}
63- script : |
64- # Add Docker's official GPG key
65- sudo apt-get update
66- sudo apt-get install -y ca-certificates curl
67- sudo install -m 0755 -d /etc/apt/keyrings
68- sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
69- sudo chmod a+r /etc/apt/keyrings/docker.asc
70-
71- # Add the repository to Apt sources
72- echo \
73- "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
74- $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
75- sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
76-
77- # Install Docker
78- sudo apt-get update
79- sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
80-
81- # Add user to docker group
82- sudo usermod -a -G docker ${{ vars.AWS_EC2_USER }}
83-
84- # Apply group changes without logout
85- newgrp docker
86-
87- - name : Copy Docker Compose File From Repo to VM Host
88- 89- with :
90- host : ${{ steps.terraform.outputs.public_ip }}
91- username : ${{ vars.AWS_EC2_USER }}
92- key : ${{ secrets.AWS_EC2_PRIVATE_KEY }}
93- source : " deployment/compose.aws.yml"
94- target : " /home/${{ vars.AWS_EC2_USER }}/deployment"
95- strip_components : 1
96- overwrite : true
97-
98- - name : SSH to VM and Create .env.prod
99- 100- with :
101- host : ${{ steps.terraform.outputs.public_ip }}
102- username : ${{ vars.AWS_EC2_USER }}
103- key : ${{ secrets.AWS_EC2_PRIVATE_KEY }}
104- script : |
105- cd /home/${{ vars.AWS_EC2_USER }}
106- rm -f .env.prod
107- touch .env.prod
108- echo "EC2_PUBLIC_IP=${{ steps.terraform.outputs.public_ip }}" >> .env.prod
109- echo "CLIENT_HOST=client.${{ steps.terraform.outputs.public_ip }}.nip.io" >> .env.prod
110- echo "SERVER_HOST=api.${{ steps.terraform.outputs.public_ip }}.nip.io" >> .env.prod
111- echo "PUBLIC_API_URL=https://api.${{ steps.terraform.outputs.public_ip }}.nip.io" >> .env.prod
57+ - name : Setup Ansible
58+ run : |
59+ python -m pip install --upgrade pip
60+ pip install ansible
11261
113- - name : SSH to VM and Execute Docker-Compose Up
114- 115- with :
116- host : ${{ steps.terraform.outputs.public_ip }}
117- username : ${{ vars.AWS_EC2_USER }}
118- key : ${{ secrets.AWS_EC2_PRIVATE_KEY }}
119- script : |
120- cd /home/${{ vars.AWS_EC2_USER }}
121- echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
122- docker compose -f deployment/compose.aws.yml --env-file=/home/${{ vars.AWS_EC2_USER }}/.env.prod up -d
62+ - name : Run Ansible Playbook
63+ run : |
64+ cd infrastructure/ansible
65+ EC2_PUBLIC_IP=${{ steps.terraform.outputs.public_ip }} \
66+ AWS_EC2_USER=${{ vars.AWS_EC2_USER }} \
67+ ansible-playbook -i inventory.yml playbooks/deploy.yml
0 commit comments