手順ではなく望ましい状態を記述する
宣言的な方式が命令的な方式に勝る理由を学びます
「手順ではなく望ましい状態を記述する」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。
手順ではなく結果を記述する
Ansible は宣言型です。実現したい最終状態を記述すると、現在のホストの状態からそこに到達するための手順を Ansible が判断します。
命令型の方法
命令型のスクリプトでは、正確なコマンドを順番に列挙します。開始時の状態を前提とするため、ホストがすでに一部設定済みだと正常に動作しません。
apt-get update
apt-get install -y nginx
systemctl start nginx宣言型の方法
宣言型のタスクでは、目標だけを記述します。たとえば nginx がインストール済みで実行中であることを指定します。Ansible は実際の状態を確認し、必要な場合だけ処理します。
ansible.builtin.package:
name: nginx
state: presentstate が目標を示す
state キーで意図を宣言します。present、started、absent はそれぞれ実行するアクションではなく、望ましい最終状態を示します。
ansible.builtin.service:
name: nginx
state: startedAnsible は最初に比較する
何かを変更する前に、モジュールは現在の状態と宣言された状態を比較します。すでに一致していれば、何も実行しません。
これが収束です
実行するたびに、ホストは宣言した状態へ近づきます。これが収束です。開始時の状態に関係なく、ホストは同じ状態に到達します。
順序はそれほど重要ではありません
タスクは目標を宣言するため、途中まで実行した play を再実行すれば、残りが完了します。前回どのステップで失敗したかを把握しておく必要はありません。
再実行しても安全です
宣言型タスクは安全に再実行できます。すでに正しい状態のホストには何も行われません。これが冪等性の基盤です。
覚えることが減ります
「インストール済みならスキップ」のチェックを手作業で書く必要がなくなります。そのロジックはモジュールが担うため、playbookを短く読みやすく保てます。
Playbookは信頼できる唯一の情報源です
宣言型playbookは、望ましいサーバーの状態を記したドキュメントのように読めます。つまり、どのパッケージ、サービス、ファイルが存在すべきかを示します。
- name: Web server desired state
hosts: web
tasks:
- ansible.builtin.package:
name: nginx
state: present一部のタスクは今も命令型です
生のcommandタスクとshellタスクは命令型で、毎回実行されます。Ansibleを宣言型に保てるよう、状態ベースのモジュールを優先してください。
簡単な確認
nginxが存在すべきだと宣言するタスクを書き、すでにnginxがあるホストでplaybookを実行します。
まとめ
望ましい状態を宣言すると、Ansibleは実際の状態が異なる場合だけ処理を行い、ホストをそこへ収束させます。この安全性が冪等性です。🎯
よくある質問
「手順ではなく望ましい状態を記述する」レッスンは無料ですか?
はい。「手順ではなく望ましい状態を記述する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。
「手順ではなく望ましい状態を記述する」で何を学びますか?
宣言的な方式が命令的な方式に勝る理由を学びます ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ansible Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「手順ではなく望ましい状態を記述する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAnsible Academyレッスンでコードを書いて実行できますか?
はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 手順ではなく望ましい状態を記述する
- 出力のchangedとokを読む
- commandが冪等性を壊す理由
- チェックモード:--checkによるドライラン