N’hesitez pas à me contacter et a me laisser vos remarques par email ou en laissant un commentaire via Disqus en dessous de chaque article.
Bonne lecture !
1 | IP=$(ip -4 -o a | sed -e '/^2:/!d;s/^.*inet //;s/\/.*$//g') |
1 | [[ $(grep -E "$IP(.*)$(hostname -s)(.*)" /etc/hosts) ]] || echo -e "$IP $(hostname -s)" >> /etc/hosts |
1 | [[ $(whoami) != root ]] && { echo "ERREUR : Veuillez exécuter ce script en tant que root avec la commande sudo !"; exit 1; } |
APT:
1 | echo -e "Acquire::http::Proxy \"${PROXY_URL}/\";" > /etc/apt/apt.conf.d/proxy.conf |
System:1
2
3
4
5PROXY_URL="http://USER:PASS@HOST:PORT"
echo -e "export http_proxy='${PROXY_URL}'\n
export https_proxy='${PROXY_URL}'\n
export no_proxy=EXCLUDED_DOMAIN.fr,localhost,127.0.0.1,${HOSTNAME}" > /etc/profile.d/proxy.sh
source /etc/profile.d/proxy.sh
Maven:
1 | mkdir -p ~/.m2 |
Curl:
1 | echo "proxy = ${http_proxy}" > ~/.curlrc |
1 | curl -s $PACKAGE_REGISTRY/stedolan/jq/1.6/jq-1.6.tar.gz | tar xz -C /usr/bin/ && chmod +x /usr/bin/jq |
1 | iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT && iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT && iptables-save 2> /dev/null > /etc/sysconfig/iptables |
1 | -Xmx2048m -Xms512m -XX:MaxPermSize=2048m -XX:+UseConcMarkSweepGC -XX:ReservedCodeCacheSize=128m -XX:+HeapDumpOnOutOfMemoryError |
1 | update-alternatives --set php /usr/bin/php5.6 |
1 | Variable avec nom dynamique (shell): |
1 | change maven version |
1 | find ${builder.buildDir}/ -name "*.sh" -exec chmod +x {} \\; |
1 | mysql -u root -e "source /db.sql;" |
1 | %AppData%\Microsoft\Windows\Start Menu\Programs\Startup |
1 | semanage fcontext -a -t bin_t "/data/pgsql/bin(/.*)?" |
1 | command -v <BIN> |
1 | tail -f /dev/null #exemple |
1 | git diff master..demo --stat ':(exclude)fichier1' ':(exclude)README.md' |
1 | git diff master..demo |
1 | git checkout demo |
-> Options:
y: accepter les changements
n: refuser les changements
a: accepter tous les changements
e: editer manuellement le fichier (si la ligne à garder commence par - il faut juste le remplacer par un espace et supprimer la ligne correspondante qui commence par un +)
Preparation
1 | git clone https://repoA.git repoA |
Utilisation
1 | Recupération de un ou plusieurs commits de repoA vers repoB |
1 | for br in $(git branch --list | tr -d '*' | grep -v <SOURCE BRANCH>); do git checkout $br; git checkout --patch <SOURCE BRANCH> <FICHIER> ; done |
1 | Personal/project/group access tokens |
1 | update_tree_on_git: |
1 | git config --global credential.helper store |
Editer le fichier resolved:1
2
3
4
5
6
7
8
9
10
11vi /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8 8.8.4.4
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes
puis redemarer le service:1
systemctl restart systemd-resolved.service
Editer le fichier de configuration de netplan1
vi /etc/netplan/50-cloud-init.yaml
Exemple de configuration:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24network:
version: 2
ethernets:
ens192:
dhcp4: false
addresses: [163.172.123.123/24, 212.83.123.123/32]
gateway4: 163.172.123.1
ens33:
dhcp4: true
dhcp4-overrides:
route-metric: 50
nameservers:
addresses: [8.8.8.8]
wifis:
wlp2s0b1:
dhcp4: no
dhcp6: no
addresses: [192.168.0.21/24]
gateway4: 192.168.0.1
nameservers:
addresses: [192.168.0.1, 8.8.8.8]
access-points:
"network_ssid_name":
password: "**********"
puis appliquer les modifications:1
sudo netplan apply
1 | USAGE(){ |
1 | OPTS=$(getopt --options "e:,h,u,d,p" --long "env:,help,uninstall,delete-volumes,pull" --name "$0" -- "$@") |
1 | if [ "$(. /etc/os-release && echo "$ID")" = "ubuntu" ]; then |
Après avoir augmenté l’espace alloué d’un disque il se peut que la vm ne voit pas son disque agrandit.
Il faut donc taper les commandes suivantes:
1 | gdisk /dev/sda |
1 | curl -sSL https://get.docker.com/ | sh |
1 | mkdir -p /etc/systemd/system/docker.service.d |
1 | mkdir -p /etc/docker/ /data |
1 | docker rmi $(docker images -q -f 'dangling=true') 2> /dev/null || true |
1 | Livraisons="2018-10-10 2019-01-21 2019-03-21 2019-03-26 2019-04-10 2019-04-11" |
1 | ### Input variables ## |
Afin de faciliter mes futurs projecs et de pouvoir les sécuriser, j’ai décider d’utiliser Let’s Encrypt de façon automatique.
Il était déja possible d’utiliser Let’s Encrypt pour certifier un nom de domain ou sous domaine, aujourd’hui il est possible de certifier via un wilcard, ce qui nous permet de couvrir le totalité des nom de domaines / sous-domaines et futurs sous-domaines sous la forme *.mon-domaine.fr
Avec ce concept de wildcard, il est maintenant possible de gérer un seul certificat pour l’ensemble des domaines, ce qui automatise déjà la création d’un certificat par projet.
Pour automatiser cette génération, j’ai intégré Let’s Encrypt dans une pipeline Gitlab-ci, ce qui permet de nous passer d’un serveur pour le faire.
=> Lien vers le job de la pipeline de génération
Cette Pipeline est appellée automatiquement tous les 1er du mois avec Gitscheldule (semblable à cron).
Avec cette Pipeline Gitlab-Ci, une partie n’est pas couverte, c’est celle du chargement du certificat sur le serveur de l’application.
Deux cas sont étudiées:
Gitlab Fournit une Api avec laquelle il est possible de pousser directement les certificats sur un domaine associé.
J’ai donc développé un script qui parcours la totalités de mes projets Gitlab, cherche si ils contiennent des Gitlab-Pages et si ils sont attachés à un nom de domaine.
Dans ce cas le certificat est récupéré de la pile de cache de la pipeline Let’Encrypt et est poussé directement par api sur le domaine du Gitlab-page.
Afin de pouvoir récupérer les certificats pour pouvoir les exploiter sur un autre serveur, j’ai utilisé les artifacts dans la pipeline Gitab-Ci.
La fonction artifacts permet d’archiver un contenu présent dans un job Gitlab-ci et de le proposer en téléchargement une fois la pipeline terminée.
Cette fonction peut être utile dans de nombreux cas, par exemple récuperer les sources/livrables d’une complation, récuperer des logs etc..
Il est donc possible de récuperer les certificats génénerés via l’interface Gitlab ou par API, c’est cette dernière qui nous intéresse.
Effectivement il suffit d’ajouter la commande suivante dans une tache cron mensuelle sur le serveur en question, et les certificats seront automatiquement actualisés
1 | curl --output certificats.zip -L --header "PRIVATE-TOKEN: $TOKEN" https://gitlab.com/api/v4/projects/8641028/jobs/artifacts/master/download?job=certbot-renew |
Je pratique plusieurs activitées lors de mes loisirs, comme par exemple:
Plusieurs choses me passionnent:
En CDI en tant qu'Ingenieur DevOps dans l'entreprise Thales
En formation de Manager en Informatique et Robotique spécialite Sécurité Informatique des Industries Connectées. Apprenti Recherche et Dévelopement de solutions cloud en Paas/Iaas dans la société Orange
Réalisation d'une plateforme de Capture The Flag (CTF) en partenariat avec l' AFNIC
En formation Licence d'Analyste-Concepteur de Systeme d'Information et de Décision. Apprenti Architecte Infrastructure et solutions cloud dans la société Renault
En formation BTS Services Informatiques aux Organisations spécialisation Solution d'Infrastructure, Systeme réseau. Apprenti Administrateurs réseau sécurite et Support utilisateurs dans la société Econocom-Osiatis
En formation BacPro Electrotechnique Energies et Equipements Communicants. Apprenti Technicien Intervenant dans la société IDIPS
Manager en Informatique & Robotique spécialité Sécurité Informatique des Industries Connectées
Licence d'Analyste-Concepteur de Système d'Information et de Décision
BTS Services Informatiques aux Organisations spécialité Solutions d'Infrastructure, Système et réseau
BacPro Electrotechnique Energies et Equipements Communicants
Voici une nouvelle version de mon porte-folio, fini le php et la base sql !
Maintenant place aux nouvelles technos.
Ce site est basé sur Gitlab Pages et est codé avec le générateur de front Hexo, les données sont en Yaml
La partie DevOps est assurée par une pipeline Gitlab-ci
La sécurisation https est gérée par Let’s Encrypt et automatisée dans une pipeline Gitlab-ci -> Voir Article Pipeline Devops pour Let’s Encrypt
]]>