Oracle Linux 8.3 : Module yaml error: Unexpected key in data: static_context [line 9 col 3]

J’ai pu voir l’erreur suivante :

Module yaml error: Unexpected key in data: static_context [line 9 col 3]

Pour fixer le problème :

# yum update libmodulemd
rabbitmq_erlang                                                                                        315  B/s | 833  B     00:02    
rabbitmq_erlang-source                                                                                 489  B/s | 819  B     00:01    
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Dépendances résolues.
=======================================================================================================================================
 Paquet                         Architecture              Version                           Dépôt                                Taille
=======================================================================================================================================
Mise à jour:
 libmodulemd                    x86_64                    2.13.0-1.el8                      ol8_baseos_latest                    233 k

Résumé de la transaction
=======================================================================================================================================
Mettre à niveau  1 Paquet

Taille totale des téléchargements : 233 k
Voulez-vous continuer ? [o/N] : o
Téléchargement des paquets :
libmodulemd-2.13.0-1.el8.x86_64.rpm                                                                    3.4 MB/s | 233 kB     00:00    
---------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                  3.2 MB/s | 233 kB     00:00     
Test de la transaction
La vérification de la transaction a réussi.
Lancement de la transaction de test
Transaction de test réussie.
Exécution de la transaction
  Préparation           :                                                                                                          1/1 
  Mise à jour           : libmodulemd-2.13.0-1.el8.x86_64                                                                          1/2 
  Nettoyage de          : libmodulemd-2.9.4-2.el8.x86_64                                                                           2/2 
  Exécution du scriptlet: libmodulemd-2.9.4-2.el8.x86_64                                                                           2/2 
  Vérification de       : libmodulemd-2.13.0-1.el8.x86_64                                                                          1/2 
  Vérification de       : libmodulemd-2.9.4-2.el8.x86_64                                                                           2/2 

Mis à niveau:
  libmodulemd-2.13.0-1.el8.x86_64                                                                                                      

Terminé !

Ma version de Oracle Linux 8.3 :

# cat /etc/os-release 
NAME="Oracle Linux Server"
VERSION="8.3"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.3"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.3"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:3:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.3
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.3

Migration de Oracle Linux 7.x vers Oracle Linux 8.x avec leapp : Echec complet

J’ai essayé une migration avec Leapp mais sans succès, pourtant je pense bien avoir suivi la procédure.

Etape 1 : Mise en place de la dernier version de la Oracle Linux 7.x :

 

# sudo yum upgrade
... reboot ...
# cat /etc/system-release
Oracle Linux Server release 7.9
# yum repolist
Modules complémentaires chargés : ulninfo
id du dépôt                                                             nom du dépôt                                                                                                                           statut
ol7_UEKR5/x86_64                                                        Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Server (x86_64)                                                          702
ol7_latest/x86_64                                                       Oracle Linux 7Server Latest (x86_64)                                                                                                   24 259
repolist: 24 961

Etape 2 : Suppression des anciens Kernel :

# rpm -q kernel
kernel-3.10.0-1160.49.1.el7.x86_64
kernel-3.10.0-1160.53.1.el7.x86_64
kernel-3.10.0-1160.62.1.el7.x86_64
# package-cleanup --oldkernels --count=1 
# uname -sr
Linux 4.14.35-2047.513.2.el7uek.x86_64
# rpm -q kernel
kernel-3.10.0-1160.62.1.el7.x86_64

Etape 3 : Ajout du repo :

# curl https://copr.fedorainfracloud.org/coprs/g/leapp/leapp-devel/repo/epel-7/group_leapp-leapp-devel-epel-7.repo -o /etc/yum.repos.d/group_leapp-leapp-devel-epel-7.repo
# sudo yum install -y leapp

Etape 4 : Pre-upgrade :

# leapp preupgrade --oraclelinux

A noter que dans mon yum.repos.d j’ai :

yum.repos.d]# ls -ltr
total 40
-rw-r--r--. 1 root root 13093  2 nov.   2018 public-yum-ol7.repo.sav
-rw-r--r--  1 root root   226  9 juin   2021 virt-ol7.repo
-rw-r--r--  1 root root  4586 20 déc.  15:17 oracle-linux-ol7.repo
-rw-r--r--  1 root root  2587 20 déc.  15:18 uek-ol7.repo
-rw-r--r--  1 root root  2575 10 févr. 17:09 leapp-upgrade-repos-ol8.repo
-rw-r--r--  1 root root   381 12 mai   15:52 group_leapp-leapp-devel-epel-7.repo

