0Pricing
Ansible Academy · レッスン

プロジェクトを設計する:Role と Inventory

デプロイ用リポジトリ全体を構成します。

「プロジェクトを設計する:Role と Inventory」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。

総合課題の目標

本格的な多層アプリを、ローリングデプロイとダウンタイムゼロでリリースしましょう。最初のステップは、プロジェクトの構成を設計することです。🚀

ロールで考える

システムをロールに分割します。common、web、app、db、loadbalancer のように、関心事ごとに1つのロールを作成します。それぞれを個別に再利用・テストできます。

トップレベルの構成

整理されたリポジトリでは、ルートにインベントリ、group_vars、roles、site.yml エントリープレイブックを配置します。誰でも必要なものをすぐに見つけられます。

deploy/
  site.yml
  inventory/
  group_vars/
  host_vars/
  roles/

site.yml ですべてをつなぐ

マスタープレイブック site.yml は、層ごとのプレイを順番にインポートします。スタック全体をデプロイするための単一のコマンドです。

- import_playbook: plays/loadbalancer.yml
- import_playbook: plays/db.yml
- import_playbook: plays/app.yml
- import_playbook: plays/web.yml

層をグループに対応させる

インベントリでは、lb、db、app、web という層ごとのグループを定義します。各プレイは、自身が管理するホストだけを正確に対象にします。

[lb]
lb1

[web]
web1
web2

[app]
app1
app2

[db]
db1

層ごとに group_vars を設定する

層の設定を group_vars に保存します。Webのポート、アプリのバージョン、DBの認証情報などを定義すれば、ホストが自動的に継承するため、コピー&ペーストは不要です。

group_vars/web.yml:
  nginx_port: 80
  upstream: app:8080

特殊な設定には host_vars を使う

1台のホストだけ設定が異なる場合は、上書き設定を host_vars に配置します。たとえばプライマリDBには、他のホストにはないレプリケーション設定を持たせる場合があります。

host_vars/db1.yml:
  postgresql_role: primary

アプリのバージョンを固定する

リリースバージョンはハードコードした文字列ではなく、変数にします。変更箇所を1つにまとめることで、数秒でロールフォワードやロールバックを実行できます。

group_vars/all.yml:
  app_version: "2.4.1"

環境を分離する

環境ごとにインベントリフォルダーを分け、ステージングと本番でホストを共有しないようにします。同じロールを使い、対象だけを変えます。

inventory/
  staging/hosts
  production/hosts

依存関係を固定する

外部のGalaxyロールを requirements.yml に記載し、チームメンバーやCIの実行環境がまったく同じオートメーションコードをインストールするようにします。

roles:
  - name: geerlingguy.nginx
    version: 3.1.4

先にアーキテクチャを考える価値

よく考えられた構成により、難しいデプロイも予測可能な数個のコマンドで実行できるようになります。今の構造化が、後のトラブル対応を減らします。🧱

確認問題

設定を正しい場所に配置してみましょう。

まとめ

リポジトリを設計しました。層ごとのロール、インベントリグループ、group_vars と host_vars、そしてデプロイ全体を実行する site.yml を用意しました。✅

よくある質問

「プロジェクトを設計する:Role と Inventory」レッスンは無料ですか?

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

「プロジェクトを設計する:Role と Inventory」で何を学びますか?

デプロイ用リポジトリ全体を構成します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ansible Academyを始めるのに経験は必要ですか?

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

「プロジェクトを設計する:Role と Inventory」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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