Auto deploy web application with Ansible in multi base: EC2, VMachine, Container,..
Documentation • Report Bug • Request Feature
Table of Contents
Before proceeding with the installation and usage of this project, ensure that you have the following prerequisites in place:
-
Network Connectivity: Docker requires network connectivity to download images, communicate with containers, and access external resources.
-
Each machine base have its own require
If you wanna run this project with ec2 base, you must set up environment variables in .env file in ./aws-ec2
EC2 config (.env):
AWS_ACCESS_KEY_ID*: Unique identifier for AWS authentication.AWS_SECRET_ACCESS_KEY*: Confidential key for securely signing AWS API requests.Get access key id and secret at here
AWS_REGION: AWS server location for services (default: ap-southeast-1)List AWS available region
AMI_ID: Identifier for AMD processors (default: ami-0df7a207adb9748c7)- Find AMI_ID at here
- Make sure that
AMI_IDrunning it in theAWS_REGIONthat you want to deploy to.
INSTANCE_NAME: Unique identifier for virtual servers. (default: quanblue)INSTANCE_TYPE: AWS server configuration specification. (default: t2.micro)KEY_PAIR_NAME: name of key pair (default: quanblue_key_pair)SECURITY_GROUP_NAME: name of security group (default: quanblue_sg)
Example:
# .env
AWS_ACCESS_KEY_ID=[your access key]
AWS_SECRET_ACCESS_KEY=[your secret key]
AWS_REGION=ap-southeast-1
AMI_ID=ami-0df7a207adb9748c7
INSTANCE_NAME=quanblue
INSTANCE_TYPE=t2.micro
KEY_PAIR_NAME=quanblue_key_pair
SECURITY_GROUP_NAME=quanblue_sgNote:
- Which environment variables not have default value, you need to add it to
.envfile.- You can also check out the file
.env.exampleto see all required environment variables.- If you want to use this example environment, you need to rename it to .env.
To deploy this project, with each base, follow these steps:
Container base:
bash ./container_deploy.shYou can watch IPv4 address of all container in ansible-net network
$ docker network inspect --format='{{range .Containers}}{{.Name}}: {{.IPv4Address}}{{"\n"}}{{end}}' ansible-net
ansible-controller: 172.18.0.2/16
backend: 172.18.0.7/16
prometheus: 172.18.0.3/16
alertmanager: 172.18.0.4/16
grafana: 172.18.0.5/16
frontend: 172.18.0.6/16Virtual machine base:
bash ./vmachine_deploy.shEC2 base:
bash ./ec2_deploy.shAutomatic deploy web application with 3 base: container, virtual machine and ec2 follow these steps:
- Remove all old machine and component attach with them
- Create new machines (Ansible and remote machines)
- Set up ssh key for machines
- Generate inventory file
- From Ansible machine:
- Add remote machines to the known hosts list
- Copy all setup files from host machine
- Play playbook to setup remote machines
- Deploy
- Application
- Deploy monitoring and logging components
- Deploy Application on
- Docker - Container
- Vagrant - VMachine
- AWS - EC2
- Menu UI
Contributions are always welcome!
Distributed under the MIT License. See LICENSE for more information.
Bento @quanblue · GitHub @QuanBlue · Gmail quannguyenthanh558@gmail.com
