Po nasazení nového linuxového serveru je vždy potřeba udělat několik věcí. Může to být změna konfigurace SSH, vytvoření uživatelů bez oprávnění root nebo instalace a konfigurace Dockeru.
Toto všechno jsou opakující se úkoly, které mohou být obzvláště frustrující, když něco testujete a musíte nasadit servery se stejnou konfigurací.
Například používám reverzní nastavení proxy k testování různých druhů webových služeb a aplikací. Dělat všechny ty kroky znovu a znovu na všech nových serverech může být taková bolest.
Naštěstí má Linode, náš poskytovatel infrastruktury, praktické řešení ve formě skriptů StackScripts.
V tomto tutoriálu vám řeknu následující věci:
- Co jsou Linode StackScripts?
- Jak používat tyto StackScripty při nasazování serverů s Linode?
- Tipy pro vytvoření vlastního skriptu StackScript
- Nasaďte reverzní nastavení proxy pomocí skriptů StackScripts vytvořených týmem Linux Handbook (to jsme my)
Tento kurz funguje pouze s poskytovatelem cloudového serveru Linode. Pokud jej nepoužíváte, můžete se zaregistrovat pomocí tohoto odkazu a získat kredity 60 $ zdarma na dva měsíce.
Co je StackScript?
Je to skript, který se spustí po úspěšném nasazení serveru. Tento skript nemusí být shell skript, může být napsán v Pythonu nebo Perlu, pokud existuje interpret, vše, co potřebujete, je ujistit se, že používáte správný shebang!
Pomocí StackScriptu můžete automatizovat některé z monotónnějších úkolů nezbytných po nasazení. Některé z nich jsou uvedeny níže:
- Vytvoření uživatele bez oprávnění root.
- Změna konfigurace serveru SSH (např. deaktivace ověřování heslem).
- Instalace některých požadovaných balíčků, jako je Python, Docker, Ruby atd.
- Aktualizace a restartování serveru.
Zní to jako funkce, kterou poskytuje Dockerfile, že? Tady je to podobný koncept.
Typy skriptů StackScript
No, nejsou to zrovna "typy". Záleží na tom, jak si myšlenku typu vykládáte. Pokud rozlišujete dva skripty podle jazyka (tj. interpretu), ve kterém jsou napsány, existuje tolik typů StackScriptů, kolik je interpretů nalezených v konkrétním distribučním obrazu, jako je Python, Perl, Bash, Csh, Fish, Ksh atd.
Zde rozlišuji StackScripty podle jejich dostupnosti. V závislosti na dostupnosti existují dva druhy skriptů StackScript:
- Account StackScripts
- Community StackScripts
Skripty sady účtů
Toto jsou vaše soukromé skripty, které jste sami vytvořili a ještě jste je nezveřejnili.
Pokud se přihlásíte ke svému účtu Linode, najdete jej na kartě "Account StackScripts" pod "StackScripts" na levém bočním panelu.
Community StackScripts
Skripty, které jste vy a ostatní zpřístupnili veřejnosti prostřednictvím portálu Linode.
Najdete jej na stejném místě vedle "Account StackScripts".
Hands-on 1:Vytvořte jednoduchý StackScript a nasaďte s ním nový server
Chcete-li pokračovat, budete nejprve potřebovat několik věcí:
- Účet Linode. Pokud jste součástí organizace a jeden z administrátorů vám vytvořil účet, ujistěte se, že váš účet má potřebná oprávnění pro práci se StackScripts.
- Některé znalosti příkazového řádku nebo skriptování v shellu. Vždy můžete sledovat naši Bash Beginner Series.
Vytvoření jednoduchého skriptu StackScript
V tomto příkladu vytvoříte bash skript, který vytvoří uživatele bez oprávnění root a zkopíruje podrobnosti klíče SSH tomuto uživateli. Nedělá toho mnoho, ale stačí k pochopení základů.
Uživatelské jméno a hesla budou v tomto příkladu pevně zakódována a nedoporučuji to v žádném prostředí. Pro dosažení podobné funkčnosti jsem vytvořil stackscript, o který se za chvíli podělím.
Přejděte do okna StackScript a klikněte na tlačítko "Vytvořit StackScript".
Nyní uvidíte několik textových polí. Zde je to, co musíte udělat:-
- Nejprve skriptu pojmenujte. Ujistěte se, že je to jedinečné pro váš seznam StackScript účtu.
- Dále popište účel skriptu. Toto je volitelné.
- „Cílové obrázky“ jsou v podstatě distribuce, pro které vytváříte tento StackScript. Příkazy nebo interpret, který budete používat, nemusí být ve výchozím nastavení přítomny v jedné distribuci, ale v jiné. Ujistěte se, že jste zde vybrali správné obrázky. Prozatím vyberte Ubuntu 20.04
Konečně část scénáře. Zde zkopírujte a vložte následující kód
#!/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
Skript dělá následující
- Vytvoří uživatele bez oprávnění root s názvem
noroot
, se stejným heslem jako uživatel root. - Pokud jste do svého Linode přidali klíče SSH, skript zkopíruje soubor
.ssh
do domovského adresáře uživatele bez oprávnění root a nakonfigurujte požadované vlastnictví a oprávnění. - StackScripts je uložen v
/root
pod názvemStackScript
, poslední řádek smaže skript z disku.
Jakmile je vše hotovo, klikněte na „Uložit“.
Nasazení serveru pomocí skriptu StackScript
Nyní byste měli vidět StackScript v seznamu StackScript vašeho účtu. Pokud tak neučiníte, načtěte stránku znovu.
Zde na pravé straně klikněte na "Deploy New Linode".
Další metodou je vybrat StackScripts jako metodu nasazení na stránce vytvoření Linode, jako na obrázku níže.
Poté pokračujte ve vytváření Linode, jak jste zvyklí. Jakmile je stav vašeho Linode "běžící" na vašem dashboardu, počkejte několik sekund a pomocí SSH se přihlaste k serveru, ale ne jako root, jako noroot
uživatel.
ssh [email protected]
Měli byste být schopni se přihlásit jako tento nový uživatel.
Handbook 2:Nasazení serveru pomocí StackScripts vytvořených Linux Handbook
V Linux Handbook hodně testujeme a konfigurujeme. Můžete to vidět v našich návodech k nasazení. Abychom pomohli našim čtenářům, jako jste vy, začali jsme v poslední době vytvářet StackScripty.
S našimi StackScripty můžete nasadit servery s poměrně komplikovanými konfiguracemi. Vezměte si například reverzní proxy server Nginx nastavený pomocí Dockeru. Pokud chcete použít toto úžasné nastavení, použijte StackScript a ušetřete spoustu času.
LHB StackScripts můžete najít v našem úložišti GitHub.
Zde vás provedu reverzním nasazením proxy pomocí reverse-proxy-jwilder
StackScript.
Nejprve přejděte do komunitní sekce StackScript a vyhledejte „reverse-proxy-jwilder“. Měli byste vidět skript pojmenovaný jako "another_debdut/reverse-proxy-jwilder".
Stejně jako předtím klikněte na tlačítko "Nasadit nový Linode". Nyní byste měli vidět o několik vstupních polí více, než na jaké jste zvyklí.
Dovolte mi vysvětlit možnosti:
Vytvořit uživatele bez oprávnění root
Pomocí root
uživatel vždy v produkčním prostředí není nejlepší nápad. Linode však nemá možnost vytvořit uživatele bez oprávnění root při nasazování serveru. Tento skript se o to postará.
Vytvoření uživatele je volitelné, protože jsou chvíle, kdy je potřeba provést malý test, a je jednodušší použít root
prozatím uživatele.
Heslo uživatele jiného než root
Toto je opět volitelné. Pokud toto necháte prázdné, heslo root bude znovu použito pro uživatele bez tohoto oprávnění.
Upgradujte systém
Někdy možná nebudete chtít upgradovat systém, protože to může chvíli trvat.
Port SSH
Nejprve požaduje číslo portu pro spuštění démona SSH, výchozí je port 22. Doporučuji jej nastavit na něco jiného a pamatujte, že tato změna se neprojeví na vašem řídicím panelu silný> .
Na základě dalších informací skript konfiguruje i další části SSH. Pokud například přidáte uživatele, root
nebude přístupný přes SSH, pokud je zadán alespoň jeden veřejný klíč, přihlášení heslem je zakázáno.
Zamkněte účet root
Můžete také zamknout root
uživatel přímo z obrazovky nasazení. Toto je jeden ze standardních triků pro zpevnění SSH.
Skupina Docker
Protože bude nainstalován docker, můžete do docker
přidat uživatele, který není root seskupit automaticky odtud.
To je asi tak všechno. Po dokončení postupujte podle toho, jak normálně nasazujete server.
Na dokončení celého procesu budete muset chvíli počkat. Mezitím po přihlášení můžete zkontrolovat protokoly pomocí příkazu tail:
tail -f /var/log/stackscript.log
Pokud vidíte nějakou chybu v těchto StackScriptech nebo chcete vidět vytváření nějakého vlastního skriptu, otevřete problém v úložišti Linux Handbook GitHub. Příspěvky jsou vždy vítány.
Chcete-li se dozvědět více o StackScriptech, můžete si přečíst jejich oficiální dokumentaci zde.