ansible-install
Installer Ansible dans un serveur master
sudo nano script_install_ansible.sh
# Installation of python
apt install software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt install python3.11
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1
# Installation of Ansible
sudo apt-add-repository ppa:ansible/ansible
sudo apt update
Vérifiez que ansible est bien installé.
ansible --version
Inventory ansible
[my-servers]
server1 ansible_host=172.31.80.149
server2 ansible_host=172.31.83.39
[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_user=ubuntu
- Projet index.html nginx
sudo nano webapp.index.html
code index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome Page</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: bisque;
margin: 0;
padding: 0;
}
.container {
max-width: 800px;
margin: 100px auto;
padding: 40px;
text-align: center;
background-color: beige;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
h1 {
color: #333333;
font-size: 36px;
margin-bottom: 20px;
}
p {
color: #222222; /* Updated the color to dark */
font-size: 18px;
font-weight: bold; /* Added font-weight to make the text bold */
margin-bottom: 10px;
}
.button {
display: inline-block;
background-color: #007bff;
color: #ffffff;
font-size: 16px;
font-weight: bold;
padding: 12px 24px;
text-decoration: none;
border-radius: 4px;
transition: background-color 0.3s ease;
}
.button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h1>Hello Everyone</h1>
<p>This is a part of the WEEK6 #10WeeksOfCloudOps Challenge</p>
<p>This is a sample web page deployed using Ansible Playbook</p>
<a href="#" class="button">Get Started</a>
</div>
</body>
</html>
Playbook exemple:
- name: Configure nginx web server
hosts: my-servers
become: true
become_user: root
become_method: sudo
tasks:
- name: update apt
apt:
update_cache: yes
- name: Install nginx
apt:
name: nginx
state: latest
- name: Start Nginx
service:
name: nginx
state: started
enabled: yes
- name: Deploy web app
copy:
src: index.html
dest: /var/www/html/
Jenkins setup
Première étape:
La première étape du pipeline, SCM Checkout, vérifie le code source de GitHub. Le paramètre des branches précise que le pipeline ne doit effectuer que la commande principale de la branche du dépôt. Le paramètre userRemoteConfigs spécifie l'URL du référentiel.
Deuxième étape:
La deuxième étape du pipeline, Execute Ansible, gère un manuel Ansible pour déployer l'application web. Le paramètre d'identifiantsId spécifie l'ID des justificatifs d'identité qu'Ansible utilisera pour accéder aux serveurs.
Le paramètre disableHostKeyChecking spécifie qu'Ansible ne doit pas vérifier les clés hôtes des serveurs. Le paramètre d'installation spécifie l'installation d'Ansible à utiliser.
Le paramètre d'inventaire spécifie le fichier d'inventaire qu'Ansible utilisera. Le paramètre de livre de lecture spécifie le livre de lecture qu'Ansible va exécuter.
L'identifiant ubuntu-slaves-key est le détail de la clé pem qui sera créée lorsque nous essayons d'accéder aux serveurs. Essayez de coller la touche ci-dessous comme indiqué dans l'image. Ensuite, nous devons affecter l'ID et l'utiliser en cours.
pipeline {
agent any
stages {
stage('SCM Checkout') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/main']], userRemoteConfigs: [[url: 'https://github.com/sridhar-modalavalasa/Ansible-web-app.git']]])
}
}
stage('Execute Ansible') {
steps {
ansiblePlaybook credentialsId: 'ubuntu-slaves-key', disableHostKeyChecking: true, installation: 'ansible-copsc', inventory: 'hosts', playbook: 'web-app.yml'
}
}
}
}