Change deploy to use ansible
This commit is contained in:
		
							
								
								
									
										15
									
								
								Taskfile.yml
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								Taskfile.yml
									
									
									
									
									
								
							| @@ -113,7 +113,18 @@ tasks: | ||||
|         sh: git rev-parse --short HEAD | ||||
|       TIMESTAMP: | ||||
|         sh: date +%s | ||||
|       IMAGE_TAG: homepage-nginx:{{.COMMIT_HASH}}-{{.TIMESTAMP}} | ||||
|       DOCKER_IMAGE: homepage-nginx:{{.COMMIT_HASH}}-{{.TIMESTAMP}} | ||||
|     cmds: | ||||
|       - task: build-prod | ||||
|       - docker build --pull --file docker/Dockerfile.nginx.prod --tag {{.IMAGE_TAG}} . | ||||
|       - docker build --pull --file docker/Dockerfile.nginx.prod --tag {{.DOCKER_IMAGE}} . | ||||
|       - task: deploy-with-ansible | ||||
|         vars: | ||||
|           DOCKER_IMAGE: '{{.DOCKER_IMAGE}}' | ||||
|            | ||||
|  | ||||
|   deploy-with-ansible: | ||||
|     internal: true | ||||
|     requires:  | ||||
|       vars: [DOCKER_IMAGE] | ||||
|     dir: '/home/av/projects/private/pet-project-server' | ||||
|     cmd: ansible-playbook -i production.yml playbook-app-homepage.yml --extra-vars 'homepage_web_image={{.DOCKER_IMAGE}}' | ||||
|   | ||||
							
								
								
									
										49
									
								
								tasks.py
									
									
									
									
									
								
							
							
						
						
									
										49
									
								
								tasks.py
									
									
									
									
									
								
							| @@ -1,49 +0,0 @@ | ||||
| from fabric import Connection | ||||
| from invoke import task | ||||
| from datetime import datetime | ||||
| import subprocess | ||||
| import shlex | ||||
|  | ||||
| APP_NAME = "homepage" | ||||
| SSH_HOST = "homepage@51.250.85.23" | ||||
| DOCKER_REGISTRY = "cr.yandex/crplfk0168i4o8kd7ade" | ||||
|  | ||||
|  | ||||
| def run(args): | ||||
|     return subprocess.run(args, check=True, capture_output=True).stdout | ||||
|  | ||||
|  | ||||
| @task | ||||
| def deploy(c): | ||||
|     timestamp = int(datetime.now().timestamp()) | ||||
|     commit = run(["git", "rev-parse", "--short", "HEAD"]).decode("utf-8").strip() | ||||
|     nginx_image_tag = f"{DOCKER_REGISTRY}/homepage-nginx:{commit}-{timestamp}" | ||||
|  | ||||
|     print(f"Build nginx image {nginx_image_tag}") | ||||
|  | ||||
|     run( | ||||
|         [ | ||||
|             "docker", | ||||
|             "build", | ||||
|             "--file", | ||||
|             "docker/Dockerfile.nginx.prod", | ||||
|             "--tag", | ||||
|             nginx_image_tag, | ||||
|             ".", | ||||
|         ] | ||||
|     ) | ||||
|  | ||||
|     print("Push nginx image") | ||||
|  | ||||
|     run(["docker", "push", nginx_image_tag]) | ||||
|  | ||||
|     print("Ready to setup remote host") | ||||
|  | ||||
|     with Connection(SSH_HOST) as c: | ||||
|         c.put( | ||||
|             "./docker/docker-compose.prod.yml", | ||||
|             remote="/home/homepage/docker-compose.yml", | ||||
|         ) | ||||
|         c.run("cp .env .env.prod") | ||||
|         c.run(f"echo NGINX_IMAGE={shlex.quote(nginx_image_tag)} >> .env.prod") | ||||
|         c.run(f"docker-compose --project-name {shlex.quote(APP_NAME)} --env-file=.env.prod up --detach") | ||||
		Reference in New Issue
	
	Block a user