# cat leapp-upgrade-repos-ol8.repo | grep "^\["
[ol8_baseos_latest]
[ol8_appstream]
[ol8_codeready_builder]
[ol8_addons]
[ol8_UEKR6]
[ol8_ksplice]
[ol8_oci_included]
[ol8_MySQL80]
[ol8_UEKR6_RDMA]
[ol8_oraclelinuxmanager210_client]
[ol8_kvm_appstream]

Etape 5 : Réponse aux questions :

# cat /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
# Title:              None
# Reason:             Confirmation
# =================== remove_pam_pkcs11_module_check.confirm ==================
# Label:              Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted.
# Description:        PAM module pam_pkcs11 is no longer available in OL-8 since it was replaced by SSSD.
# Type:               bool
# Default:            None
# Available choices: True/False
# Unanswered question. Uncomment the following line with your answer
# confirm =

# leapp answer --section remove_pam_pkcs11_module_check.confirm=True

Etape 6 : Finalisation :

– Test 1 :

leapp upgrade --oraclelinux

– Test 2 :

leapp upgrade --oraclelinux  --enablerepo ol8_codeready_builder

– Test 3 :

leapp upgrade --oraclelinux --enablerepo ol8_baseos_latest

Je me retrouve toujours avec l’erreur suivante :

============================================================
                           ERRORS                           
============================================================
 
2022-05-12 16:33:30.411911 [ERROR] Actor: target_userspace_creator
Message: Unable to install OL 8 userspace packages.
Summary:
    Details: Command ['systemd-nspawn', '--register=no', '--quiet', '-D', '/var/lib/leapp/scratch/mounts/root_/system_overlay', '--bind=/etc/hosts:/etc/hosts', '--setenv=LEAPP_EXPERIMENTAL=0', '--setenv=LEAPP_COMMON_TOOLS=:/etc/leapp/repos.d/system_upgrade/el7toel8/tools', '--setenv=LEAPP_COMMON_FILES=:/etc/leapp/repos.d/system_upgrade/el7toel8/files', '--setenv=LEAPP_ENABLE_REPOS=ol8_baseos_latest,ol8_appstream,ol8_UEKR6,ol8_codeready_builder', '--setenv=LEAPP_UNSUPPORTED=0', '--setenv=LEAPP_EXECUTION_ID=12546ba8-da78-496b-8489-f39686b2a838', '--setenv=LEAPP_HOSTNAME=PeDevOracle7.6', 'dnf', 'install', '-y', '--nogpgcheck', '--setopt=module_platform_id=platform:el8', '--setopt=keepcache=1', '--releasever', u'8.4', '--installroot', '/el8target', '--disablerepo', '*', '--enablerepo', u'ol8_baseos_latest', '--enablerepo', u'ol8_codeready_builder', '--enablerepo', u'ol8_UEKR6', '--enablerepo', u'ol8_appstream', 'dnf', '--disableplugin', 'subscription-manager'] failed with exit code 1.
    Stderr: Failed to create directory /var/lib/leapp/scratch/mounts/root_/system_overlay//sys/fs/selinux: Read-only file system
            Failed to create directory /var/lib/leapp/scratch/mounts/root_/system_overlay//sys/fs/selinux: Read-only file system
            Host and machine ids are equal (b947571a5b6f4b4485914d6b5da8c598): refusing to link journals
            Failed to synchronize cache for repo 'ol8_UEKR6', ignoring this repo.
            Failed to synchronize cache for repo 'ol8_appstream', ignoring this repo.
            Failed to synchronize cache for repo 'ol8_codeready_builder', ignoring this repo.
            Failed to synchronize cache for repo 'ol8_baseos_latest', ignoring this repo.
            Error: Unable to find a match: dnf
 
============================================================
                       END OF ERRORS                        
============================================================

Misère.

Oracle Linux 7.x : History of GLIBC and CVE

