Ansible Tutorial: Submit REST API PUT request usin URI Module Cisco RESTCONF IOS Configuration-JSON

NetworkEvolution
2 Mar 202408:23

Summary

TLDRThe video explains how to make a REST API PUT request from Ansible to replace device configurations. It shows an example of changing the hostname of a network device using the YangModels API. The playbook is updated to handle the 204 status code returned. The body format of row vs JSON is also briefly introduced.

Takeaways

  • 😀 REST APIのPUTリクエストは、存在しないメンバーがあれば作成し、コレクションを置換する。
  • 📚 PUTリクエストとPOSTリクエストの使用時には慎重になる必要があり、特にルーティングテーブルを更新する場合、既存のテーブルを削除してしまう可能性がある。
  • 🔧 データの更新にはPATCHを使用することが推奨される。
  • 🌐 Yang Suite APIを使用してデバイスのホスト名をPUTリクエストで変更する例を紹介。
  • ✅ ホスト名を変更後、204レスポンスコードで成功したことを確認。
  • 🛠 Postmanを使って同様のPUTリクエストを送り、サーバーが204レスポンスコードで正常に処理したことを確認。
  • 📝 Ansibleではデフォルトで200レスポンスコードを期待するが、ステータスコードをカスタマイズして204を受け入れる方法を紹介。
  • 💻 VS CodeでPlaybookを作成し、URL、メソッド、メッセージボディ、コンテントタイプを設定。
  • 🔍 AnsibleがREST API PUTコールの結果としてデバイスに変更があったかどうかを正確に判定できない問題を指摘。
  • 📖 次のチュートリアルでは、ボディフォーマットのrawとJSONの違い、さらにJinja2テンプレートや変数からの設定方法を探る。

Q & A

  • AnsibleでREST APIのPUTリクエストを実行する際に注意すべき点は何ですか?

    -PUTリクエストは既存のコレクションを置き換え、メンバーが存在しない場合は作成します。ルーティングテーブルを更新する場合、既存のテーブルを削除して新しい情報のみを更新するため、PUTリクエストとPOSTリクエストの使用には注意が必要です。データの更新にはPATCHを使用すべきです。

  • デバイスのホスト名を変更するAPIの詳細はどのようにして確認できますか?

    -Yang suit APIの「native model」セクションを参照し、「generate API show API」をクリックすることで、ホスト名を設定するためのAPI詳細と必要なデータフォーマットを確認できます。

  • REST APIを使ってホスト名を変更した後、成功したことを示すHTTPステータスコードは何ですか?

    -ホスト名を変更した後、成功したことを示すHTTPステータスコードは204です。

  • Ansibleがデフォルトで期待するHTTPレスポンスコードは何ですか、そしてそれを変更するにはどうすれば良いですか?

    -AnsibleはデフォルトでHTTPレスポンスコード200を期待しています。これを変更するには、Playbook内で'status_code'パラメーターを使用して期待するステータスコードを指定します。例えば、204を期待する場合は、'status_code: 204'を設定します。

  • Postmanを使用してデバイスのホスト名を変更する際に必要な設定は何ですか?

    -Postmanを使用する場合、PUTリクエストを設定し、Yang suit APIで確認したURLを使用し、'Content-Type'ヘッダーを追加して、メッセージボディ内でホスト名を変更する必要があります。

  • AnsibleのPlaybookでURL、メソッド、メッセージボディ、コンテントタイプをどのように設定しますか?

    -Playbookでは、URLをAPIエンドポイントに設定し、メソッドをPUTに設定します。メッセージボディには変更したいホスト名のデータを含め、'Content-Type'を適切に設定してリクエストを行います。

  • Ansibleで実行したPUTリクエストがデバイスに変更を加えたかどうかをAnsibleがどのように判断するか、またその問題をどのように解決できるか?

    -デフォルトでは、AnsibleはREST APIのPUTコールによるデバイスへの変更を検出できません。'changed'の状態を適切に管理するには、実行結果を確認し、条件に基づいて'tasks'内で'changed'属性を手動で設定することが必要です。

  • Ansible PlaybookでHTTPレスポンスコード204を正常として扱う方法は?

    -Playbook内で'status_code'パラメータを204に設定することで、HTTPレスポンスコード204を正常として扱うことができます。これにより、204レスポンスが返されてもタスクが失敗とマークされることはありません。

  • デバイスのホスト名をAnsible Playbookから変更する際に、なぜ'Content-Type'ヘッダーを設定する必要があるのですか?

    -デバイスのホスト名を変更するリクエストには、リクエストのボディが正しく解釈されるように'Content-Type'ヘッダーを設定する必要があります。これは、送信するデータの形式を指定するためです。

  • Ansible PlaybookでデータをJSON形式ではなく生の形式で送信する場合、どのような考慮が必要ですか?

    -生のデータ形式で送信する場合、Playbook内でデータを適切にフォーマットし、文字列として正確に指定する必要があります。これにより、Ansibleがリクエストボディを適切に処理し、期待される形式でデータを送信できるようになります。

Outlines

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن

Mindmap

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن

Keywords

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن

Highlights

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن

Transcripts

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن
Rate This

5.0 / 5 (0 votes)

هل تحتاج إلى تلخيص باللغة الإنجليزية؟