Web・App・DB 層を連携させる
多層構成の展開順序を調整します。
「Web・App・DB 層を連携させる」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
実際のアプリには層があります
一般的なスタックは、Webサーバー、アプリサーバー、データベースなどの層に分かれています。各層には独自の役割とデプロイ順序があります。🏗️
順序が重要です
通常は、まずデータベースを起動し、次にアプリ、最後にWeb層を起動します。層を順番どおりに設定しないと、ロールアウトに失敗します。
層ごとに1つのプレイ
1つのプレイブック内で、各層に専用のプレイを割り当てます。プレイは上から下へ実行されるため、その順序がデプロイ手順を表します。
- hosts: db
roles: [postgres]
- hosts: app
roles: [backend]
- hosts: web
roles: [nginx]グループを層に対応させる
db、app、web などのインベントリのグループは、各プレイが対象とするホストに対応します。インベントリはオーケストレーションの基盤です。
[db]
db01
[app]
app01
app02
[web]
web01
web02層の間でデータを渡す
Web層では、アプリサーバーのIPアドレスが必要になることがよくあります。hostvars とグループを使ってそれらを読み取り、層同士を接続します。
backends: "{{ groups['app'] | map('extract', hostvars, 'ansible_host') | list }}"層の準備が整うまで待つ
アプリを起動する前に、wait_for を使ってデータベースのポートが開いていることを確認します。これにより、サービスの起動が遅い場合でも先に進んでしまうのを防げます。
- ansible.builtin.wait_for:
host: db01
port: 5432
timeout: 60マイグレーションを1回だけ実行する
データベーススキーマの変更は1回だけ実行する必要があります。run_once と委任を組み合わせ、1台のアプリノードから共有DBをマイグレーションします。
- ansible.builtin.command: ./migrate.sh
run_once: true
delegate_to: app01delegate_to で層をまたぐ
アプリのプレイから、タスクをWebホストに委任してWeb層を操作できます。1つのプレイブックで、すべての層を調整できます。
層にタグを付けて対象を絞って実行する
プレイに db、app、web などのタグを追加すると、1つの層だけが変更された場合に --tags を使ってその層だけを再デプロイできます。
- hosts: web
tags: web
roles: [nginx]スタック全体を速やかに停止する
any_errors_fatal を設定すると、db層で発生した失敗によって実行全体が停止します。壊れた層を前提にアプリ層がデプロイされるのを防げます。
- hosts: db
any_errors_fatal: true
roles: [postgres]スタック全体を1つのファイルにまとめる
複数のプレイを持つプレイブックは、デプロイのレシピになります。すべての層を順序どおりに定義し、層をまたぐ接続も1か所にまとめられます。
確認問題
層をどのような順序で実行するか確認しましょう。
まとめ
層ごとに1つのプレイをデプロイ順に定義し、グループ、hostvars、wait_for、委任を使って連携させます。✅
よくある質問
「Web・App・DB 層を連携させる」レッスンは無料ですか?
はい。「Web・App・DB 層を連携させる」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Web・App・DB 層を連携させる」で何を学びますか?
多層構成の展開順序を調整します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Web・App・DB 層を連携させる」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- cli_command によるネットワークデバイスの自動化
- オーケストレーションのための delegate_to と run_once
- Web・App・DB 層を連携させる
- Load Balancer からの切り離しと再有効化