History of glibc and CVE for Oracle Linux 7.x ( 7.0 / 7.1 / 7.2 / 7.3 / 7.4 / 7.5 ) :

So Redhat ( and Oracle Linux, because it’s fork )  uses branch GLIBC 2.17 instead GLIBC 2.27

Question : What’s the current CVE on 2.17-222 ? It’s plan to merge with 2.27 ?

Big gap on GLIBC between Redhat & Fédora :

Thanks.

Severity Advisory Summary Release Date RPM OS KSPLICE GLIB CVE
Important ELSA-2018-4078 glibc security update 18/04/2018 glibc-2.17-222.ksplice1.el7.x86_64.rpm Oracle Linux 7.xx YES
Moderate ELSA-2018-0805 glibc security, bug fix, and enhancement update 16/04/2018 glibc-2.17-222.el7.x86_64.rpm Oracle Linux 7.5 2.17-222 CVE-2014-9402 / CVE-2015-5180 / CVE-2017-12132 / CVE-2017-15670 / CVE-2017-15804 / CVE-2018-1000001
01/02/2018 GNU C Library 2.27
ELBA-2017-3296 glibc bug fix update 30/11/2017 glibc-2.17-196.el7_4.2.x86_64.rpm Oracle Linux 7.xx
Important ELSA-2017-3601 glibc security update 09/08/2017 glibc-2.17-196.ksplice1.el7.x86_64.rpm Oracle Linux 7.xx YES
Moderate ELSA-2017-1916 glibc security, bug fix, and enhancement update 07/08/2017 glibc-2.17-196.el7.x86_64.rpm Oracle Linux 7.4 2.17-196 CVE-2014-9761 / CVE-2015-8776 / CVE-2015-8778 / CVE-2015-8779 / CVE-2015-8777
02/08/2017 GNU C Library 2.26
ELBA-2017-3594 glibc bug fix update 17/07/2017 glibc-2.17-157.ksplice1.el7_3.5.x86_64.rpm Oracle Linux 7.xx YES
ELBA-2017-1752 glibc bug fix update 14/07/2017 glibc-2.17-157.el7_3.5.x86_64.rpm Oracle Linux 7.xx
Important ELSA-2017-3582 glibc security update 20/06/2017 glibc-2.17-157.ksplice1.el7_3.4.x86_64.rpm Oracle Linux 7.xx YES CVE-2017-1000364
Important ELSA-2017-1481 glibc security update 19/06/2017 glibc-2.17-157.el7_3.4.x86_64.rpm Oracle Linux 7.xx CVE-2017-1000366
ELBA-2017-3577 glibc bug fix update 30/05/2017 glibc-2.17-157.ksplice1.el7_3.2.x86_64.rpm Oracle Linux 7.xx YES
ELBA-2017-1302 glibc bug fix update 26/05/2017 glibc-2.17-157.el7_3.2.x86_64.rpm Oracle Linux 7.xx
05/02/2017 GNU C Library 2.25
ELBA-2016-3649 glibc bug fix update 08/12/2016 glibc-2.17-157.ksplice1.el7_3.1.x86_64.rpm Oracle Linux 7.xx YES
ELBA-2016-2861 glibc bug fix update 06/12/2016 glibc-2.17-157.el7_3.1.x86_64.rpm Oracle Linux 7.xx
Low ELSA-2016-2573 glibc security, bug fix, and enhancement update 09/11/2016 glibc-2.17-157.el7.x86_64.rpm Oracle Linux 7.3 2.17-157 CVE-2016-3075 / CVE-2015-7547 / CVE-2015-5229
Low ELSA-2016-3638 glibc security update 09/11/2016 glibc-2.17-157.ksplice1.el7.x86_64.rpm Oracle Linux 7.xx YES 2.17-157 CVE-2016-3075
05/08/2016 GNU C Library 2.24
ELBA-2016-1449 glibc bug fix update 02/08/2016 glibc-2.17-106.0.1.el7_2.8.x86_64.rpm Oracle Linux 7.xx
ELBA-2016-3590 glibc bug fix update 02/08/2016 glibc-2.17-106.0.1.ksplice1.el7_2.8.x86_64.rpm Oracle Linux 7.xx YES
ELBA-2016-3562 glibc bug fix update 17/05/2016 glibc-2.17-106.0.1.ksplice1.el7_2.6.x86_64.rpm Oracle Linux 7.xx YES
ELBA-2016-1030 glibc bug fix update 12/05/2016 glibc-2.17-106.0.1.el7_2.6.x86_64.rpm Oracle Linux 7.xx
19/02/2016 GNU C Library 2.23
Critical ELSA-2016-3515 glibc security update 16/02/2016 glibc-2.17-106.0.1.ksplice1.el7_2.4.x86_64.rpm Oracle Linux 7.xx YES
Critical ELSA-2016-0176 glibc security and bug fix update 16/02/2016 glibc-2.17-106.0.1.el7_2.4.x86_64.rpm Oracle Linux 7.xx CVE-2015-7547 / CVE-2015-5229
Important ELSA-2015-2172 glibc security update 25/11/2015 glibc-2.17-106.0.1.el7_2.1.x86_64.rpm Oracle Linux 7.xx 2.17-106 CVE-2015-5277
Moderate ELSA-2015-2199 glibc security, bug fix, and enhancement update 24/11/2015 glibc-2.17-105.0.1.el7.x86_64.rpm Oracle Linux 7.2 2.17-105 CVE-2013-7423 / CVE-2015-1781 / CVE-2015-1472 / CVE-2015-1473
14/08/2015 GNU C Library 2.22
Moderate ELSA-2015-0327 glibc security and bug fix update 09/03/2015 glibc-2.17-78.0.1.el7.x86_64.rpm Oracle Linux 7.1 2.17-78 CVE-2014-6040 / CVE-2014-8121
06/02/2015 GNU C Library 2.21
Critical ELSA-2015-0092 glibc security update 27/01/2015 glibc-2.17-55.0.4.el7_0.5.x86_64.rpm Oracle Linux 7.xx CVE-2015-0235
Moderate ELSA-2014-2023 glibc security and bug fix update 18/12/2014 glibc-2.17-55.0.4.el7_0.3.x86_64.rpm Oracle Linux 7.xx CVE-2014-7817
Important ELSA-2014-1110 glibc security update 29/08/2014 glibc-2.17-55.0.4.el7_0.1.x86_64.rpm Oracle Linux 7.xx CVE-2014-5119 / CVE-2014-0475
07/09/2014 GNU C Library 2.20
ELBA-2014-3051 glibc bug fix update 29/07/2014 glibc-2.17-55.0.4.el7.x86_64.rpm Oracle Linux 7.0 2.17-55
08/02/2014 GNU C Library 2.19
12/08/2013 GNU C Library 2.18
25/02/2012 GNU C Library 2.17

