Il s'agit ici de “monter” un cluster, composé de 1 ou plusieurs nano-ordinateurs, avant l'installation de docker (/home/docker).
- Possibilité de passer les variables dans les docker config file
- Eviter les redondances de variables
- Déploiement possible du même docker-compose (
docker-stack)par docker stack deploy ou par un template d'application de Portainer
Elles sont préfixées par ENV_
Solution retenue :
/etc/environment
- Toutes variables exposés dans le docker-compose sous forme
${ENV_}quelle que soit leur portée (cocooning, cluster, hôte)- A définir également dans le template de portainer pour être initialisées au déploiement.
- Réinitialisées lors d'un reboot
# Globales à cocooning
ENV_SS_DOMAIN=
ENV_ADMIN_LOGIN=
ENV_ADMIN_PASSWORD=
ENV_TZ=
# Globales au cluster
ENV_SYSLOG_IP=
ENV_NFS_IP=
ENV_DDCLIENT_NODE_DEPLOY=
# Spécifiques à l'hôte
ENV_GID=
ENV_UID=
ENV_ZABBIX_AGENT_PORT=
printenv | grep ENV_
compgen | grep ENV_
export ENV_name=VALUE
unset ENV_name
sudo nano /etc/environment
for line in $( cat /etc/environment ) ; do export $line ; done
/etc/environmentsudo sed -i '/^ENV_.*/d' /etc/environment
for var in $(env | grep -E '^ENV_'); do unset ${var%%=*}; done
env_file
- Variables plus ou moins sensibles
- Utilisées dans les environnement de production et de développement (Ex
ddclient_dev.env)- Spécifiques à cocooning
- Spécifique au cluster.
Les variables sont stockées dans des file_name.envsitués :
/.cocooning/data/environment/.cocooning/data/environment .
environment:
- Variables spécifiques à l'hôte
${ENV_}
sudo nano /etc/dhcpcd.conf
# IP fixe
interface eth0
static ip_address=192.168.1.101/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
# redemarrer le service /
sudo service dhcpcd restart
# Changer le hostname (master1, worker1...) /
sudo nano /etc/hostname
# Ajouter un hostname (master1, worker1...) /
sudo nano /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
`127.0.1.1 worker1`
sudo apt-get install nfs-kernel-server -y
sudo nano /etc/exports
/.cocooning/data 192.168.1.100/24(rw,no_root_squash,async,no_subtree_check)
Créer autant de lignes que de répertoires à partager {.is-info}
sudo exportfs -ra
Pour savoir quels ports NFS utilise, entrez la commande suivante:
sudo rpcinfo -p | grep nfs
sudo ufw allow 2049
sudo service nfs-kernel-server reload
gparted et affecter le label data à la partition primaire ext4 crééeA simplifier
- Repérer le disque et créer le répertoire .data à la racine
sudo fdisk -l # liste les partitions sudo blkid # liste les UUID et Labels sudo mkdir /media/data # créer le repertoire de montage temporaire sudo mount -t ext4 /dev/sda1 /media/data # Système de fichiers en ext4 sudo mkdir /media/data/.cocooning/data cd /media/data ls -a # pour vérifier la création du répertoire .data sudo umount /dev/sda1 # demonter la partition
{.is-warning}
/.cocooning/data sur chaque noeudsudo mkdir /.cocooning
sudo mkdir /.cocooning/data
sudo nano /etc/fstab
LABEL=data /.cocooning/data ext4 defaults 0 2
sudo reboot
ATTENTION ne pas installer docker-compose pour le moment. Son installation provoque la réinstallation de docker (version du dépôt de l'OS)
Si echec de l'install, vérifier les dépots /etc/apt/sources.list.d et sources.list
sudo su
cd /home/tchube
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --channel stable
Utilisation de Vscode possible après installation de ddclient
- portainer
- certbot
- haproxy
zigbee -> mosquitto
- mosquitto
- dmp
- zigbee
Hassio -> database
- mariadb, postgres (pour hassio)
- hassio
Monitoring (sur tchube)
syslog -> telegraf -> influxdb1 -> grafana
L'ordre de création :
- influxdb1 (sur tchube uniquement)
- telegraf (host, syslog)
- syslog
- grafana (sur tchube uniquement)
telegraf - influxdb2 -> grafana
- grafana
- infuxdb2
- telegraf
docker swarm leave
Ajuster la ligne de commande ci-dessous en fct des erreurs
sudo apt-get purge docker.io docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd