Ricerca nel sito web

Come utilizzare Linode StackScripts per la distribuzione di server Linux preconfigurati


Automatizza le attività ripetitive e distribuisci un server Linux configurato in modo personalizzato con Linode StackScripts.

Ci sono sempre alcune cose da fare dopo aver distribuito un nuovo server Linux. Potrebbe essere la modifica della configurazione SSH, la creazione di utenti non root o l'installazione e la configurazione di Docker.

Queste sono tutte attività ripetitive che potrebbero essere particolarmente frustranti quando stai testando qualcosa e devi distribuire server con la stessa configurazione.

Ad esempio, utilizzo la configurazione del proxy inverso per testare diversi tipi di servizi Web e applicazioni. Fare tutti questi passaggi ancora e ancora su tutti i nuovi server potrebbe essere una vera seccatura.

Per fortuna, Linode, il nostro fornitore di infrastrutture, ha una soluzione pratica sotto forma di StackScripts.

In questo tutorial ti dirò le seguenti cose:

  • Cosa sono gli StackScript Linode?

  • Come utilizzare questi StackScript durante la distribuzione di server con Linode?

  • Suggerimenti su come creare il tuo StackScript

  • Distribuisci una configurazione del proxy inverso utilizzando StackScripts creati dal team di Linux Handbook (siamo noi)

Questo tutorial funziona solo con il provider del server cloud Linode. Se non lo utilizzi, puoi registrarti con questo link per ottenere $60 di crediti gratuiti per due mesi.

Cos'è uno StackScript?

È uno script che viene eseguito dopo la distribuzione corretta di un server. Questo script non deve essere uno script di shell, può essere scritto in Python o Perl, purché sia presente l'interprete, tutto ciò di cui hai bisogno è assicurarti di utilizzare lo shebang corretto!

Con StackScript, puoi automatizzare alcune delle attività più monotone delle necessità post-distribuzione. Alcuni di essi sono elencati di seguito:

  • Creazione di un utente non root.

  • Modifica della configurazione del server SSH (ad esempio disabilitazione dell'autenticazione tramite password).

  • Installazione di alcuni dei pacchetti desiderati come Python, Docker, Ruby ecc.

  • Aggiornamento e riavvio del server.

Sembra la funzionalità fornita da Dockerfile, giusto? È un concetto simile qui.

Tipi di StackScript

Beh, non sono esattamente dei "tipi". Dipende da come interpreti l'idea di un tipo. Se distingui due script in base alla lingua (ovvero l'interprete) in cui sono scritti, esistono tanti tipi di StackScript quanti sono gli interpreti trovati in un'immagine di distribuzione specifica come Python, Perl, Bash, Csh, Fish, Ksh, ecc.

Qui sto distinguendo gli StackScript in base alla loro disponibilità. A seconda della disponibilità esistono due tipi di StackScript:

  1. StackScript dell'account

  2. StackScript della comunità

StackScript dell'account

Questi sono i tuoi script privati che hai creato tu stesso e non hai ancora reso pubblici.

Se accedi al tuo account Linode, lo troverai nella scheda "Account StackScripts" sotto "StackScripts" nel pannello laterale sinistro.

StackScript della comunità

Script che tu e altri avete reso pubblicamente disponibili tramite il portale Linode.

Puoi trovarlo nello stesso posto accanto a "Account StackScripts".

Pratica 1: crea un semplice StackScript e distribuiscilo con un nuovo server

Per proseguire, avrai bisogno prima di un paio di cose:

  • Un account Linode. Se fai parte di un'organizzazione e uno degli amministratori ha creato un account per te, assicurati che il tuo account disponga delle autorizzazioni necessarie per operare con StackScripts.

  • Alcune conoscenze sulla riga di comando o sullo scripting della shell. Puoi sempre seguire la nostra serie per principianti di Bash.

Creazione di un semplice StackScript

In questo esempio, creerai uno script bash che creerà un utente non root e copierà i dettagli della chiave SSH su questo utente. Non fa molto ma è sufficiente per capire le basi.

Il nome utente e le password verranno codificati in questo esempio e non lo consiglio in nessun ambiente. Ho creato uno stackscript per ottenere funzionalità simili, che condividerò tra poco.

Vai alla finestra StackScript e fai clic sul pulsante "Crea uno StackScript".

Ora vedrai un paio di campi di testo. Ecco cosa devi fare: -

  • Per prima cosa, dai un'etichetta al tuo script. Assicurati che sia univoco per l'elenco StackScript del tuo account.

  • Successivamente, descrivi lo scopo dello script. Questo è facoltativo.

  • Le "immagini target" sono fondamentalmente le distribuzioni per le quali stai realizzando questo StackScript. I comandi o l'interprete che utilizzerai potrebbero non essere presenti in una distribuzione per impostazione predefinita, ma presenti in un'altra. Assicurati di scegliere le immagini corrette qui. Per ora, seleziona Ubuntu 20.04