Docker : Deuxième pas ou après « Hello world ».

Attention ceci est mon brouillon avant de faire une belle documentation sur Docker (il y a à boire et à manger). 

Fort de mon expérience du premier POST ( https://www.cyber-neurones.org/2016/04/docker-les-premiers-pas/ ), je vais refaire une installation. J’ai pu voir qu’il me fallait 16 Go pour le « mkfs.btrfs » et j’ai vu que l’installation faisait 2 Go. Je vais donc garder 2 Go de plus, ce qui fait que je vais donc faire une installation à 20 Go.

Capture d’écran 2016-04-14 à 14.51.24

Et voici la nouvelle création sur Virtual Box :

Capture d’écran 2016-04-14 à 10.49.32 Capture d’écran 2016-04-14 à 10.49.57

En bref, on fait l’installation, on fait le pont d’accès, on supprime selinux, on fait l’update du kernel, et pour finir on fait l’installation de docker-engine, et un petit reboot.

Attention pendant l’installation d’Oracle Linux, il faut faire ceci :

Capture d’écran 2016-04-14 à 11.43.43 Capture d’écran 2016-04-14 à 11.51.33

On croise les doigts pour que la création puisse se faire vu que l’on a suffisamment d’espace disque.

[root@localhost ~]# ln -s /docker/ /var/lib/docker
[root@localhost ~]# df
Sys. de fichiers blocs de 1K Utilisé Disponible Uti% Monté sur
/dev/sda2            4278272 2042148    2236124  48% /
devtmpfs              370420       0     370420   0% /dev
tmpfs                 380116       0     380116   0% /dev/shm
tmpfs                 380116    5164     374952   2% /run
tmpfs                 380116       0     380116   0% /sys/fs/cgroup
/dev/sda1           17825792     544   15699712   1% /docker
tmpfs                  76024       0      76024   0% /run/user/0
[root@localhost ~]# df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda2          4,1G    2,0G  2,2G  48% /
devtmpfs           362M       0  362M   0% /dev
tmpfs              372M       0  372M   0% /dev/shm
tmpfs              372M    5,1M  367M   2% /run
tmpfs              372M       0  372M   0% /sys/fs/cgroup
/dev/sda1           17G    544K   15G   1% /docker
tmpfs               75M       0   75M   0% /run/user/0
[root@localhost ~]# yum install docker-engine
Modules complémentaires chargés : ulninfo
Résolution des dépendances
...
[root@localhost ~]# service docker start
Redirecting to /bin/systemctl start  docker.service
[root@localhost ~]# chkconfig docker on
Note : transfert de la requête par « systemctl enable docker.service ».
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

Modification de updated.conf pour ne pas faire de recherche dans Docker .

[root@localhost ~]# cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /var/lib/docker /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"

Roulement de tambour, est-ce que cela a fonctionné ? Ou alors ce n’est toujours pas bon …

[root@localhost ~]# docker run -it --rm --name haproxy-syntax-check haproxy:1.5 haproxy -c -f /usr/local/etc/haproxy/haproxy.cfg
Unable to find image 'haproxy:1.5' locally
1.5: Pulling from library/haproxy
efd26ecc9548: Pull complete 
a3ed95caeb02: Pull complete 
545a1e51c226: Pull complete 
4f8fd706ca7d: Pull complete 
c7652a33f7e1: Pull complete 
Digest: sha256:8970d415c69e563a2729b2d1d123f743daef86757b965686f12b1f840cab13da
Status: Downloaded newer image for haproxy:1.5
haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -c -f /usr/local/etc/haproxy/haproxy.cfg -Ds 
[ALERT] 104/130317 (6) : Could not open configuration file /usr/local/etc/haproxy/haproxy.cfg : No such file or directory
haproxy-systemd-wrapper: exit, haproxy RC=256

La première erreur vient du fait que le fichier /usr/local/etc/haproxy/haproxy.cfg n’est pas présent. Je vais donc prendre un fichier basique sur le net.

[root@localhost ~]# mkdir /usr/local/etc/haproxy

[root@localhost ~]# vi /usr/local/etc/haxproxy/haproxy.cfg
global
        log     /dev/log    local0
        log     /dev/log    local1 notice
        chroot  /var/lib/haproxy
        user    haproxy
        group   haproxy
        maxconn 1024
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull

#
#  Listen on *:80 - Send traffic to the backend named "apache"
#
frontend www-http
    bind *:80
    default_backend apache

#
# Back-end definition.
#
backend apache
    mode http
    balance roundrobin
    server web1 10.0.0.10:8080
    server web2 10.0.0.20:8080
    server web3 10.0.0.30:8080
    server web4 10.0.0.40:8080

[root@localhost ~]# adduser haproxy

On refait le test mais on a toujours la même erreur, car on ne résonne pas en conteneur.

[root@localhost ~]# docker run -it --rm --name haproxy-syntax-check haproxy:1.5 haproxy -c -f /usr/local/etc/haproxy/haproxy.cfg
haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -c -f /usr/local/etc/haproxy/haproxy.cfg -Ds 
[ALERT] 104/131841 (6) : Could not open configuration file /usr/local/etc/haproxy/haproxy.cfg : No such file or directory
haproxy-systemd-wrapper: exit, haproxy RC=256
[root@localhost ~]# cat /usr/local/etc/haproxy/haproxy.cfg
global
        log     /dev/log    local0
        log     /dev/log    local1 notice
        chroot  /var/lib/haproxy
        user    haproxy
        group   haproxy
        maxconn 1024
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull

#
#  Listen on *:80 - Send traffic to the backend named "apache"
#
frontend www-http
    bind *:80
    default_backend apache

#
# Back-end definition.
#
backend apache
    mode http
    balance roundrobin
    server web1 10.0.0.10:8080
    server web2 10.0.0.20:8080
    server web3 10.0.0.30:8080
    server web4 10.0.0.40:8080

[root@localhost ~]# docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
haproxy             1.5                 011e001101c0        19 hours ago        138.2 MB

Si on fait cela de façon sale, on arrive à un début de solution (à noter que le locate fonctionne car je n’ai pas fait de reboot, sinon j’ai interdit le passage dans /docker/ à mlocate):

[root@localhost ~]# locate "/usr/local/sbin/haproxy"
/docker/btrfs/subvolumes/2fe19a89b016b3521418f06de0bec2b54df0933294873630333d88da924a95d4/usr/local/sbin/haproxy
/docker/btrfs/subvolumes/2fe19a89b016b3521418f06de0bec2b54df0933294873630333d88da924a95d4/usr/local/sbin/haproxy-systemd-wrapper
/docker/btrfs/subvolumes/3922cbb258a566dfc4b4c9c0cb183a83b93353e6a66aadfdac080d741d2b59ea/usr/local/sbin/haproxy
/docker/btrfs/subvolumes/3922cbb258a566dfc4b4c9c0cb183a83b93353e6a66aadfdac080d741d2b59ea/usr/local/sbin/haproxy-systemd-wrapper
/docker/btrfs/subvolumes/a57fb85ecf435baab5bc2ceafc70ee00527f6b379dc0c9366c748f1563332376/usr/local/sbin/haproxy
/docker/btrfs/subvolumes/a57fb85ecf435baab5bc2ceafc70ee00527f6b379dc0c9366c748f1563332376/usr/local/sbin/haproxy-systemd-wrapper
/docker/btrfs/subvolumes/f0e08f7411c330363784c15ae4633fe7f14ed6fabf2dc5ffcd3fac1559cb2861/usr/local/sbin/haproxy
/docker/btrfs/subvolumes/f0e08f7411c330363784c15ae4633fe7f14ed6fabf2dc5ffcd3fac1559cb2861/usr/local/sbin/haproxy-systemd-wrapper
[root@localhost ~]# cp /usr/local/etc/haproxy/haproxy.cfg /docker/btrfs/subvolumes/2fe19a89b016b3521418f06de0bec2b54df0933294873630333d88da924a95d4/usr/local/etc/haproxy/.
[root@localhost ~]# cp /usr/local/etc/haproxy/haproxy.cfg /docker/btrfs/subvolumes/3922cbb258a566dfc4b4c9c0cb183a83b93353e6a66aadfdac080d741d2b59ea/usr/local/etc/haproxy/.
[root@localhost ~]# cp /usr/local/etc/haproxy/haproxy.cfg /docker/btrfs/subvolumes/a57fb85ecf435baab5bc2ceafc70ee00527f6b379dc0c9366c748f1563332376/usr/local/etc/haproxy/.
[root@localhost ~]# cp /usr/local/etc/haproxy/haproxy.cfg /docker/btrfs/subvolumes/f0e08f7411c330363784c15ae4633fe7f14ed6fabf2dc5ffcd3fac1559cb2861/usr/local/etc/haproxy/.
[root@localhost ~]# docker run -it --rm --name haproxy-syntax-check haproxy:1.5 haproxy -c -f /usr/local/etc/haproxy/haproxy.cfg
haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -c -f /usr/local/etc/haproxy/haproxy.cfg -Ds 
[ALERT] 104/133221 (6) : parsing [/usr/local/etc/haproxy/haproxy.cfg:5] : cannot find user id for 'haproxy' (0:Success)
[ALERT] 104/133221 (6) : parsing [/usr/local/etc/haproxy/haproxy.cfg:6] : cannot find group id for 'haproxy' (0:Success)
[ALERT] 104/133221 (6) : Error(s) found in configuration file : /usr/local/etc/haproxy/haproxy.cfg
[WARNING] 104/133221 (6) : config : missing timeouts for frontend 'www-http'.
   | While not properly invalid, you will certainly encounter various problems
   | with such a configuration. To fix this, please ensure that all following
   | timeouts are set to a non-zero value: 'client', 'connect', 'server'.
[WARNING] 104/133221 (6) : config : missing timeouts for backend 'apache'.
   | While not properly invalid, you will certainly encounter various problems
   | with such a configuration. To fix this, please ensure that all following
   | timeouts are set to a non-zero value: 'client', 'connect', 'server'.
[ALERT] 104/133221 (6) : Fatal errors found in configuration.
haproxy-systemd-wrapper: exit, haproxy RC=256

La suite au prochain épisode … mais la nouvelle partition nous a permis de régler le premier gros problème. Maintenant il va falloir faire un fichier propre de configuration avec des conteneurs propres. Et il va falloir bien faire la différence entre fichier local et fichier dans un conteneur.

Avant de ce quitter un petit df afin de voir la taille utilisée :

[root@localhost ~]# df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
devtmpfs           353M       0  353M   0% /dev
tmpfs              370M       0  370M   0% /dev/shm
tmpfs              370M    5,0M  365M   2% /run
tmpfs              370M       0  370M   0% /sys/fs/cgroup
/dev/sda2          4,1G    2,0G  2,2G  47% /
/dev/sda1           17G    174M   15G   2% /docker
tmpfs               74M       0   74M   0% /run/user/0

J’ai surement pas mis assez de place dans la partition / …. il va pas falloir compiler 😉 .

En fait rien ne fonctionne car je n’ai pas respecter l’ordre, dans un premier temps il faut faire un Dockerfile c’est ce fichier qui va créer la configuration et les utilisateurs dans l’environnement. Ensuite il faudra faire un build de ce fichier Dockerfile.

[root@localhost ~]# docker build -t my-haproxy .
Sending build context to Docker daemon 13.82 kB
Step 1 : FROM haproxy:1.5
 ---> 011e001101c0
Step 2 : COPY ./haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
 ---> 80428a4d0c7a
Removing intermediate container a32307b4902e
Successfully built 80428a4d0c7a
[root@localhost ~]# cat Dockerfile 
FROM haproxy:1.5
COPY ./haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg

Ensuite on peut indiquer qui est l’auteur et ajouter des utilisateurs …

[root@localhost ~]# docker build -t my-haproxy .
Sending build context to Docker daemon 13.82 kB
Step 1 : FROM haproxy:1.5
 ---> 011e001101c0
Step 2 : MAINTAINER Toto <toto@cyber-neurones.org>
 ---> Running in 581f5cb3d821
 ---> 2afe3bb2588d
Removing intermediate container 581f5cb3d821
Step 3 : COPY ./haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
 ---> 37b23cd1bd7f
Removing intermediate container 40bf1ce4608a
Step 4 : RUN groupadd -r haproxy && useradd -r -g haproxy haproxy
 ---> Running in 06b262433902
 ---> 73e7842bb76b
Removing intermediate container 06b262433902
Successfully built 73e7842bb76b
[root@localhost ~]# cat Dockerfile 
FROM haproxy:1.5
MAINTAINER Toto <toto@cyber-neurones.org>
COPY ./haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
RUN groupadd -r haproxy && useradd -r -g haproxy haproxy

Il faut penser à faire ceci si vous avez fait n’importe quoi avant

[root@localhost ~]# docker rmi $(docker images -q)

L’autre solution c’est l’utilisation de la commande -v à la place de -f (par exemple : -v /usr/local/etc/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg c.a.d. from:to )

Et un dernier pour finir encore un peu plus complexe :

FROM haproxy:1.5
MAINTAINER Toto <toto@cyber-neurones.org>
COPY ./haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg 
ENV HAPROXY_USER haproxy
RUN groupadd --system ${HAPROXY_USER} && \
  useradd --system --gid ${HAPROXY_USER} ${HAPROXY_USER} && \
  mkdir --parents /var/lib/${HAPROXY_USER} && \
  chown -R ${HAPROXY_USER}:${HAPROXY_USER} /var/lib/${HAPROXY_USER}
CMD ["haproxy", "-db", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]

Pour la suite je vais aussi ajouter la commande netstat afin de pouvoir vérifier si le port est bien en écoute.

[root@localhost ~]# yum install net-tools
[root@localhost ~]# netstat -at
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat       
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 localhost.localdoma:ssh 192.168.1.10:62127      ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN  

Je vais aussi mettre la commande lsof afin de mieux étudier le système .

[root@localhost ~]# yum install lsof