Skip to content
Snippets Groups Projects
Commit cb01e788 authored by Thibault's avatar Thibault
Browse files

ajout du repertoire du tp

parent 56ba2e21
No related branches found
No related tags found
No related merge requests found
TP.md 0 → 100644
## Mode d'emploi
* Copier votre cle publique dans ./cle_publique
* commande : vagrant up
* premier déploiement : ansible-playbook -i inventory play.yml
Suivant le numéro de TP affecté (voir mon mail ) :
### TP 0 :
* Ajouter un certificat SSL autosigné pour la connexion nginx / client web
- name: Creation private key
openssl_privatekey:
path: /etc/nginx/cert/server.key
size: 2048
- name: demande de signature
openssl_csr:
path: /etc/nginx/cert/server.csr
privatekey_path: /etc/nginx/cert/server.key
- name: Creation du certificat
openssl_certificate:
path: /etc/nginx/cert/servcer.crt
privatekey_path: /etc/nginx/cert/server.key
csr_path: /etc/nginx/cert/server.csr
provider: selfsigned
* Ajouter un moteur de base de données Mariadb/Mysql + des utilisateurs/mot de passe, définie dans une liste
* Ajouter un role commun pour les deux groupes de machine pour installer une liste de package prédéfinie (exemple : nmon, htop, tmux, screen)
### TP 1 :
* Basculer le restart d'apache2 et nginx dans un handler
* Ajouter php à apache dans le role apache et insérer une page de test phpinfo() par défaut.
* Ajouter des regles iptables sur le nginx et apache pour n'accepter qu'une liste de ports définie
## Pour tous : question bonus (à rendre dans un autre répertoire )
- Fusionner tous les roles dans un seul et unique role : avec le même résultat
## Quelques rappels
* Pour tester le fonctionnement du loadbalancer : http://192.168.33.18:9000 (et plein de F5 pour basculer d'un apache à l'autre et sauf ceux qui passeront en ssl évidemment)
* Je ferais avec vos dépots la même chose que le mode d'emploi => Je vous conseille donc de rejouer pour être sur que ça fonctionnera. Déjà, vous perdez des points et en plus, vous agacez le correcteur ( aka moi )
* Ne pas utiliser les modules "command" ou "shell" , sauf extreme urgence. Normalement, vous n'en avez pas besoin.
* Je préfère une livraison de code via un git (gitlab de préférence) qu'un zip par mail ...
* n'hésitez pas à rajouter un petit README si vous voyez la necessité #JaimeLaDoc
* j'espère que vous avez lu les rappels.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "web" do |web|
web.vm.box = "debian/buster64"
web.vm.hostname = 'web'
web.vm.network :private_network, ip: "192.168.33.17"
public_key = File.read("./cle_publique")
config.vm.provision :shell, :inline =>"
echo 'Copying ansible-vm public SSH Keys to the VM'
mkdir -p /home/vagrant/.ssh
chmod 700 /home/vagrant/.ssh
echo '#{public_key}' >> /home/vagrant/.ssh/authorized_keys
chmod -R 600 /home/vagrant/.ssh/authorized_keys
", privileged: false
end
config.vm.define "lb" do |lb|
lb.vm.box = "debian/buster64"
lb.vm.hostname = 'lb'
lb.vm.network :private_network, ip: "192.168.33.18"
public_key = File.read("./cle_publique")
config.vm.provision :shell, :inline =>"
echo 'Copying ansible-vm public SSH Keys to the VM'
mkdir -p /home/vagrant/.ssh
chmod 700 /home/vagrant/.ssh
echo '#{public_key}' >> /home/vagrant/.ssh/authorized_keys
chmod -R 600 /home/vagrant/.ssh/authorized_keys
", privileged: false
end
end
\ No newline at end of file
[defaults]
remote_user=vagrant
[privilege_escalation]
become = true
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnmOJHPMiVedU3a4+LGnlVcdQtGhx93Qx3eaMb+SjfvSfeEHvnbVLh3TFTM6L2WzzXSB2G5BhtaRcMlXWCBmnxi0lO9J+NkynKmWlIx7MlTAQnJFuMVrtp7T5U2d5/ijRwB/H7k7eIJ04obt1plxCRJs71x0o12z1De9z1trh+c9YtAoHR7gbCXC/tiTa9bLDgkQpcTZM56dX6JDA+32nXcKsRRyPTKg1jaAW8T1CeTN0VQZhPhUVrdcxCgBtHNy0pYK2CkyTgHr0wFqCVfqZIzwrV+5JaeH0FmhpQdz1p8g7NVJX0clx1DyHPUonvmAn795iwZoNmcBL6x2ovtth/ thibault@Thibault
all:
children:
loadbalancer:
hosts:
theLB:
ansible_host: 192.168.33.18
vars:
user:
- thibault
- michel
- bernard
pass:
- jesaispas
- jesaispas2
- jesaispas3
web:
hosts:
theApache:
ansible_host: 192.168.33.17
sites:
- { 'nom_du_site': site1 , 'port': 81 }
- { 'nom_du_site': site2 , 'port': 82 }
- { 'nom_du_site': site3 , 'port': 83 }
machine1
theApache
theLB
play.yml 0 → 100755
#!/usr/bin/env ansible-playbook
- hosts: all
roles:
- role: commun
- hosts: web
roles:
- role: apache2
- hosts: loadbalancer
roles:
- role: nginx
\ No newline at end of file
sites:
- { 'nom_du_site': site1 , 'port': 81 }
- { 'nom_du_site': site2 , 'port': 82 }
default_site_directory: /var/www/
- name : apache installation
apt:
name: apache2
- name: add directory for sites
file:
state: directory
path: "/var/www/{{ item.nom_du_site }}"
loop: "{{ sites }}"
- name: add index.html in sites
lineinfile:
state: present
create: yes
path: "/var/www/{{ item.nom_du_site }}/index.html"
line: "site de {{ item.nom_du_site }}"
loop: "{{ sites }}"
- name: deploy apache site files
template:
src: "site.j2"
dest: "/etc/apache2/sites-available/{{item.nom_du_site}}.conf"
loop: "{{ sites }}"
- name: apache2 ativate VirtualHost
command: a2ensite {{ item.nom_du_site }}
loop: "{{ sites }}"
- name: add listen
lineinfile:
path: /etc/apache2/ports.conf
line: "Listen {{ item.port }}"
loop: "{{ sites }}"
- name: restart apache2
service:
name: apache2
state: restarted
<VirtualHost *:{{ item.port }}>
ServerAdmin webmaster@localhost
DocumentRoot {{default_site_directory}}{{ item.nom_du_site }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- name : Installation des paquets communs
apt:
name: "{{ item }}"
loop:
- nmon
- htop
- tmux
- screen
\ No newline at end of file
- name : nginx install
apt:
name: "{{ item }}"
loop:
- nginx
- python-openssl
- python-cryptography
- python-mysqldb
- name: Creation private key
openssl_privatekey:
path: /etc/ssl/certs/server.key
size: 2048
- name: demande de signature
openssl_csr:
path: /etc/ssl/certs/server.csr
privatekey_path: /etc/ssl/certs/server.key
- name: Creation du certificat
openssl_certificate:
path: /etc/ssl/certs/server.crt
privatekey_path: /etc/ssl/certs/server.key
csr_path: /etc/ssl/certs/server.csr
provider: selfsigned
#TODO : livrer lb.j2 dans /etc/nginx/sites-available/
- name: installation des fichiers de conf
template:
src: lb.j2
dest: "/etc/nginx/sites-available/loadbalancer.conf"
#TODO: creer un lien symbolique /etc/nginx/sites-available/loadbalancer.conf vers /etc/nginx/sites-enabled/loadbalancer.conf
- name: create symlink
file:
src: /etc/nginx/sites-available/loadbalancer.conf
dest: /etc/nginx/sites-enabled/loadbalancer.conf
state: link
- name: restart nginx
service:
name: nginx
state: restarted
- name: Insallation de la base MariaDB
apt:
name:
- mariadb-server
- name: Creation utilisateur 1 db
mysql_user:
name: "{{ user[0] }}"
password: "{{ pass[0] }}"
priv: '*.*:ALL'
state: present
- name: Creation utilisateur 2 db
mysql_user:
name: "{{ user[1] }}"
password: "{{ pass[1] }}"
priv: '*.*:ALL'
state: present
- name: Creation utilisateur 3 db
mysql_user:
name: "{{ user[2] }}"
password: "{{ pass[2] }}"
priv: '*.*:ALL'
state: present
\ No newline at end of file
upstream nginx-proxy {
{% for host in groups['web'] %}
{% for site in hostvars[host].sites %}
server {{ hostvars[host].ansible_eth1.ipv4.address }}:{{ site.port }};
{% endfor %}
{% endfor %}
}
# RP
server {
listen 9000 ;
server_name nameserver;
ssl on;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/certs/server.key;
location / {
proxy_pass http://nginx-proxy;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment