Compare commits

...

29 Commits

Author SHA1 Message Date
e99de9cdff [UDPATE] - OL8 - repo 2023-04-13 16:15:46 +02:00
61ff6ac0b5 [UPDATE] - chmod 2022-10-28 14:04:43 +02:00
660c9d13ff [UPDATE] - link 2022-10-28 10:07:13 +02:00
7129a0849a [UPDATE] - backup restore docker images 2022-10-25 15:06:19 +02:00
661f3808ec [UPDATE] - correction + link 2022-10-25 14:17:28 +02:00
9c52e84f7e [UPDATE] - README 2022-10-21 14:35:50 +02:00
f3a9e27e70 [UPDATE] - hlep 2022-10-21 14:17:01 +02:00
3e60e83d74 [UPDATE] - repo change : latest baseos 2022-10-21 13:20:06 +02:00
1bfbfcf4a6 [UPDATE] - esl compil + paquet + EPEL + codeready 2022-10-20 23:57:14 +02:00
47b2d87487 [UPDATE] - diff oracle/centos 2022-10-20 17:31:15 +02:00
66d98e5400 [UPADTE] - compile esl porduit success git status ! 2022-10-20 17:09:11 +02:00
d4a41cf128 [UPDATE] - oracle 8.X 2022-10-20 11:36:40 +02:00
862f52fb53 [UPDATE] - add pdf doc 2021-12-13 10:38:23 +01:00
b9e3a01c81 [UPDATE] - add pdf doc 2021-12-13 10:37:47 +01:00
bec878f675 [UPDATE] - test full 2021-12-12 18:03:13 +01:00
30b3013daf [UPDATE] - add README & print screen 2021-12-12 15:18:16 +01:00
00465d05bb [UPDATE] - add README & print screen 2021-12-12 15:16:14 +01:00
Guillaume Astier
e814fd3c82 [UPDATE] - full test 2021-12-12 13:59:57 +01:00
Guillaume Astier
c2f29a05fd [ADD] - color :) and ps 2021-12-11 11:46:52 +01:00
Guillaume Astier
e3d3803679 [ADD] - gen auto script 2021-12-11 11:39:32 +01:00
Guillaume Astier
d096f731cc [UPADTE] - readme 2021-12-11 11:34:41 +01:00
Guillaume Astier
8e877707da [UPADTE] - readme 2021-12-11 11:32:27 +01:00
Guillaume Astier
0e45064031 [UPADTE] - readme 2021-12-11 11:29:38 +01:00
Guillaume Astier
b1fb3753ad [UPDATE] - test from scratch 2021-12-10 17:04:11 +01:00
Guillaume Astier
a042dea4fe [UPADTE] - refact code 2021-12-10 16:25:55 +01:00
Guillaume Astier
b779db2d6d [UPADTE] - add generate Dockerfile image 2021-12-10 15:18:37 +01:00
Guillaume Astier
89afdd0117 [UPDATE] - exec generate_env.sh 2021-12-10 14:24:32 +01:00
Guillaume Astier
4dacaf53ff [UPDATE] - add generate and docker compose 2021-12-10 14:24:04 +01:00
Guillaume Astier
b6ab8110d2 [UPDATE] - define.conf 2021-12-10 13:27:48 +01:00
38 changed files with 923 additions and 136 deletions

View File

@ -1 +1,2 @@
./data
./data.old

33
.env
View File

@ -1,2 +1,31 @@
CentOsVersion=7.9.2009
Run=sync.sh
#####################################
# Repository generator
# Version of image
RepoVers=2
# Centos Version
#CentOsVersion=centos:7.9.2009
CentOsVersion=oraclelinux:8.7
Cible=oraclelinux
VersionCible=8.7
PackageManager=dnf
# Sync repo script
Run=/usr/local/bin/sync.sh
# Sync arg script
# * del : delete all local repo
# * debug : only start docker instance
# * empty : sync whithout delete
RunArg=del
#####################################
# Esl compilator
# Version of image
GenVers=2
# Programme local directory
ProgrammeDir=/data/GIT/ESL_PRODUIT
# Repositories Directory
RepoDir=./data/repo
# If auto gen script esl Else leave empty and only start docker instance
GenScript=/usr/local/bin/gen.sh

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
Dockerfile
data/
docker-compose.yml
cible
images

View File

@ -1,25 +0,0 @@
FROM centos:${CentOsVersion}
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
RUN yum install yum-utils createrepo vim -y
RUN yum install epel-release -y
COPY ./bin/sync.sh /bin/sync.sh
RUN chmod 755 /bin/sync.sh
COPY ./bin/empty.sh /bin/empty.sh
RUN chmod 755 /bin/empty.sh
#CMD ["/usr/sbin/init"]
#CMD ["/bin/sync.sh"]
CMD ["/bin/${Run}"]

BIN
ESL-devenv.pdf Normal file

Binary file not shown.

163
README.md
View File