Infine, la parte della sceneggiatura. Qui copia e incolla il seguente codice

#!/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

Lo script fa quanto segue

  • Crea un utente non root, denominato noroot, con la stessa password dell'utente root.

  • Se hai aggiunto chiavi SSH al tuo Linode, lo script copierà la directory .ssh nella home dell'utente non root e configurerà la proprietà e le autorizzazioni richieste.

  • Lo StackScript è memorizzato in /root sotto il nome StackScript, l'ultima riga cancella lo script dal disco.

Una volta terminato tutto, fare clic su "Salva".

Distribuisci il server utilizzando StackScript

Ora dovresti vedere StackScript nell'elenco StackScript del tuo account. In caso contrario, ricarica la pagina.

Qui, all'estrema destra, fai clic su "Deploy New Linode".

Un altro metodo è selezionare StackScripts come metodo di distribuzione nella pagina di creazione di Linode come nell'immagine qui sotto.

Successivamente, continua con la creazione del Linode come sei abituato. Una volta che lo stato del tuo Linode è "in esecuzione" sulla tua dashboard, attendi un paio di secondi e usa SSH per accedere al server, ma non come root, come utente noroot.

ssh noroot@ip

Dovresti essere in grado di accedere come nuovo utente.

Pratica 2: distribuzione del server utilizzando StackScripts creati da Linux Handbook

Al Linux Handbook facciamo molti test e configurazioni. Puoi vederlo nei nostri tutorial di distribuzione. Per aiutare i nostri lettori come te, recentemente abbiamo iniziato a creare StackScript.

Con i nostri StackScript puoi distribuire server con configurazioni piuttosto complicate. Prendiamo ad esempio il proxy inverso Nginx configurato con Docker. Se vuoi utilizzare questa fantastica configurazione, usa semplicemente StackScript e risparmia un sacco di tempo.

Puoi trovare gli LHB StackScripts nel nostro repository GitHub.

Qui ti guiderò attraverso la distribuzione del proxy inverso utilizzando reverse-proxy-jwilder StackScript.

Questi script sono attualmente testati solo in diverse versioni di Ubuntu.

Per prima cosa vai alla sezione StackScript della community e cerca "reverse-proxy-jwilder". Dovresti vedere uno script chiamato così "another_debdut/reverse-proxy-jwilder".

Come prima, fai clic sul pulsante "Distribuisci nuovo Linode". Ora dovresti vedere un paio di campi di input in più rispetto a quelli a cui sei abituato.

Lasciami spiegare le opzioni:

Crea un utente non root

Usare l'utente root sempre in un ambiente di produzione non è l'idea migliore. Ma Linode non ha la possibilità di creare un utente non root durante la distribuzione di un server. Questo script si occupa di questo.

La creazione dell'utente è facoltativa perché ci sono momenti in cui è necessario eseguire un piccolo test ed è più semplice utilizzare l'utente root per il momento.

Password utente non root

Anche questo è facoltativo. Se lasci vuoto questo campo, la password root verrà riutilizzata per l'utente non root.

Aggiorna il sistema

A volte potresti non voler aggiornare il sistema, poiché potrebbe richiedere del tempo.

Porta SSH

Innanzitutto, richiede un numero di porta per l'esecuzione del demone SSH, per impostazione predefinita è la porta 22. Ti consiglio di impostarlo su qualcosa di diverso e ricordalo poiché questa modifica non si rifletterà sulla tua dashboard.

Sulla base di altre informazioni, lo script configura anche altre parti di SSH. Ad esempio, se aggiungi un utente, root non sarà accessibile tramite SSH, se viene fornita almeno una chiave pubblica, l'accesso tramite password è disabilitato.

Blocca l'account root

Puoi anche bloccare l'utente root direttamente dalla schermata di distribuzione. Questo è uno dei trucchi standard per l'hardening di SSH.

Gruppo Docker

Poiché docker verrà installato, puoi aggiungere automaticamente il tuo utente non root al gruppo docker da qui.

Questo è tutto. Una volta terminato, segui la modalità di distribuzione normale di un server.

Dovrai attendere un bel po' affinché l'intero processo venga completato. Nel frattempo, dopo aver effettuato l'accesso puoi controllare i log utilizzando il comando tail:

tail -f /var/log/stackscript.log

Se noti qualche bug con questi StackScript o desideri vedere la creazione di alcuni script personalizzati, apri un problema sul repository GitHub di Linux Handbook. I contributi sono sempre benvenuti.

Per saperne di più su StackScripts, puoi leggere la loro documentazione ufficiale qui.

Articoli correlati: