From 4496e5db24c4116a437af414d401a7f9199a2a1a Mon Sep 17 00:00:00 2001
From: elhasnaoui <elhasnaoui@MacBook-Pro-Bilal.local>
Date: Sat, 18 May 2024 17:35:16 +0200
Subject: [PATCH] Feat: Add CI pipeline to deploy the synapse application

---
 .gitlab-ci.yml                             | 39 ++++++++++++++++------
 Dockerfile                                 | 14 ++++++++
 playbooks/{nginx_install.yml => nginx.yml} |  0
 3 files changed, 43 insertions(+), 10 deletions(-)
 create mode 100644 Dockerfile
 rename playbooks/{nginx_install.yml => nginx.yml} (100%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ed9e9c7..21e03d8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,35 +2,54 @@ stages:
   - build
   - Config
   - deploy
-# TInstall the base Configuration.
-Configuration_base:
+
+# Build the ansible runner (You can Set a local gitlab runner)
+build:
   stage: build
+  image: docker:latest
   script:
-    - ansible-playbook -i inventory.ini main.yml --ask-vault-pass
+    - docker build -t ansible-container .
+
+# Install the base Configuration.
+Configuration_base:
+  stage: Config
+  image: docker:latest
+  script:
+    - docker build -t ansible-container .
+    - docker run -v $(pwd):/ansible ansible-container ansible-playbook -i inventory.ini /ansible/base.yml --ask-vault-pass
 # Upgrade packages.
 Upgrade:
-  stage: build
+  stage: Config
+  image: docker:latest
   script:
-    - ansible-playbook -i inventory.ini upgrade.yml --ask-vault-pass
+    - docker run -v $(pwd):/ansible ansible-container ansible-playbook -i inventory.ini /ansible/upgrade.yml --ask-vault-pass
 
 # Configure docker
 Configuration_docker:
   stage: Config
+  image: docker:latest
   script:
-    - ansible-playbook -i inventory.ini Config.yml --ask-vault-pass
+    - docker build -t ansible-container .
+    - docker run -v $(pwd):/ansible ansible-container ansible-playbook -i inventory.ini /ansible/docker.yml --ask-vault-pass
 # Configure nginx
 Configuration_nginx:
   stage: Config
+  image: docker:latest
   script:
-    - ansible-playbook -i inventory.ini nginx.yml --ask-vault-pass
+    - docker build -t ansible-container .
+    - docker run -v $(pwd):/ansible ansible-container ansible-playbook -i inventory.ini /ansible/nginx.yml --ask-vault-pass
 # Configure postgreSQL
 Configuration_postgreSQL:
   stage: Config
+  image: docker:latest
   script:
-    - ansible-playbook -i inventory.ini postgresql.yml --ask-vault-pass
-    
+    - docker build -t ansible-container .
+    - docker run -v $(pwd):/ansible ansible-container ansible-playbook -i inventory.ini /ansible/postgresql.yml --ask-vault-pass
+
 # Deploy the synapse app.
 Configuration_Synapse:
   stage: deploy
+  image: docker:latest
   script:
-    - ansible-playbook -i inventory.ini synapse.yml --ask-vault-pass
\ No newline at end of file
+    - docker build -t ansible-container .
+    - docker run -v $(pwd):/ansible ansible-container ansible-playbook -i inventory.ini /ansible/synapse.yml --ask-vault-pass
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..f0a0353
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,14 @@
+# Dockerfile
+
+# Use a base image with Python and pip installed
+FROM python:3
+
+# Install Ansible
+RUN pip install ansible
+
+# Copy your playbook and inventory file into the container
+COPY playbooks/* /ansible/*
+COPY inventory.ini /ansible/inventory.ini
+
+# Set the working directory
+WORKDIR /ansible
diff --git a/playbooks/nginx_install.yml b/playbooks/nginx.yml
similarity index 100%
rename from playbooks/nginx_install.yml
rename to playbooks/nginx.yml
-- 
GitLab