Chez AWS, on a awscli, chez Google Cloud on a gcloud, chez Azure on a az, etc. Le concept est le même, un outil pour manager ses ressources depuis la ligne de commande en utilisant l’API du provider.

C’est donc une des premières choses que j’ai recherché chez Scaleway après avoir démarrer ma migration. Et j’ai rapidement trouvé : scaleway-cli, aussi nommé scw !

L’outil est écrit en Go (et vient d’ailleurs de sortir en version 2.0), et est proposé via le repository Github du projet. Deux choix s’offrent à vous : le compiler ou poser le binaire dans votre $PATH. Perso, je suis un fainéant et comme pour terraform avant lui, j’ai pris le binaire correspondant à mon architecture et l’ai déposé dans mon /opt/bin.

La configuration en est assez simple. Il faut juste posséder :

  • un compte valide : validez que vous pouvez vous logguer sur la console
  • une clef ssh configurée sur votre système, souvent ~/.ssh/id_rsa(.pub)

Une fois votre binaire déposé dans un répertoire qui fait partie de votre $PATH, il faut lancer scw init qui va vous demander :

  • une secret key valide (dans le cas d’une authentification password-less) ou un email (si email, il embraye en vous demandant le mot de passe)
  • si vous voulez envoyer des statistiques d’usage
  • si vous voulez installer l’autocomplétion (dîtes oui, ça facilite la vie)
  • une région précise si ce n’est la région par défaut

Ensuite, il vous demande le shell utilisé pour pouvoir y installer l’autocomplétion (eval "$(scw autocomplete script shell=zsh)" dans le cas d’un zsh) et pour finir, si vous voulez installer une clef ssh sur le compte Scaleway.

En résumé, ça donne (en cachant évidemment les détails de mon compte) :

Enter a valid secret-key or an email: cazzaniga.sandro@gmail.com
Enter your password: 

To improve this tool we rely on diagnostic and usage data.
Sending such data is optional and can be disabled at any time by running "scw config set send-telemetry=false".
Do you want to send usage statistics and diagnostics? (Y/n): n

To fully enjoy Scaleway CLI we recommend you install autocomplete support in your shell.
Do you want to install autocomplete? (Y/n): 
Creating new config at /home/kharec/.config/scw/config.yaml
Config saved at /home/kharec/.config/scw/config.yaml:
access_key: xxxxxxxxxxxxxxxxxxxxxxxxx
secret_key: xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
default_organization_id: xxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxx
default_region: fr-par
default_zone: fr-par-1


To enable autocomplete, scw needs to update your shell configuration.
What type of shell are you using (default: zsh): 

To enable autocomplete we need to append to /home/kharec/.zshrc the following lines:

	# Scaleway CLI autocomplete initialization.
	eval "$(scw autocomplete script shell=zsh)"

Do you want to proceed with these changes? (Y/n): 

An SSH key is required if you want to connect to a server. More info at https://www.scaleway.com/en/docs/configure-new-ssh-key
We found an SSH key in ~/.ssh/id_rsa.pub. Do you want to add it to your Scaleway account? (Y/n): n

✅ Initialization completed with success.
  Except for SSH key: installation of SSH key canceled

Une de mes clés est déjà présente dans mon compte, donc je n’ai pas ajoutée celle-ci. Il finit en enregistrant la configuration au format YAML dans $HOME/.config/scw/config.yaml.

“Sourcez” votre .zshrc pour activer l’autocomplétion, puis vous pouvez valider la mise en place avec une commande type.

➜  ~ source .zshrc
➜  ~ scw instance server list 

En bonus : un module perl mais qui n’est apparemment plus maintenu (snif), et le SDK Python officiel et à jour pour exploiter l’API Scaleway.