Windows Subsystem Linux et SDK Cloud

Avec un PC sous Windows, l’utilisation des clients Cloud (Aws cli, Gcloud SDK, …) se font à partir du powershell, ou des lignes de commandes Windows. Pour les habitués d’Unix, ou avec certains outils, Linux peut être préférable.

Pour rester sur un Linux, à partir de son PC, les possibilités sont multiples :

  • Une image virtuelle VMware, VirtualBox ou un container docker avec un système Linux (consommateur en ressources)
  • Le Git Bash ou VSCode qui émulent certaines commandes Linux (mais cela reste très limité)
  • Ou encore un dual boot avec l’installation sur son PC d’un système Linux (Lourd pour basculer de l’un à l’autre).

 

Une possibilité plus récente, et très simple d’utilisation, c’est le Windows Subsystem Linux (WSL), qui permet d’intégrer un Linux en système secondaire de Windows.

Nous allons voir comment installer cela, tout en conservant les versions Aws cli ou Gcp pour Windows présentes sur son PC.

 

 

Installation du système

Tout d’abord, il faut autoriser l’utilisation de WSL (Windows Subsystem Linux).

Lancer PowerShell en mode Administrateur et exécuter la commande :

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Un reboot de Windows peut vous être demandé pour prise en compte de l’option.

 

Ensuite, lancer le Microsoft Store, et effectuer une recherche sur « subsystem linux ».

 

Un certain nombre de systèmes Linux certifiés par Microsoft sont utilisables.

Ici, je télécharge le système Debian, c’est la version 10 (Buster).

 

et après installation sur le PC, il apparait une icone de lancement d’un bash shell Debian

avec lancement de mon terminal shell en cliquant dessus.

Mon Linux est directement utilisable,

un « sudo apt update » et « sudo apt-get upgrade  » sont conseillés pour la mise à jour système.

 

L’accès aux fichiers Windows est immédiat, par exemple, pour ma configuration Aws cli Windows :

tof@LAPTOP-MUCLUDKI:~$ ls /mnt/c/Users/MonUserWindows/.aws
cli config credentials

Facile dans ce cas de partager sa configuration client.

 

 

Installation de l’environnement pour les client Cloud (Python, pip,…)

Les clients Aws et Gcp utilisent python, voici un exemple d’installation pour python3.

Tout d’abord, vérifier vos repositories systèmes,

$ cat /etc/apt/sources.list
deb http://deb.debian.org/debian buster main
deb http://deb.debian.org/debian buster-updates main
deb http://security.debian.org/debian-security/ buster/updates main
deb http://ftp.debian.org/debian buster-backports main

Cela contient les repositories Debian pour permettre les mises à jour en version 10.

Si vous avez une version précédente, le nom de la version sera différent de « buster ».

 

// Installation de Python

$ sudo apt-get install python3.7
$ sudo apt-get install curl

// Installation de Pip

$ sudo apt-get install python3-pip
.......

$ pip3 -V
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
$ pip3 list
Package       Version
------------- -------
asn1crypto    0.24.0
cryptography  2.6.1
.....
wheel         0.32.3

 

 

Installation des clients Aws et Gcp

 

Aws cli

Installation du client AWS

pip3 install awscli --upgrade –user

pip3 installe aws cli dans le répertoire ./.cache/bin

Nous modifions donc notre PATH dans le profile Shell pour le lancement d’aws cli

vi .bashrc
// ajout du PATH d’aws cli
export PATH=~/.local/bin:$PATH

 

// configuration d’aws cli par un aws configure, ou lien vers les fichiers aws cli existant sous Windows (c’est mon cas)

$ ln -s /mnt/c/Users/MonUserWindows/.aws .aws
$ ls -lart
drwxr-xr-x 1 root root 4096 Sep  4 15:45 ..
-rw-r--r-- 1 tof  tof   220 Sep  4 15:45 .bash_logout
-rw-r--r-- 1 tof  tof   807 Sep  4 15:45.profile
-rw------- 1 tof  tof   158 Sep  4 15:58 .bash_history
drwxrwxrwx 1 tof  tof  4096 Sep  4 17:25 .cache
drwx------ 1 tof  tof  4096 Sep  4 17:25 .local
-rw------- 1 tof  tof    16 Sep  4 17:32 .python_history
-rw-r--r-- 1 tof  tof  3587 Sep  4 17:39 .bashrc
lrwxrwxrwx 1 tof  tof    28 Sep  4 17:42 .aws -> /mnt/c/Users/MonUserWindows/.aws

 

relance du .profile et test du client aws :

$ aws s3 ls
2019-01-22 12:12:53 cloud9-781069644572-sam-deployments-eu-west-1
2019-05-18 12:25:58 cpa-s3-data
2019-02-12 16:19:15 cpa-s3-log
2019-03-14 17:26:42 cpa-tf-web

 

GCP Cloud SDK

Si la commande lsb_release n’est pas préinstallée, ajoutez le package suivant :

$ sudo apt install lsb-release
...
$ lsb_release -c -s
buster

 

Puis installation du Gcp Cloud SDK

$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo $CLOUD_SDK_REPO
cloud-sdk-buster

$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
deb http://packages.cloud.google.com/apt cloud-sdk-buster main

$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

 

$ sudo apt-get update && sudo apt-get install google-cloud-sdk
Hit:1 http://deb.debian.org/debian buster InRelease
Get:2 http://security.debian.org/debian-security buster/updates InRelease [39.1 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [49.3 kB]
…….…….

 

Voila, les binaires sont installés, nous lançons maintenant la configuration :

$ gcloud init
Welcome! This command will take you through the configuration of gcloud.
Your current configuration has been set to: [default]
...

Après les étapes de contrôles et de diagnostics, il est demandé de vous connecter sur votre compte, avec vérification par saisie du code généré :

You must log in to continue. Would you like to log in (Y/n)?  Y
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&prompt=select_account&response_type=code&client_id=32555940559.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&access_type=offline

Enter verification code:

 

Une fois le code saisi, le client peut terminer la configuration à partir de la connexion au compte :

You are logged in as: [XXXXXXX@gmail.com].
Pick cloud project to use:
[1] my-kubernetes-codelab-247807
[2] prefab-sky-233708
[3] serverless-719e0
[4] training-project-239412
[5] Create a new project
Please enter numeric choice or text value (must exactly match listitem):  4

Your current project has been set to: [training-project-239412].

Do you want to configure a default Compute Region and Zone? (Y/n)?  Y
Which Google Compute Engine zone would you like to use as project
.....

 

La configuration une fois terminée est visible dans le répertoire : ~/.config/gcloud/configurations

Vous pouvez valider le bon usage par la commande « gcloud projects list » qui affichera les projets créés pour votre compte Gcp.

 

Il ne reste qu’à copier vos fichiers ssh :

mkdir .ssh
chmod 700 .ssh
cp /mnt/c/Users/MonUserWindows/.ssh/* ./.ssh
chmod 600 .ssh/*

et vous avez un système linux light, facile à utiliser, et disponible en un clic.