新しいLinuxサーバーをデプロイした後は、常にいくつかのことを行う必要があります。 SSH構成の変更、非rootユーザーの作成、Dockerのインストールと構成などが考えられます。
これらはすべて反復的なタスクであり、何かをテストしていて、同じ構成でサーバーをデプロイする必要がある場合は特にイライラする可能性があります。
たとえば、リバースプロキシ設定を使用して、さまざまな種類のWebサービスとアプリケーションをテストします。すべての新しいサーバーでこれらすべての手順を何度も繰り返すのは、とても苦痛かもしれません。
ありがたいことに、私たちのインフラストラクチャプロバイダーであるLinodeは、StackScriptsの形で便利なソリューションを提供しています。
このチュートリアルでは、次のことを説明します。
- Linode StackScriptsとは何ですか?
- LinodeでサーバーをデプロイするときにこれらのStackScriptを使用するにはどうすればよいですか?
- 独自のStackScriptを作成するためのヒント
- Linuxハンドブックチーム(私たち)によって作成されたStackScriptを使用してリバースプロキシセットアップを展開します
このチュートリアルは、Linodeクラウドサーバープロバイダーでのみ機能します。 使用していない場合は、このリンクにサインアップして、2か月間60ドルの無料クレジットを取得できます。
StackScriptとは何ですか?
これは、サーバーが正常にデプロイされた後に実行されるスクリプトです。このスクリプトはシェルスクリプトである必要はありません。インタプリタが存在する限り、PythonまたはPerlで記述できます。必要なのは、正しいシバンを使用していることを確認することだけです。
StackScriptを使用すると、展開後の必需品のより単調なタスクのいくつかを自動化できます。それらのいくつかを以下に示します:
- root以外のユーザーを作成します。
- SSHサーバー構成の変更(パスワード認証の無効化など)。
- Python、Docker、Rubyなどの必要なパッケージのいくつかをインストールします。
- サーバーの更新と再起動。
Dockerfileが提供する機能のようですね。ここでも同様の概念です。
まあ、それらは正確には「タイプ」ではありません。型の概念をどのように解釈しているかによって異なります。 2つのスクリプトを、それが記述されている言語(つまり、インタープリター)で区別すると、Python、Perl、Bash、Csh、Fish、Kshなどの特定のディストリビューションイメージにあるインタープリターと同じ数の種類のStackScriptがあります。
ここでは、StackScriptを可用性によって区別しています。可用性に応じて、2種類のStackScriptがあります。
- アカウントStackScripts
- コミュニティStackScripts
これらは、自分で作成し、まだ公開していないプライベートスクリプトです。
Linodeアカウントにログインすると、左側のパネルの[StackScripts]の下にある[AccountStackScripts]タブに表示されます。
あなたや他の人がLinodeポータルを通じて公開したスクリプト。
「AccountStackScripts」の横の同じ場所にあります。
ハンズオン1:単純なStackScriptを作成し、それを使用して新しいサーバーをデプロイします
フォローするには、最初にいくつかのことが必要になります。
- Linodeアカウント。あなたが組織の一員であり、管理者の1人があなたのためにアカウントを作成した場合は、そのアカウントにStackScriptsを操作するために必要な権限があることを確認してください。
- コマンドラインまたはシェルスクリプトに関する知識。あなたはいつでも私たちのバッシュビギナーシリーズに従うことができます。
この例では、root以外のユーザーを作成し、SSHキーの詳細をこのユーザーにコピーするbashスクリプトを作成します。あまり効果はありませんが、基本を理解するには十分です。
この例では、ユーザー名とパスワードがハードコーディングされるため、どの環境でもこれをお勧めしません。同様の機能を実現するためにスタックスクリプトを作成しました。これについてはすぐに共有します。
StackScriptウィンドウに移動し、[CreateaStackScript]ボタンをクリックします。
これで、いくつかのテキストフィールドが表示されます。これがあなたがする必要があることです:-
- まず、スクリプトにラベルを付けます。これがアカウントのStackScriptリストに固有であることを確認してください。
- 次に、スクリプトの目的を説明します。これはオプションです。
- 「ターゲットイメージ」は、基本的に、このStackScriptを作成するディストリビューションです。使用するコマンドまたはインタープリターは、デフォルトでは1つのディストリビューションには存在しないかもしれませんが、別のディストリビューションには存在する可能性があります。ここで正しい画像を選択してください。今のところ、Ubuntu20.04を選択します
最後に、スクリプト部分。ここに次のコードをコピーして貼り付けます
#!/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
スクリプトは次のことを行います
-
noroot
という名前の非rootユーザーを作成します 、rootユーザーと同じパスワードを使用します。 - LinodeにSSHキーを追加した場合、スクリプトは
.ssh
をコピーします root以外のユーザーのホームにディレクトリを配置し、必要な所有権と権限を構成します。 - StackScriptsは
/root
に保存されますStackScript
という名前で 、最後の行でスクリプトがディスクから削除されます。
すべて完了したら、[保存]をクリックします。
StackScriptを使用してサーバーをデプロイする
これで、アカウントのStackScriptリストにStackScriptが表示されます。そうでない場合は、ページをリロードしてください。
ここで、右端にある[DeployNewLinode]をクリックします。
もう1つの方法は、下の図のように、Linode作成ページでデプロイ方法としてStackScriptsを選択することです。
その後、慣れているようにLinodeの作成を続けます。ダッシュボードでLinodeのステータスが「実行中」になったら、数秒待ってからSSHを使用してサーバーにログインしますが、noroot
のようにrootとしてはログインしません。 ユーザー。
ssh [email protected]
この新しいユーザーとしてログインできるはずです。
ハンズオン2:Linuxハンドブックで作成されたStackScriptを使用したサーバーのデプロイ
Linuxハンドブックでは、多くのテストと構成を行っています。これは、展開チュートリアルで確認できます。あなたのような読者を支援するために、最近StackScriptの作成を開始しました。
StackScriptを使用すると、かなり複雑な構成でサーバーをデプロイできます。たとえば、Dockerで設定されたNginxリバースプロキシを取り上げます。その素晴らしいセットアップを使用したい場合は、StackScriptを使用するだけで、時間を大幅に節約できます。
LHBStackScriptsはGitHubリポジトリにあります。
ここでは、reverse-proxy-jwilder
を使用したリバースプロキシの導入について説明します。 StackScript。
まず、コミュニティのStackScriptセクションに移動し、「reverse-proxy-jwilder」を検索します。 「another_debdut/reverse-proxy-jwilder」という名前のスクリプトが表示されます。
以前と同様に、「DeployNewLinode」ボタンをクリックします。これで、以前よりも2、3個多くの入力フィールドが表示されるはずです。
オプションについて説明しましょう:
root
を使用する 常に本番環境にいるユーザーは最善のアイデアではありません。ただし、Linodeには、サーバーのデプロイ中にroot以外のユーザーを作成するオプションがありません。このスクリプトがそれを処理します。
小さなテストを実行する必要がある場合があり、root
を使用する方が簡単なため、ユーザーの作成はオプションです。 とりあえずユーザー。
これもオプションです。これを空白のままにすると、rootパスワードはroot以外のユーザーに再利用されます。
時間がかかる場合があるため、システムをアップグレードしたくない場合があります。
SSHポート
まず、SSHデーモンを実行するためのポート番号を要求します。デフォルトはポート22です。別のポート番号に設定することをお勧めします。この変更はダッシュボードに反映されないことを覚えておいてください強い> 。
他の情報に基づいて、スクリプトはSSHの他の部分も構成します。たとえば、ユーザーを追加する場合は、root
SSH経由でアクセスできません。少なくとも1つの公開鍵が提供されている場合、パスワードログインは無効になります。
root
をロックすることもできます 展開画面から直接ユーザー。これは、標準のSSH強化トリックの1つです。
dockerがインストールされるので、root以外のユーザーをdocker
に追加できます。 ここから自動的にグループ化します。
それについてです。完了したら、通常のサーバーの展開方法に従ってください。
プロセス全体が完了するまで、かなりの時間を待つ必要があります。一方、ログイン後、tailコマンドを使用してログを確認できます:
tail -f /var/log/stackscript.log
これらのStackScriptにバグがある場合、またはカスタムスクリプトが作成されていることを確認したい場合は、LinuxハンドブックGitHubリポジトリで問題を開いてください。寄付はいつでも大歓迎です。
StackScriptの詳細については、こちらの公式ドキュメントをご覧ください。