Début du déploiement via ANSIBLE
This commit is contained in:
107
deploiement/deploiement_avec_ansible.md
Normal file
107
deploiement/deploiement_avec_ansible.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# Ansible
|
||||
|
||||
Nous allons utilisé Ansible pour la création et la configuration de base (mise à jours, proxy...) de tout les container.
|
||||
|
||||
## Création du container Ansible
|
||||
Avant de lancer la création et l'installation de tout les container il vous faut mettre en place le réseau et les pare-feux ainsi au minimum l'interface admin sur le pare-feu (avec ip virtuelle en .254).
|
||||
|
||||
Une fois que c'est fait, créer un container Ansible avec un numéro élevée (253 max).
|
||||
|
||||
### Réseau
|
||||
Au niveau des interfaces réseau, une sur la partie admin, l'autre sur le zone proxy pour l'accès au futur proxy interne.
|
||||
|
||||
- eth0 : vmbr2 VLAN: 100 IP: 10.1.0.253/24 GW: 10.1.0.254
|
||||
- eth1 : vmbr1 VLAN: 20 IP:10.0.1.200/24 GW:10.0.1.254
|
||||
|
||||
### Configuration initiale
|
||||
Vous allez générer une clé ed25519 qui servira à l'administation des container.
|
||||
```
|
||||
ssh-keygen -o -a 100 -t ed25519 -f /root/.ssh/id_ed25519
|
||||
```
|
||||
|
||||
Avant d'installer Ansible, il faut que vous mettiez en place (vous-même) le container du proxy interne. C'est le seul container, avec celui d'Ansible, que vous aurez à créer.
|
||||
|
||||
### Connexion au proxy
|
||||
On doit connecter le container au proxy pour qu'il puisse utiliser wget et apt.
|
||||
|
||||
#### /root/.wgetrc
|
||||
```
|
||||
http_proxy = http://10.0.1.252:3128/
|
||||
https_proxy = http://10.0.1.252:3128/
|
||||
use_proxy = on
|
||||
```
|
||||
#### /etc/apt/apt.conf.d/01proxy
|
||||
```
|
||||
Acquire::http {
|
||||
Proxy "http://10.0.1.252:9999";
|
||||
};
|
||||
```
|
||||
|
||||
## Installation d'Ansible
|
||||
|
||||
```
|
||||
apt-get update
|
||||
apt-get dist-upgrade
|
||||
apt-get install -y ansible python python3-proxmoxer
|
||||
```
|
||||
Il faut maintenant remplacer `/usr/lib/python3/dist-packages/ansible/modules/cloud/misc/proxmox.py` par le fichier proxmox.py qui est dans le même dossier.
|
||||
|
||||
Maintenant que Ansible est en place, on va pouvoir installer tous les container nécessaires. L'installation va se faire par zone, en commençant par la zone DMZ.
|
||||
|
||||
Pour la création des container, nous allons utiliser la librairie python `proxmoxer` qui s'exécute en local. Pour toutes les autres tâches, Ansible se connectera via SSH au container. Pour savoir sur quel container exécuter son playbook, Ansible utilise un inventaire trouvable dans `/etc/ansible/hosts`.
|
||||
|
||||
Pour notre usage, nous allons faire des groupes pour chaque type de container et un groupe pour chaque zone.
|
||||
|
||||
Il vous faut mettre le mot de passe root de proxmox et la clé publique du container Ansible dans un fichier à l'adresse `/root/src/source_pve.yml` et restreindre la lecture `chmod 640 /root/src/source_pve.yml`.
|
||||
|
||||
Structure du fichier source_pve.yml :
|
||||
```
|
||||
pass_pve:
|
||||
ssh_pub:
|
||||
```
|
||||
|
||||
Par exemple, il y aura un groupe HAProxy regroupant tous les container HAProxy et un groupe DMZ regroupant tous les groupes de container DMZ.
|
||||
|
||||
|
||||
## Zone DMZ
|
||||
|
||||
Un playbook Ansible est disponible pour la préparation de la zone DMZ, il s'occupera de l'installation de base. A vous de suivre la documentation pour la suite des opérations (sauf mention contraire).
|
||||
|
||||
Voici les tâches à réaliser avant de lancer le playbook.
|
||||
|
||||
### /etc/ansible/hosts
|
||||
Ajoutez
|
||||
```
|
||||
[haproxy]
|
||||
10.1.0.100 #HAProxy Alpha
|
||||
10.1.0.101 #HAProxy Beta
|
||||
|
||||
[dns]
|
||||
10.1.0.106 #DNS
|
||||
|
||||
[zonedmz:children]
|
||||
haproxy
|
||||
dmz
|
||||
```
|
||||
|
||||
Pour les mots de passe à vous de les générer, il vous faut ensuite les mettre dans ce fichier. Le mot de passe pour hasync et le même sur les deux HAProxy.
|
||||
|
||||
### /root/src/password_dmz.yml
|
||||
```
|
||||
pass_haproxy_master:
|
||||
pass_haproxy_slave:
|
||||
pass_hasync_same:
|
||||
pass_dns:
|
||||
```
|
||||
|
||||
### Templace Ferm pour les container
|
||||
|
||||
Le playbook Ansible s'occupe aussi de la mise en place d'un pare-feu. Une template a été réalisée pour la sécurisation des container avec ferm. Le détail de cette template est dans proxmox/securisation/template_ferm.md
|
||||
|
||||
Il vous faut mettre dans `/root/src/ferm/` les deux fichiers de configuration fournis (haproxy_ferm.conf & dns_ferm.conf)
|
||||
|
||||
Une fois que tout est fait, vous trouverez le playbook sous le nom de `ct_dmz.yml` dans le dossier zone_dmz.
|
||||
|
||||
Lancez le avec `ansible-playbook ct_dmz.yml`.
|
||||
|
||||
Normalement tout est prêt, vous pouvez passer à la configuration des services de la zone DMZ.
|
||||
Reference in New Issue
Block a user