0Pricing
DevOps Bootcamp · レッスン

ホストのプロビジョニング・堅牢化・初期設定

新しいサーバーを基準状態に整えます。

「ホストのプロビジョニング・堅牢化・初期設定」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

何もないサーバーから基準状態へ

新しいホストは何も設定されていない状態です。common ロールによって、アプリコードを配置する前に、すべてのサーバーを安全で一貫した基準状態に整えます。🛠️

パッケージキャッシュを更新する

まずパッケージ情報を更新し、最新のバージョンを使ってインストールできるようにします。apt モジュールなら、1つの冪等なタスクでキャッシュを更新できます。

- name: Update apt cache
  ansible.builtin.apt:
    update_cache: true
    cache_valid_time: 3600

基本パッケージをインストールする

ループを使って、curl、vim、ufw など、すべてのホストに必要なツールを、読みやすい1つのタスクでインストールします。

- name: Base packages
  ansible.builtin.apt:
    name:
      - curl
      - ufw
      - fail2ban
    state: present

デプロイ用ユーザーを作成する

アプリ関連の作業をrootで実行してはいけません。user モジュールで専用のデプロイ用アカウントを作成し、以後そのアカウントにアプリケーションを所有させます。

- name: Create deploy user
  ansible.builtin.user:
    name: deploy
    groups: sudo
    shell: /bin/bash

SSHキーを配置する

authorized_key を使ってデプロイ用ユーザーにキーベースのログインを許可し、以後の実行でパスワードなしに接続できるようにします。

- name: Add deploy key
  ansible.posix.authorized_key:
    user: deploy
    key: "{{ deploy_pubkey }}"

SSHを堅牢化する

デーモンを堅牢化し、rootログインとパスワード認証を無効にします。lineinfile モジュールを使えば、sshd_config を安全かつ冪等に編集できます。

- ansible.builtin.lineinfile:
    path: /etc/ssh/sshd_config
    regexp: "^PermitRootLogin"
    line: "PermitRootLogin no"
  notify: Restart sshd

必要なポートだけを開く

ufw でファイアウォールを設定します。SSHとアプリのポートだけを許可し、それ以外を拒否します。デフォルトでは公開範囲を最小限にします。

- community.general.ufw:
    rule: allow
    port: "22"
    proto: tcp

タイムゾーンとNTPを設定する

ログや証明書にとって、時刻が揃っていることは重要です。タイムゾーンを設定し、時刻同期を有効にして、すべてのホストの現在時刻を一致させます。

- community.general.timezone:
    name: UTC

Handlerにする

notify と handler を組み合わせ、設定が変更された場合にだけsshdを再起動します。毎回の実行で再起動してはいけません。

handlers:
  - name: Restart sshd
    ansible.builtin.service:
      name: sshd
      state: restarted

冪等に実行する

common ロールを2回実行してみましょう。2回目は changed ではなく、ほとんどが ok と報告されます。これで基準状態が本当に収束したことを確認できます。

アプリの前に基準状態を整える

先に堅牢化しておけば、既知の安全なホストにアプリをデプロイできます。ブートストラップは、他のすべての土台となる基盤です。🔒

確認問題

SSH設定の編集をきれいに保つ方法を1つ確認しましょう。

まとめ

パッケージ、デプロイ用ユーザー、SSHキー、堅牢化したsshd、ファイアウォール、時刻同期からなる基準状態を、すべて冪等に構築しました。✅

よくある質問

「ホストのプロビジョニング・堅牢化・初期設定」レッスンは無料ですか?

はい。「ホストのプロビジョニング・堅牢化・初期設定」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「ホストのプロビジョニング・堅牢化・初期設定」で何を学びますか?

新しいサーバーを基準状態に整えます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ホストのプロビジョニング・堅牢化・初期設定」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. プロジェクトを設計する:Role と Inventory
  2. ホストのプロビジョニング・堅牢化・初期設定
  3. Load Balancer 配下でのローリングデプロイ
  4. Smoke Test、ロールバック、通知
← DevOps Bootcampに戻る