@ -1,61 +1,146 @@
# Repo sync docker for Centos 7.9.2009
# E.S.L. Docker environement Repo sync & Dev
## Struct
```
.
├── bin
│   └── sync.sh
├── data
│   ├── log
│   └── repo
├── docker-compose.yml
└── Dockerfile
└── README.md
4 directories, 4 files
|_> bin
|   |_> common.fct
|   |_> empty.sh
|   |_> esl.fct
|   |_> gen.sh
|   |_> repo.sh
|   |_> run.sh
|_> cible -> /data/GIT/ESL_PRODUIT-ol8/
|_> data
|   |_> cible
|   |_> log
|   |   |_> repo
|   |_> repo
|   |_> EPEL
|   |_> OLD
|   |_> OracleLinux
|_> define.conf -> .env
|_> doc
|   |_> 0_define.png
|   |_> 1_help.png
|   |_> 2_image.png
|   |_> 3_image-gen.png
|   |_> 4_image-repo.png
|   |_> 5_repo.png
|   |_> 6_gen-connect.png
|   |_> 7_gen.png
|   |_> 8_all.png
|   |_> ESL-devenv.pdf
|   |_> tree.png
|_> docker-compose.yml
|_> Dockerfile
|_> generate_env.sh
|_> README.md
|_> Template
|_> docker-compose.yml.gen
|_> docker-compose.yml.repo
|_> Dockerfile.gen.centos
|_> Dockerfile.gen.oraclelinux
|_> Dockerfile.repo
|_> Dockerfile.repo.centos
|_> Dockerfile.repo.oraclelinux
|_> function
11 directories, 31 files
```
## Help
```
devbase-astierg@[navalgroup-astierg]- ~ : $ /data/DOCKER/centos79repo/generate_env.sh
./generate_env.sh [image/image-gen/image-repo/repo/gen/run-repo/run-gen]
* image : Generate docker images
* image-gen : Generate docker image for esl compilator
* image-repo : Generate docker image for repository sync
* repo : start docker compose and generate repositories
* gen : start docker compose and generarte esl
* run-gen : Connect and run bash on instance gen
* run-repo : Connect and run bash on instance repo
```
## Use
## Config File
### 1./ Build Docker image : c7repo
```
guillaume@virgile:~/centos79repo/$ docker build . -t c7repo
Sending build context to Docker daemon 7.68kB
Step 1/10 : FROM centos:7.9.2009
---> eeb6ee3f44bd
[...]
Step 10/10 : CMD ["/bin/sync.sh"]
---> Running in 8ea78a88d33d
Removing intermediate container 8ea78a88d33d
---> be87c9d3dc38
Successfully built be87c9d3dc38
Successfully tagged c7repo:latest
```
devbase-astierg@[navalgroup-astierg]- ~ : $ cat /data/DOCKER/centos79repo/define.conf
### 2./ Start sync with docker compose
#####################################
# Repository generator
```
guillaume@virgile:~/centos79repo$ docker-compose up -d
[+] Running 1/1
⠿ Container centos79repo-c7repo-1 Started
# Version of image
RepoVers=1
# Centos Version
#CentOsVersion=centos:7.9.2009
CentOsVersion=oraclelinux:8.6
Cible=oraclelinux
VersionCible=8.6
PackageManager=dnf
# Sync repo script
Run=/usr/local/bin/sync.sh
# Sync arg script
# * del : delete all local repo
# * debug : only start docker instance
# * empty : sync whithout delete
RunArg=del
#####################################
# Esl compilator
# Version of image
GenVers=2
# Programme local directory
ProgrammeDir=/data/GIT/ESL_PRODUIT
# Repositories Directory
RepoDir=./data/repo
# If auto gen script esl Else leave empty and only start docker instance
GenScript=/usr/local/bin/gen.sh
```
### 3./ Wait ... for a long time :)
## Debug / Function
while the process or the docker instance c7repo is/are running the download is running too ...
```
guillaume@virgile:~/centos79repo$ ps axf | grep sync.sh| grep -v grep
936675 ? Ss 0:00 \_ /bin/bash /bin/sync.sh
guillaume@virgile:~/centos79repo$ docker ps | grep c7re
44b350ff0c9d c7repo "/bin/sync.sh" About a minute ago Up About a minute centos79repo-c7repo-1
devbase-astierg@[navalgroup-astierg]- /data/DOCKER/ESL-devenv : $ source Template/function
devbase-astierg@[navalgroup-astierg]- /data/DOCKER/ESL-devenv : $ cat Template/function | grep '()' | cut -d"(" -f1
TestEnv
Res
help
DeleteFile
DockerConnect
DockerPs
DockerStop
DeleteImg
DockerGen
DockerComposeRun
GenAll
```
### 4./ Check the dl
## cible
To create an ESL you have to make a symbolic link of the root project in cible in the root path of ESL-devenv
```
[14:17:48]─[devbase-astierg@astierg-tools]─[~/data/git/naval/ESL-devenv] ln -s /data/GIT/ESL_PRODUIT-ol8/ ./cible
```
## Repo oracle
The repository list is:
* EPEL
* baseos (latest)
* codeready
* appstream
Size : ~ 33Go
You have log in ./data/log/ or each repositories (base, epel, extras, updates)
The Repositories are in ./data/repo/

1
README.pdf Symbolic link
View File

@ -0,0 +1 @@
ESL-devenv.pdf

View File

