Aqua un outil DevOps pour les installer tous
A l’image d’asdf, aqua ↗ est un nouvel outil
permettant d’installer de très nombreux outils. Pa exemple, vous travaillez pour
un client qui utilise Kubernetes
1.27 et Terraform
1.5.0. Ensuite, on vous
met sur un nouveau projet client qui lui utilise Kubernetes
1.25 et
Terraform
1.3.6. Si vous ne gérez pas vos versions correctement cela peut vite
tourner au drame avec des incompatibilités ou du code non pris en charge au
moment de la livraison de celui-ci.
Installation
L’installation d’aqua se fait en deux temps. En premier, il faut télécharger l’installateur et l’exécuter :
curl -sSfL -O https://raw.githubusercontent.com/aquaproj/aqua-installer/v2.1.1/aqua-installerecho "c2af02bdd15da6794f9c98db40332c804224930212f553a805425441f8331665 aqua-installer" | sha256sum -cchmod +x aqua-installer./aqua-installer
Ensuite, il faut modifier le PATH en ajoutant ces deux lignes dans votre
fichier .zshrc
ou .bashrc
:
export PATH="${AQUA_ROOT_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/aquaproj-aqua}/bin:$PATH"
On vérifie qu’il est bien installé :
aqua -vaqua version 2.10.1 (fbf3b157b21897fa2f315fbc30474acafded108d)
Recherche des outils disponibles
Avant d’installer les outils, quels sont ceux disponibles ? Cela se fait avec la
commande list
:
aqua list...
standard,dolthub/doltstandard,gojuno/minimockstandard,helmfile/helmfilestandard,omegion/ssh-managerstandard,datreeio/datreestandard,goark/depmstandard,rancher/k3dstandard,mailru/easyjson
Actuellement 1227 outils sont disponibles ! Pour rechercher un outil, il faudra
ajouter la commande grep
derrière :
Installation des outils
Il existe deux façons d’installer les outils locaux et globale.
Installation locale
Création du fichier de configuration
Pour installer les outils localement, c’est-à-dire dans un dossier précis, il
faut créer un fichier de configuration aqua.yml
avec la commande init
:
aqua init
cat aqua.yml
# aqua - Declarative CLI Version Manager# https://aquaproj.github.io/# checksum:# enabled: true# require_checksum: true# supported_envs:# - allregistries:- type: standard ref: v4.32.0 # renovate: depName=aquaproj/aqua-registrypackages:
Ajout des outils
Pour ajouter un outil, on utilise la commande generate
suivi de l’option de
-i
:
aqua g -i
Sélectionner un ou plusieurs outils. Normalement dans le fichier de configuration, vous devriez voir apparaître dans la section packages les outils que vous avez sélectionnés.
---# aqua - Declarative CLI Version Manager# https://aquaproj.github.io/# checksum:# enabled: true# require_checksum: true# supported_envs:# - allregistries:- type: standard ref: v4.32.0 # renovate: depName=aquaproj/aqua-registrypackages:- name: derailed/k9s@v0.27.4
Pour changer de version d’un outil, il faut modifier ce fichier de
configuration. Sinon ajouter l’option -s
à la commande précédente :
aqua g -i -s
Pour le moment les outils ne sont pas installés. Pour lancer l’installation, il
faut utiliser la commande install
:
aqua install
INFO[0000] create a symbolic link aqua_version=2.10.1 command=k9s env=linux/amd64 program=aquaINFO[0000] download and unarchive the package aqua_version=2.10.1 env=linux/amd64 package_name=derailed/k9s package_version=v0.27.4 program=aqua registry=standard
k9s version ____ __.________| |/ _/ __ \______| < \____ / ___/| | \ / /\___ \|____|__ \ /____//____ > \/ \/
Version: v0.26.7Commit: 37569b8772eee3ae29c3a3a1eabb34f459f0b595Date: 2022-10-18T15:02:30Z
Installation globale
Il est possible d’installer des outils de manière générale, c’est-à-dire accessible quel que soit le dossier où on se trouve.
Le principe est le même sauf que le fichier de configuration doit être créé
dans le répertoire ~/.config/aquaproj-aqua
:
mkdir -p "${HOME}/.config/aquaproj-aqua"
On va initialiser le fichier de config :
cd $AQUA_GLOBAL_CONFIGaqua init
On installe les outils comme lors de l’installation locale, sans quitter le dossier.
aqua g -i -s
Plus loin
aqua
est assez complet. Il regorge de fonctionnalités comme :
- la gestion des
policies
. Cespolicies
permettent de restreindre l’installation et l’exécution de packages. L’objectif principal de ces politiques est d’améliorer la sécurité en empêchant l’exécution d’outils malveillants. - l’intégration de renovate
- la création d’image docker contenant des outils.
Par contre, tout cela fera l’objet de prochains billets.