Ce blog a pour vocation d’exposer toutes les astuces et informations qui me semblent intéréssantes de garder et de partager à tout le monde.
Bonne lecture !
Ce blog a pour vocation d’exposer toutes les astuces et informations qui me semblent intéréssantes de garder et de partager à tout le monde.
Bonne lecture !
1 | <VirtualHost *:8080> |
1 | <VirtualHost *:443> |
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 | PROXY_URL="http://USER:PASS@HOST:PORT" |
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 +)
1 | git clone https://repoA.git repoA |
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 |
Sur Ubuntu 18, la gestion du réseau est maintenant géré par Netplan au lieu de NetworkManager
La gestion DNS peut être gérée par systemd ou intégrée à Netplan
Editer le fichier resolved:
1 | vi /etc/systemd/resolved.conf |
puis redemarer le service:
1 | systemctl restart systemd-resolved.service |
Editer le fichier de configuration de netplan
1 | vi /etc/netplan/50-cloud-init.yaml |
Exemple de configuration:
1 | network: |
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 |