@ -0,0 +1,21 @@
#FROM centos:centos7
FROM ${Cible}:${VersionCible}
LABEL maintainer='Guillaume Astier Ruiz'
ENV os="${Cible}"
ENV osversion="${VersionCible}"
ENV ESL-TOOLS=repo
ENV TERM=xterm
RUN ${PackageManager} update -y
RUN ${PackageManager} install -y perl perl-Business-ISBN perl-Business-ISBN-Data perl-Carp perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-Data-Dumper perl-Data-OptList perl-Digest perl-Digest-MD5 perl-Encode perl-Encode-Locale perl-Error perl-Exporter perl-ExtUtils-Install perl-ExtUtils-MakeMaker perl-ExtUtils-Manifest perl-ExtUtils-ParseXS perl-File-Listing perl-File-Path perl-File-Temp perl-Filter perl-Font-AFM perl-Getopt-Long perl-HTML-Format perl-HTML-Parser perl-HTML-Tagset perl-HTML-Tree perl-HTTP-Cookies perl-HTTP-Daemon perl-HTTP-Date perl-HTTP-Message perl-HTTP-Negotiate perl-HTTP-Tiny perl-IO-Compress perl-IO-HTML perl-IO-Socket-IP perl-IO-Socket-SSL perl-IO-stringy perl-LWP-MediaTypes perl-Module-Implementation perl-Module-Runtime perl-Mozilla-CA perl-Net-HTTP perl-Net-LibIDN perl-Net-SSLeay perl-Package-Generator perl-PadWalker perl-Params-Util perl-Params-Validate perl-PathTools perl-Pod-Escapes perl-Pod-Perldoc perl-Pod-Simple perl-Pod-Usage perl-Scalar-List-Utils perl-Socket perl-Storable perl-Sub-Exporter perl-Sub-Install perl-TermReadKey perl-Test-Harness perl-Text-ParseWords perl-Thread-Queue perl-Time-HiRes perl-Time-Local perl-TimeDate perl-Tk perl-Try-Tiny perl-URI perl-WWW-RobotRules perl-XML-Catalog perl-XML-DOM perl-XML-Dumper perl-XML-Filter-BufferText perl-XML-Grove perl-XML-Handler-YAWriter perl-XML-LibXML perl-XML-LibXSLT perl-XML-NamespaceSupport perl-XML-Parser perl-XML-RegExp perl-XML-SAX perl-XML-SAX-Base perl-XML-SAX-Writer perl-XML-Simple perl-XML-TokeParser perl-XML-TreeBuilder perl-XML-Twig perl-XML-Writer perl-XML-XPath perl-XML-XPathEngine perl-constant perl-devel perl-libs perl-libwww-perl perl-libxml-perl perl-macros perl-parent perl-podlators perl-srpm-macros perl-threads perl-threads-shared
RUN ${PackageManager} install -y basesystem binutils bzip2 cpp createrepo dejavu-fonts-common dejavu-sans-fonts deltarpm dwz elfutils elfutils-devel elfutils-libelf-devel fontconfig fontpackages-filesystem gcc gdb gdbm-devel genisoimage glibc-devel glibc-headers gpm-libs groff-base keyutils-libs-devel libX11 libX11-common libXau libXft libXrender libcom_err-devel libdb-devel libjpeg-turbo libmpc libselinux-devel libsepol-devel libusal libverto-devel libxcb libxml2-python lm_sensors-devel lm_sensors-libs mailcap mpfr ncurses-base net-tools openssl-devel pcre-devel popt-devel pyparsing python-deltarpm python-gobject-base python-srpm-macros redhat-rpm-config rpm-build rpm-devel rsync strace tcp_wrappers-devel tree unzip vim-common vim-enhanced vim-filesystem xz-devel zip zlib-devel nginx openssh-clients
RUN ${PackageManager} install -y net-snmp
COPY ./bin/run.sh /usr/local/bin/run.sh
RUN chmod 777 /usr/local/bin/run.sh
CMD /usr/local/bin/run.sh ${GenScript}

View File

@ -0,0 +1,39 @@
#FROM centos:centos7
FROM ${Cible}:${VersionCible}
LABEL maintainer='Guillaume Astier Ruiz'
ENV os="${Cible}"
ENV osversion="${VersionCible}"
ENV ESL-TOOLS=repo
ENV TERM=xterm
RUN ${PackageManager} update -y
RUN ${PackageManager} install -y perl perl-Carp perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-Data-Dumper perl-Data-OptList perl-Digest perl-Digest-MD5 perl-Encode perl-Encode-Locale perl-Error perl-Exporter perl-ExtUtils-Install perl-ExtUtils-MakeMaker perl-ExtUtils-Manifest perl-ExtUtils-ParseXS perl-File-Listing perl-File-Path perl-File-Temp perl-Filter perl-Getopt-Long perl-HTML-Parser perl-HTML-Tagset perl-HTTP-Cookies perl-HTTP-Date perl-HTTP-Message perl-HTTP-Negotiate perl-HTTP-Tiny perl-IO-Compress perl-IO-HTML perl-IO-Socket-IP perl-IO-Socket-SSL perl-LWP-MediaTypes perl-Module-Runtime perl-Mozilla-CA perl-Net-HTTP perl-Net-SSLeay perl-Package-Generator perl-Params-Util perl-PathTools perl-Pod-Escapes perl-Pod-Perldoc perl-Pod-Simple perl-Pod-Usage perl-Scalar-List-Utils perl-Socket perl-Storable perl-Sub-Exporter perl-Sub-Install perl-TermReadKey perl-Test-Harness perl-Text-ParseWords perl-Thread-Queue perl-Time-HiRes perl-Time-Local perl-TimeDate perl-Tk perl-Try-Tiny perl-URI perl-WWW-RobotRules perl-XML-Catalog perl-XML-LibXML perl-XML-NamespaceSupport perl-XML-Parser perl-XML-SAX perl-XML-SAX-Base perl-XML-Simple perl-XML-TokeParser perl-XML-XPath perl-constant perl-devel perl-libs perl-libwww-perl perl-libxml-perl perl-macros perl-parent perl-podlators perl-srpm-macros perl-threads perl-threads-shared
RUN ${PackageManager} install -y basesystem binutils bzip2 cpp createrepo dejavu-fonts-common dejavu-sans-fonts dwz elfutils elfutils-devel elfutils-libelf-devel fontconfig fontpackages-filesystem gcc gdb gdbm-devel genisoimage glibc-devel glibc-headers gpm-libs groff-base keyutils-libs-devel libX11 libX11-common libXau libXft libXrender libcom_err-devel libdb-devel libjpeg-turbo libmpc libselinux-devel libsepol-devel libusal libverto-devel libxcb lm_sensors-devel lm_sensors-libs mailcap mpfr ncurses-base net-tools openssl-devel pcre-devel popt-devel python3 python-srpm-macros redhat-rpm-config rpm-build rpm-devel rsync strace tree unzip vim-common vim-enhanced vim-filesystem xz-devel zip zlib-devel nginx openssh-clients
RUN ${PackageManager} install -y net-snmp
RUN ${PackageManager} install epel-release -y
RUN ${PackageManager} install screen modulemd-tools gettext net-snmp-devel -y
RUN mkdir /nfs
RUN ln -s /data/repo /nfs/distributions
COPY ./bin/ /usr/local/bin/
RUN chmod 777 /usr/local/bin/run.sh
RUN groupadd esl -g 1000
#RUN useradd -s /bin/bash -g 1000 -u 1000 -p "$(/usr/bin/openssl passwd -1 esl)" esl
RUN useradd -s /bin/bash -g 1000 -u 1000 esl
RUN mkdir /data
RUN mkdir -p /tmp/log/
RUN chown -R esl:esl /data
RUN chown -R esl:esl /tmp/log
RUN mkdir -p /nfs/DEVBASE/ESL/
RUN ln -s /data/repo /nfs/DEVBASE/ESL/distributions
USER esl
RUN echo /usr/local/bin/run.sh ${GenScript}
CMD /usr/local/bin/run.sh ${GenScript}

