GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser Linode StackScripts pour déployer des serveurs Linux préconfigurés

Il y a toujours quelques choses à faire après le déploiement d'un nouveau serveur Linux. Il peut s'agir de modifier la configuration SSH, de créer des utilisateurs non root ou d'installer et de configurer Docker.

Ce sont toutes des tâches répétitives qui peuvent être particulièrement frustrantes lorsque vous testez quelque chose et que vous devez déployer des serveurs avec la même configuration.

Par exemple, j'utilise la configuration du proxy inverse pour tester différents types de services Web et d'applications. Refaire toutes ces étapes encore et encore sur tous les nouveaux serveurs pourrait être si pénible.

Heureusement, Linode, notre fournisseur d'infrastructure, a une solution pratique sous la forme de StackScripts.

Dans ce tutoriel, je vais vous dire les choses suivantes :

  • Que sont les StackScripts Linode ?
  • Comment utiliser ces StackScripts lors du déploiement de serveurs avec Linode ?
  • Conseils pour créer votre propre StackScript
  • Déployez une configuration de proxy inverse à l'aide de StackScripts créés par l'équipe Linux Handbook (c'est nous)

Ce tutoriel fonctionne uniquement avec le fournisseur de serveur cloud Linode. Si vous ne l'utilisez pas, vous pouvez vous inscrire avec ce lien pour obtenir 60 $ de crédits gratuits pendant deux mois.

Qu'est-ce qu'un StackScript ?

Il s'agit d'un script exécuté après le déploiement réussi d'un serveur. Ce script n'a pas besoin d'être un script shell, il peut être écrit en Python ou Perl, tant que l'interpréteur est là, tout ce dont vous avez besoin est de vous assurer que vous utilisez le bon shebang !

Avec un StackScript, vous pouvez automatiser certaines des tâches les plus monotones des nécessités post-déploiement. Certains d'entre eux sont répertoriés ci-dessous :

  • Création d'un utilisateur non root.
  • Modification de la configuration du serveur SSH (par exemple, désactivation de l'authentification par mot de passe).
  • Installer certains des packages que vous souhaitez, comme Python, Docker, Ruby, etc.
  • Mettre à jour et redémarrer le serveur.

Cela ressemble à la fonctionnalité fournie par Dockerfile, non ? C'est un concept similaire ici.

Types de StackScripts

Eh bien, ce ne sont pas exactement des "types". Cela dépend de la façon dont vous interprétez l'idée d'un type. Si vous distinguez deux scripts par le langage (c'est-à-dire l'interpréteur) dans lequel ils sont écrits, il y a autant de types de StackScripts qu'il y a d'interpréteurs trouvés dans une image de distribution spécifique comme Python, Perl, Bash, Csh, Fish, Ksh, etc.

Ici, je distingue les StackScripts par leur disponibilité. Selon la disponibilité, il existe deux types de StackScripts :

  1. StackScripts de compte
  2. StackScripts communautaires

StackScripts de compte

Ce sont vos scripts privés que vous avez créés vous-même et que vous n'avez pas encore rendus publics.

Si vous vous connectez à votre compte Linode, vous le trouverez dans l'onglet "Account StackScripts" sous "StackScripts" sur le panneau de gauche.

StackScripts communautaires

Les scripts que vous et d'autres avez mis à la disposition du public via le portail Linode.

Vous pouvez le trouver au même endroit à côté de "Account StackScripts".

Travail pratique 1 :Créer un StackScript simple et déployer un nouveau serveur avec celui-ci

Pour suivre, vous aurez d'abord besoin de quelques éléments :

  • Un compte Linode. Si vous faites partie d'une organisation et que l'un des administrateurs a créé un compte pour vous, assurez-vous que votre compte dispose des autorisations nécessaires pour fonctionner avec StackScripts.
  • Certaines connaissances en ligne de commande ou en script shell. Vous pouvez toujours suivre notre série Bash pour débutants.

Créer un StackScript simple

Dans cet exemple, vous allez créer un script bash qui créera un utilisateur non root et copiera les détails de la clé SSH sur cet utilisateur. Ça ne fait pas grand chose mais c'est suffisant pour comprendre les bases.

Le nom d'utilisateur et les mots de passe vont être codés en dur dans cet exemple et je ne le recommande dans aucun environnement. J'ai créé un stackscript pour obtenir des fonctionnalités similaires, que je partagerai dans un instant.

Allez dans la fenêtre StackScript et cliquez sur le bouton "Créer un StackScript".

Vous verrez maintenant quelques champs de texte. Voici ce que vous devez faire :-

  • Tout d'abord, donnez une étiquette à votre script. Assurez-vous qu'il est unique dans la liste StackScript de votre compte.
  • Ensuite, décrivez l'objectif du script. Ceci est facultatif.
  • Les "images cibles" correspondent essentiellement aux distributions pour lesquelles vous créez ce StackScript. Les commandes ou l'interpréteur que vous allez utiliser peuvent ne pas être présents dans une distribution par défaut, mais présents dans une autre. Assurez-vous de choisir la ou les bonnes images ici. Pour l'instant, sélectionnez Ubuntu 20.04

Enfin, la partie script. Ici copiez et collez le code suivant

#!/bin/sh

useradd \
    -mG sudo \
    -s /bin/bash \
    -p $(awk -F: '$1 ~ /^root$/ {print $2}' /etc/shadow) \
    noroot

if test -d /root/.ssh; then
    cp -r /root/.ssh /home/noroot && \
        chown -R noroot:noroot /home/noroot/.ssh && \
        chmod 700 /home/noroot/.ssh
fi

rm -f /root/StackScript

Le script fait ce qui suit

  • Crée un utilisateur non root, nommé noroot , avec le même mot de passe que l'utilisateur root.
  • Si vous avez ajouté des clés SSH à votre Linode, le script copiera le .ssh dans le répertoire d'accueil de l'utilisateur non root et configurez la propriété et les autorisations requises.
  • Les StackScripts sont stockés dans /root sous le nom StackScript , la dernière ligne supprime le script du disque.

Une fois que tout est fait, cliquez sur "Enregistrer".

Déployer le serveur à l'aide du StackScript

Vous devriez maintenant voir le StackScript dans la liste StackScript de votre compte. Si vous ne le faites pas, rechargez la page.

Ici, à l'extrême droite, cliquez sur "Déployer un nouveau Linode".

Une autre méthode consiste à sélectionner StackScripts comme méthode de déploiement sur la page de création de Linode, comme dans l'image ci-dessous.

Ensuite, continuez votre création Linode comme vous en avez l'habitude. Une fois que le statut de votre Linode est "en cours d'exécution" sur votre tableau de bord, attendez quelques secondes et utilisez SSH pour vous connecter au serveur, mais pas en tant que root, car le noroot utilisateur.

ssh [email protected]

Vous devriez pouvoir vous connecter en tant que ce nouvel utilisateur.

TP 2 :Déployer un serveur à l'aide de StackScripts créés par Linux Handbook

Chez Linux Handbook, nous faisons beaucoup de tests et de configurations. Vous pouvez le voir dans nos tutoriels de déploiement. Pour aider nos lecteurs comme vous, nous avons récemment commencé à créer des StackScripts.

Avec nos StackScripts, vous pouvez déployer des serveurs avec des configurations assez compliquées. Prenez par exemple la configuration du proxy inverse Nginx avec Docker. Si vous souhaitez utiliser cette configuration géniale, utilisez simplement le StackScript et gagnez beaucoup de temps.

Vous pouvez trouver les StackScripts LHB sur notre référentiel GitHub.

Ici, je vais vous guider à travers le déploiement du proxy inverse en utilisant reverse-proxy-jwilder StackScript.

Ces scripts ne sont actuellement testés que dans différentes versions d'Ubuntu.

Rendez-vous d'abord dans la section StackScript de la communauté et recherchez "reverse-proxy-jwilder". Vous devriez voir un script nommé comme tel "another_debdut/reverse-proxy-jwilder".

Comme avant, cliquez sur le bouton "Déployer un nouveau Linode". Vous devriez maintenant voir quelques champs de saisie de plus que ce à quoi vous êtes habitué.

Laissez-moi vous expliquer les options :

Créer un utilisateur non root

Utilisation de la root utilisateur toujours dans un environnement de production n'est pas la meilleure idée. Mais Linode n'a pas la possibilité de créer un utilisateur non root lors du déploiement d'un serveur. Ce script s'en charge.

La création de l'utilisateur est facultative car il y a des moments où un petit test doit être effectué, et il est plus facile d'utiliser la root utilisateur pour le moment.

Mot de passe utilisateur non root

Ceci est à nouveau facultatif. Si vous laissez ce champ vide, le mot de passe root sera réutilisé pour l'utilisateur non root.

Mettre à niveau le système

Parfois, vous ne voudrez peut-être pas mettre à niveau le système, car cela peut prendre un certain temps.

Port SSH

Tout d'abord, il demande un numéro de port pour que le démon SSH s'exécute, par défaut le port 22. Je recommande de le définir sur quelque chose de différent et rappelez-vous que ce changement ne sera pas reflété sur votre tableau de bord .

Sur la base d'autres informations, le script configure également d'autres parties de SSH. Par exemple, si vous ajoutez un utilisateur, root ne sera pas accessible via SSH, si au moins une clé publique est fournie, la connexion par mot de passe est désactivée.

Verrouiller le compte root

Vous pouvez également verrouiller la root droit de l'utilisateur depuis l'écran de déploiement. C'est l'une des astuces standard de renforcement SSH.

Groupe Docker

Étant donné que docker va être installé, vous pouvez ajouter votre utilisateur non root au docker groupe automatiquement à partir d'ici.

C'est à peu près ça. Une fois cela fait, suivez la façon dont vous déployez normalement un serveur.

Vous devrez attendre un certain temps pour que l'ensemble du processus se termine. En attendant, après vous être connecté, vous pouvez consulter les journaux à l'aide de la commande tail :

tail -f /var/log/stackscript.log

Si vous voyez un bogue avec ces StackScripts ou si vous souhaitez voir un script personnalisé en cours de création, ouvrez un problème sur le référentiel GitHub du manuel Linux. Les contributions sont toujours les bienvenues.

Pour en savoir plus sur StackScripts, vous pouvez lire leurs documentations officielles ici.


Linux
  1. Comment j'utilise cron sous Linux

  2. Comment utiliser rsync avancé pour les sauvegardes Linux volumineuses

  3. Comment utiliser systemd-nspawn pour la récupération du système Linux

  4. Comment utiliser FIND sous Linux

  5. Comment utiliser Décompresser sous Linux

Comment utiliser la commande Linux SS

Comment utiliser la commande Linux nohup

Comment utiliser traceroute sur Kali Linux

Comment utiliser l'écran Linux

Comment vérifier les ports d'écoute sous Linux (ports utilisés)

Comment installer Grafana sur des serveurs Linux