38
Template/Dockerfile.repo Normal file
View File

@ -0,0 +1,38 @@
#FROM centos:${CentOsVersion}
#FROM ${CentOsVersion}
FROM ${Cible}:${VersionCible}
LABEL maintainer='Guillaume Astier Ruiz'
ENV os="${Cible}"
ENV osversion="${VersionCible}"
ENV ESL-TOOLS=repo
ENV TERM=xterm
RUN ${PackageManager} update -y
RUN ${PackageManager} install yum-utils createrepo vim wget -y
RUN ${PackageManager} install epel-release -y
RUN ${PackageManager} install screen -y
#COPY ./bin/repo.sh /usr/local/bin/repo.sh
COPY ./bin/ /usr/local/bin/
#RUN chmod 755 /usr/local/bin/repo.sh
RUN chmod 755 /usr/local/bin/*
#COPY ./bin/empty.sh /usr/local/bin/empty.sh
#RUN chmod 755 /usr/local/bin/empty.sh
RUN groupadd esl -g 1000
#RUN useradd -s /bin/bash -g 1000 -u 1000 -p "$(/usr/bin/openssl passwd -1 esl)" esl
RUN useradd -s /bin/bash -g 1000 -u 1000 esl
RUN mkdir /data
RUN mkdir -p /tmp/log/
RUN chown -R esl:esl /data
RUN chown -R esl:esl /tmp/log
USER esl
CMD ${Run} ${RunArg}
#ENTRYPOINT [ "${Run}" "${RunArg}" ]

View File

@ -0,0 +1,38 @@
#FROM centos:${CentOsVersion}
#FROM ${CentOsVersion}
FROM ${Cible}:${VersionCible}
LABEL maintainer='Guillaume Astier Ruiz'
ENV os="${Cible}"
ENV osversion="${VersionCible}"
ENV ESL-TOOLS=repo
ENV TERM=xterm
RUN ${PackageManager} update -y
RUN ${PackageManager} install yum-utils createrepo vim wget -y
RUN ${PackageManager} install epel-release -y
RUN ${PackageManager} install screen -y
#COPY ./bin/repo.sh /usr/local/bin/repo.sh
COPY ./bin/ /usr/local/bin/
#RUN chmod 755 /usr/local/bin/repo.sh
RUN chmod -R 755 /usr/local/bin/
#COPY ./bin/empty.sh /usr/local/bin/empty.sh
#RUN chmod 755 /usr/local/bin/empty.sh
RUN groupadd esl -g 1000
#RUN useradd -s /bin/bash -g 1000 -u 1000 -p "$(/usr/bin/openssl passwd -1 esl)" esl
RUN useradd -s /bin/bash -g 1000 -u 1000 esl
RUN mkdir /data
RUN mkdir -p /tmp/log/
RUN chown -R esl:esl /data
RUN chown -R esl:esl /tmp/log
USER esl
CMD ${Run} ${RunArg}
#ENTRYPOINT [ "${Run}" "${RunArg}" ]

View File

@ -0,0 +1,42 @@
#FROM centos:${CentOsVersion}
#FROM ${CentOsVersion}
FROM ${Cible}:${VersionCible}
LABEL maintainer='Guillaume Astier Ruiz'
ENV os="${Cible}"
ENV osversion="${VersionCible}"
ENV ESL-TOOLS=repo
ENV TERM=xterm
RUN ${PackageManager} update -y
RUN ${PackageManager} install yum-utils createrepo vim wget -y
RUN ${PackageManager} install epel-release -y
RUN ${PackageManager} install screen -y
#COPY ./bin/repo.sh /usr/local/bin/repo.sh
RUN echo COPY
COPY ./bin/ /usr/local/bin/
#RUN chmod 755 /usr/local/bin/repo.sh
RUN chmod -R 755 /usr/local/bin/
#COPY ./bin/empty.sh /usr/local/bin/empty.sh
#RUN chmod 755 /usr/local/bin/empty.sh
RUN groupadd esl -g 1000
#RUN useradd -s /bin/bash -g 1000 -u 1000 -p "$(/usr/bin/openssl passwd -1 esl)" esl
RUN useradd -s /bin/bash -g 1000 -u 1000 esl
RUN mkdir /data
RUN mkdir -p /tmp/log/
RUN chown -R esl:esl /data
RUN chown -R esl:esl /tmp/log
RUN mkdir -p /nfs/DEVBASE/ESL/
RUN chown -R esl:esl /nfs
RUN ln -s /data/repo /nfs/DEVBASE/ESL/distributions
USER esl
CMD ${Run} ${RunArg}
#ENTRYPOINT [ "${Run}" "${RunArg}" ]

View File

@ -0,0 +1,11 @@
version: '2'
services:
esl-gen:
image: esl-gen:${GenVers}
volumes:
- ${ProgrammeDir}:/data
- ${RepoDir}:/data/distributions
- ./bin:/usr/local/bin

View File

@ -0,0 +1,11 @@
version: '2'
services:
esl-repo:
image: esl-repo:${RepoVers}
volumes:
- ./data:/data
- ./data/log:/tmp/log
- ./bin:/usr/local/bin

188
Template/function Executable file
View File

@ -0,0 +1,188 @@
#!/bin/bash
TestEnv() {
Check=$(which $1 2> /dev/null)
if [[ -z ${Check} ]]
then
echo "$1 not found ... "
exit 1
fi
}
Res() {
if [[ $1 -eq 0 ]]
then
echo "$(tput setaf 2)OK$(tput sgr0)"
else
echo "$(tput setaf 1)FAILED$(tput sgr0)"
fi
}
LinkESL() {
while [[ ! -d ${DirLink} ]]
do
read -p "Absolute path of ESL Programe or ESL Product : " DirLink
done
[[ -L $(dirname $0)/cible ]] && rm -f $(dirname $0)/cible &> /dev/null
echo -n "ESL symbolic link : "
ln -s ${DirLink} $(dirname $0)/cible &> /dev/null && echo OK || echo FAILED
}
help () {
echo "
$0 [image-gen/image-repo/link/repo/gen/run-repo/run-gen/import-image/save-image]
* $(tput setaf 3)image-gen $(tput sgr0): Generate docker image for esl compilator
* $(tput setaf 3)image-repo $(tput sgr0): Generate docker image for repository sync
* $(tput setaf 5)link $(tput sgr0): Create symbolic link to ESL Programe or Porduct
* $(tput setaf 4)repo $(tput sgr0): start docker compose and generate repositories
* $(tput setaf 4)gen $(tput sgr0): start docker compose and generarte esl
* $(tput setaf 2)run-gen $(tput sgr0): Connect and run bash on instance gen
* $(tput setaf 2)run-repo $(tput sgr0): Connect and run bash on instance repo
* $(tput setaf 6)import-image $(tput sgr0): Import last backuped docker image in ./images/
* $(tput setaf 6)save-image $(tput sgr0): backup docker image in ./images/
"
exit
}
DeleteFile() {
echo -n "Delete Dockerfile ... : "
[[ -f ${Wai}/Dockerfile ]] && rm Dockerfile || true
Res $?
}
DockerConnect() {
User=esl
[[ "$2" == "root" ]] && User='root'
Inst=$(docker ps|grep "esl-$1" | awk '{print $NF}')
[[ -L $(realpath $(dirname $0))/cible ]] && Cible="-v $(realpath $(dirname $0))/cible:/data/cible"
[[ -z "${Inst}" ]] && docker run -ti -v $(realpath $(dirname $0))/data:/data -v $(realpath $(dirname $0))/data/log:/log ${Cible} --hostname $1 -u ${User} esl\-${1}:2 bash || docker exec -ti -u $User ${Inst} bash
}
DockerPs() {
docker ps|grep $(dirname .)_esl\-$1 | awk '{print $NF}'
}
DockerStop() {
for DockerRun in $(docker ps|grep esl\- | awk '{print $NF}')
do
echo -n "Stop $DockerRun ... :"
docker stop $DockerRun &> /dev/null
Res $?
done
}
DeleteImg () {
DeleteFile
echo -n "Delte old images $1 ... : "
for var in $(docker image ls| grep "esl-$1" | awk '{print $3}'); do yes | docker image rm $var --force; done &> /dev/null
Res $?
}
DockerGen() {
DeleteImg $1
echo -n "generate Dockerfile $1 $Cible... : "
source define.conf
while read line
do
if [[ ! -z $(echo $line | grep '\$') ]]
then
eval echo ${line} | sed "s#\[#\[\'#g" | sed "s#\]#\'\]#g"
else
echo $line
fi
done < Template/Dockerfile.${1}.${Cible} > Dockerfile
Res $?
echo -n "Generate $1 Docker image ... : "
docker build --no-cache . -t esl-$1:${GenVers} 2>&1 | tee /tmp/BuildDocker-${1}.log &> /dev/null
Res $?
echo "
------ Log Compil -----------
/tmp/BuildDocker-${1}.log
-----------------------------
"
}
DockerComposeRun () {
echo "
------ Log Compil -----------
/tmp/GetRepo-${1}.log
-----------------------------
"
[[ -f ${Wai}/docker-compose.yml ]] && rm -f ${Wai}/docker-compose.yml
[[ "$2" == "Print" ]] && Print="-d" || Print=""
cp ${Wai}/Template/docker-compose.yml.$1 ${Wai}/docker-compose.yml
echo "Log is : log/${1} - use tail -f ./log/$1"
[[ -L $(realpath $(dirname $0))/cible ]] && Cible="-v $(realpath $(dirname $0))/cible:/data/cible"
docker run -ti -v $(realpath $(dirname $0))/data:/data -v $(realpath $(dirname $0))/data/log:/tmp/log ${Cible} -u esl --hostname $1 esl\-${1}:2 /usr/local/bin/${1}.sh
#yes | docker-compose up ${Print} --remove-orphans 1>&1 | tee /tmp/RunDocker-${1}.log &> /dev/null
##yes | docker-compose up ${Print} --remove-orphans
Res $?
echo "
--------- Log Esl -----------
/tmp/RunDocker-${1}.log
-----------------------------
"
}
DockerSave () {
for Image in $(docker image ls | grep -E "^esl-repo|^esl-gen" | awk '{print $1":"$2}')
do
EslImage=$(echo $Image | cut -d":" -f1)
EslImageVersion=$(echo $Image | cut -d":" -f2)
echo -ne "Save $Image : "
docker save $Image | gzip > $(dirname $0)/images/${EslImageVersion}-$(date +%Y%m%d)_$(echo $Image | sed 's/:/-/g').gz
[[ "$?" -eq 0 ]] && echo OK || echo FAILED
done
}
DockerImport () {
if [[ $(ls -1 images | grep "esl-"| wc -l) -eq 0 ]]
then
echo "Nothing todo ..."
else
for Type in repo gen
do
GetImage=$(ls -1 images | grep $Type |sort -r -n -t"-" -k1,2 | head -n1)
echo -ne "Import $GetImage : "
zcat images/$GetImage | docker load &> /dev/null
[[ "$?" -eq 0 ]] && echo OK || echo FAILED
done
fi
}
#GenAll () {
# DockerGen gen
# DockerGen repo
#}

79
bin/common.fct Normal file
View File

@ -0,0 +1,79 @@
#!/bin/bash
MoveCurr(){
cpt=$1
if [[ $cpt -ge 4 ]]
then
cpt=1
else
((cpt++))
fi
case $1 in
1) echo '/' $cpt;;
2) echo '-' $cpt;;
3) echo '\' $cpt;;
4) echo '|' $cpt;;
esac
}
Download (){
Rep=$1
RepoName=$2
cpt=1
#tput ed
tput sc
while [[ ! -z $(ps axf| grep reposync | grep -v grep) ]]
do
read -r Curr cpt <<< $(MoveCurr $cpt)
Orpm=${Rpm}
OrpmName=$(basename ${Orpm:-/}| sed 's/-[0-9]/|/g' | cut -d"|" -f1)
Rpm=$(find $Rep -type f -name "*.rpm" -printf "%T@ %p\n" | sort -n | cut -d' ' -f 2- | tail -n 1)
RpmName=$(basename ${Rpm:-/}| sed 's/-[0-9]/|/g' | cut -d"|" -f1)
Txt="{$RepoName} Downloading ${RpmName:-/}"
if [[ "${RpmName}" == "$OrpmName" ]] && [[ "$RpmName" != "/" ]]
then
RpmSize=$(du -s $Rpm|awk '{print $1}')
OrpmSize=$(du -s $Orpm|awk '{print $1}')
[[ "$RpmSize" -eq "$OrpmSize" ]] && Txt="{$RepoName} Sync - RPM Signature"
fi
[[ "$RpmName" == "/" ]] && Txt="{$RepoName} Syncing metadata"
tput rc; tput el
echo -ne "\r[${Curr}] - $Txt\r"
sleep 0.5
done
}
Action() {
echo -n "$1 : "
shift
$* &> /dev/null
if [[ $? -eq 0 ]]
then
echo "$(tput setaf 2)OK$(tput sgr0)"
else
echo "$(tput setaf 1)FAILED$(tput sgr0)"
fi
Tot=$((Tot+$1))
}
WhileTrue() {
while true
do
sleep 1
done
}

80
bin/esl.fct Normal file
View File

@ -0,0 +1,80 @@
#!/bin/bash
function centos() {
Repo=epel
Action "Get epel" reposync -l --newest-only --delete --downloadcomps --download-metadata --repoid=${Repo} --download_path=/data/repo/ 2>&1 | tee /data/log/get_${Repo}.log &> /dev/null
Action "Move SeanAps EPEL : " mkdir -p /data/repo/EPEL/el7/x86_64/Packages ; for var in $(find /data/repo/epel/ -name *rpm -type f) ; do mv $var /data/repo/EPEL/el7/x86_64/Packages; done
Action "Create repo epel : " cd /data/repo/EPEL/el7/x86_64/ && createrepo -v /data/repo/EPEL/el7/x86_64/ 2>&1 | tee /data/log/CreateRepo_${Repo}.log &> /dev/null
Action "Get OS BASE : " mkdir -p /data/repo/tmp/ && cd /data/repo/tmp/ && wget -r -p -k http://mirror.centos.org/centos/7.9.2009/os/x86_64/ 2>&1 | tee /data/log/get_base.log
for var in $(find .| grep index.html) ;do rm -f $var;done
mkdir -p /data/repo/CentOS/7.9/os/
mv /data/repo/tmp/mirror.centos.org/centos/7.9.2009/os/x86_64/ /data/repo/CentOS/7.9/os/
rm -rf /data/repo/tmp/*
Action "Get OS updates : " cd /data/repo/tmp/ && wget -r -p -k http://mirror.centos.org/centos/7.9.2009/updates/x86_64/ 2>&1 | tee /data/log/get_updates.log &> /dev/null
}
RunScreen (){
Name=$1
shift
Data="$*"
screen -dmS $Name ${Data}
}
LinkEpel() {
[[ ! -L $2 ]] && ln -s ol${Majeur}_developer_EPEL x86_64
}
function oraclelinux () {
Rand=repo${RANDOM}
Majeur=$(echo ${osversion} | cut -d"." -f1)
Mineur=$(echo ${osversion} | cut -d"." -f2)
test -L /data/repo/EPEL/x86_64 && Action "Delete Old Link" rm /data/repo/EPEL/x86_64
Action "Create Dir ${osversion}" mkdir -p /data/repo/EPEL/
RunScreen EPEL dnf reposync -g --newest-only --exclude='*.src' -p /data/repo/EPEL/ol${Majeur} --download-metadata --repoid=ol${Majeur}_developer_EPEL
Download /data/repo/EPEL/ EPEL
Action "Get in ${osversion} EPEL" cd /data/repo/EPEL/ol${Majeur}
Action "Link SeaNaps environement EPEL" LinkEpel ol${Majeur}_developer_EPEL x86_64
test -L /data/repo/OracleLinux/OL8/codeready/builder/x86_64 && Action "Delete Old Link" rm /data/repo/OracleLinux/OL8/codeready/builder/x86_64
Action "Create Dir ${osversion}" mkdir -p /data/repo/OracleLinux/OL8/codeready/builder/
RunScreen codeready dnf reposync -g --newest-only --exclude='*.src' -p /data/repo/OracleLinux/OL8/codeready/builder --download-metadata --repoid=ol${Majeur}_codeready_builder
Download /data/repo/OracleLinux/OL8 codeready
Action "Get in ${osversion} codeready" cd /data/repo/OracleLinux/OL8/codeready/builder
Action "Link SeaNaps environement codeready" ln -s ol${Majeur}_codeready_builder x86_64
test -L /data/repo/OracleLinux/${osversion}/appstream/x86_64 && Action "Delete Old Link" rm /data/repo/OracleLinux/${osversion}/appstream/x86_64
Action "Create Dir ${osversion}" mkdir -p /data/repo/OracleLinux/${osversion}/appstream/
RunScreen appstream dnf reposync -g --newest-only --exclude='*.src' -p /data/repo/OracleLinux/${osversion}/appstream/ --download-metadata --repoid=ol${Majeur}_appstream
Download /data/repo/OracleLinux/${osversion}/appstream/ appstream
Action "Get in ${osversion} appstream" cd /data/repo/OracleLinux/${osversion}/appstream/
Action "Link SeaNaps environement appstream" ln -s ol${Majeur}_appstream x86_64
test -L /data/repo/OracleLinux/${osversion}/baseos/latest/x86_64 && Action "Delete Old Link" rm /data/repo/OracleLinux/${osversion}/baseos/latest/x86_64
Action "Create Dir ${osversion}" mkdir -p /data/repo/OracleLinux/${osversion}/baseos/latest
RunScreen baseos dnf reposync -g --newest-only --exclude='*.src' -p /data/repo/OracleLinux/${osversion}/baseos/latest --download-metadata --repoid=ol${Majeur}_baseos_latest
#RunScreen baseos dnf reposync -g --newest-only --exclude='*.src' -p /data/repo/OracleLinux/${osversion}/baseos/latest --download-metadata --repoid=ol${Majeur}_u${Mineur}_baseos_base
Download /data/repo/OracleLinux/${osversion}/baseos baseos
Action "Get in ${osversion} baseos" cd /data/repo/OracleLinux/${osversion}/baseos/latest
#Action "Link SeaNaps environement baseOS" ln -s ol${Majeur}_u${Mineur}_baseos_base x86_64
Action "Link SeaNaps environement baseOS" ln -s ol${Majeur}_baseos_latest x86_64
}

35
bin/gen.sh Executable file
View File

@ -0,0 +1,35 @@
#!/bin/bash
usage() {
echo "No cible is present in /data/"
exit
}
RmEnv() {
rm -Rf ${Wai}/ESL/.Prefetch/
rm -Rf ${Wai}/ESL/ESL_RPMS/.checksum
rm -Rf ${Wai}/Workspace/*
}
Wai=/data/cible
[[ ! -d ${Wai}/ESL ]] && usage
#cd ${Wai}/ESL/GenELMU/
#source ${Wai}/ESL/setenv.sh
#[[ $1 == "del" ]] && RmEnv
RmEnv
[[ "$ESL_PROJECT" != "ESL" ]] && ProductElemu="i"
#yes | ./ESL_Gen_ELMUs.sh -p${ProductElemu}
cd ${Wai}/ESL/GenOS/
./ESL_Generate.sh

25
bin/repo.sh Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
source $(dirname $0)/esl.fct
source $(dirname $0)/common.fct
Tot=0
[[ $1 == "debug" ]] && WhileTrue
[[ $1 == "del" ]] && rm -Rf /data/repo /data/log
[[ ! -d /data/log ]] && mkdir -p /data/log
[[ ! -d /data/repo ]] && mkdir -p /data/repo
case ${os} in
centos) centos |tee /tmp/log/repo;;
oraclelinux) oraclelinux |tee /tmp/log/repo;;
*) echo "Nothing is possible ..."; Tot=666;;
esac
exit $Tot

14
bin/run.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
if [[ -x "$1" ]]
then
$1
exit $?
fi
while true
do
sleep 1
# Running daemon
done

View File

@ -1,63 +0,0 @@
#!/bin/bash
Res() {
if [[ $1 -eq 0 ]]
then
echo "$(tput setaf 2)OK$(tput sgr0)"
else
echo "$(tput setaf 1)FAILED$(tput sgr0)"
fi
}
[[ $1 == "del" ]] && rm -Rf /data/repo /data/log
[[ ! -d /data/log ]] && mkdir -p /data/log
[[ ! -d /data/repo ]] && mkdir -p /data/repo
echo -n "Get OS BASE : "
mkdir /data/repo/tmp/
cd /data/repo/tmp/
wget -r -p -k http://mirror.centos.org/centos/7.9.2009/os/x86_64/ 2>&1 | tee /data/log/get_base.log &> /dev/null
Res $?
for var in $(find .| grep index.html) ;do rm -f $var;done
mkdir -p /data/repo/CentOS/7.9/os/
mv /data/repo/tmp/mirror.centos.org/centos/7.9.2009/os/x86_64/ /data/repo/CentOS/7.9/os/
rm -rf /data/repo/tmp/*
echo -n "Get OS updates : "
cd /data/repo/tmp/
wget -r -p -k http://mirror.centos.org/centos/7.9.2009/updates/x86_64/ 2>&1 | tee /data/log/get_updates.log &> /dev/null
Res $?
for var in $(find . | grep index.html) ;do rm -f $var;done
mkdir -p /data/repo/CentOS/7.9/updates
mv /data/repo/tmp/mirror.centos.org/centos/7.9.2009/updates/x86_64/ /data/repo/CentOS/7.9/updates/
rm -Rf /data/repo/tmp/
echo -n "Get epel : "
Repo=epel
reposync -l --newest-only --delete --downloadcomps --download-metadata --repoid=${Repo} --download_path=/data/repo/ 2>&1 | tee /data/log/get_${Repo}.log &> /dev/null
Res $?
for var in $(find /data/repo/epel/ -name *rpm) ; do mv $var /data/repo/epel/Packages/; done
echo -n "Create repo epel : "
cd /data/repo/epel
createrepo -v /data/repo/epel 2>&1 | tee /data/log/CreateRepo_${Repo}.log &> /dev/null
Res $?
echo -n "Move EPEL : "
mkdir -p /data/repo/EPEL/el7/x86_64/ &&
mv /data/repo/epel/* /data/repo/EPEL/el7/x86_64/ &&
rmdir /data/repo/epel/
Res $?

80
create-tag-repo.sh Executable file
View File

@ -0,0 +1,80 @@
#!/bin/bash
# Print help and exit
usage(){
echo "-- $0 --"
echo "Freeze package environement in distributions. Create a 'fake' repository with real repodata but symbolic link of rpms"
echo "$0 OrigDir/repmod.xml BaseRepoDir DestDistributionBasenaemeDir"
exit
}
# Print the first arguement, execute the rest of the arguements and print the result OK/FAILED
action(){
echo -ne "${1} : "
shift
$@ &> /tmp/aaa
[[ $? -eq 0 ]] && echo -e '\033[0;32mOK\033[0m' || echo -e '\033[0;31mFAILED\033[0m'
}
# Create tree structure of the repository in the destination directory
CreateEnv(){
CptErr=0
[[ ! -d ${DirDest} ]] && mkdir -p ${DirDest} || true
CptErr=$((CptErr + $?))
for Dir in $(find -L $OrigBaseRepo -type d| sed "s#${OrigBaseRepo}##g")
do
[[ ! -d ${DirDest}/${Dir} ]] && mkdir -p ${DirDest}/${Dir} || true
CptErr=$((CptErr + $?))
done
CptErr=$((CptErr + $?))
return $CptErr
}
# for each rpm in the (get)Package directory, create a symbolic link in the destination directory
RpmLink(){
CptErr=0
for Rpm in $(find -L $OrigBaseRepo -type f -name "*.rpm" | sed "s#${OrigBaseRepo}##g")
do
[[ ! -L ${DirDest}/${Rpm} ]] && ln -s ${OrigBaseRepo}${Rpm} ${DirDest}/${Rpm} || true
CptErr=$((CptErr + $?))
done
return $CptErr
}
# Copy repodata files in the destination directory
RepoModCopy(){
cp -vf $(dirname ${RepModFile})/* $(dirname $(echo ${RepModFile}| sed "s#${BaseDirDestRepo}#${DestDir}#g"))/.
CptErr=$((CptErr + $?))
return $?
}
# Check all arguments and create variable environement for readability
CheckArg(){
[[ ! -f ${1} ]] && usage
RepModFile=${1}
[[ ! -d ${2} ]] && usage
BaseDirDestRepo=${2}
DestDir=${3}/distributions/
DirDest=$(echo $(dirname $(dirname ${RepModFile})) | sed "s#${BaseDirDestRepo}#${DestDir}#g")
OrigBaseRepo=$(echo $(dirname $(dirname ${RepModFile})))
}
# Main
CheckArg ${1} ${2} ${3}
echo "
###############################################
RepModFile = ${1}
BaseDirDestRepo = ${2}
DestDir = ${3}
###############################################"
# Execute
action "Create dest environement" CreateEnv ${RepModFile} ${BaseDirDestRepo} ${DestDir}
action "Link Rpm" RpmLink ${RepModFile} ${BaseDirDestRepo} ${DestDir}
action "Copy repo data" RepoModCopy ${RepModFile} ${BaseDirDestRepo} ${DestDir}

1
define.conf Symbolic link
View File

@ -0,0 +1 @@
.env

BIN
doc/0_define.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

BIN
doc/1_help.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
doc/2_image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
doc/3_image-gen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
doc/4_image-repo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
doc/5_repo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
doc/6_gen-connect.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
doc/7_gen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
doc/8_all.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

BIN
doc/ESL-devenv.pdf Normal file

Binary file not shown.

BIN
doc/tree.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,7 +0,0 @@
version: '2'
services:
c7repo:
image: c7repo
volumes:
- ./data:/data

56
generate_env.sh Executable file
View File

@ -0,0 +1,56 @@
#!/bin/bash
Wai=$(realpath $(dirname $0))
source ${Wai}/Template/function
TestEnv realpath
TestEnv docker
TestEnv tput
cd ${Wai}
Exec=$1
[[ -z "${Exec}" ]] && help
#[[ "${Exec}" == "image" ]] && GenAll
#[[ "${Exec}" == "image-gen" ]] && DockerGen gen
#[[ "${Exec}" == "image-repo" ]] && DockerGen repo
#[[ "${Exec}" == "link" ]] && LinkESL
#[[ "${Exec}" == "repo" ]] && DockerComposeRun repo
#[[ "${Exec}" == "stop" ]] && DockerStop
#[[ "${Exec}" == "gen" ]] && DockerComposeRun gen
#[[ "${Exec}" == "run-gen" ]] && DockerConnect gen $2
#[[ "${Exec}" == "run-repo" ]] && DockerConnect repo $2
#[[ "${Exec}" == "import-image" ]] && DockerImport
#[[ "${Exec}" == "save-image" ]] && DockerSave
#
case $Exec in
image-gen) DockerGen gen;;
image-repo) DockerGen repo;;
repo) DockerComposeRun repo;;
stop) DockerStop;;
gen) DockerComposeRun gen ;;
link) LinkESL;;
run-gen) DockerConnect gen $2;;
run-repo) DockerConnect repo $2;;
import-image) DockerImport;;
save-image) DockerSave;;
*) help
esac
if [[ "${Exec}" == "all" ]]
then
GenAll
DockerComposeRun repo
DockerComposeRun gen Print
fi

0
images/.gitkeep Normal file
View File

2
readme Normal file
View File

@ -0,0 +1,2 @@
delete-alsa-utils failed
66 install hde ?