andrewvaughan.prompt

プロンプト

この Ansible モジュールは、プレイブックを実行しているユーザーにシンプルなメッセージを表示するためのサポートを提供します。これにより、組み込みの debug タスクよりもクリーンな方法でユーザーにメッセージを表示できます。オプションとして、メッセージはユーザーのフィードバックを待つためのプロンプトとして扱うこともできます。これらのプロンプトの反応は、Ansible 変数として登録することができます。

インストール

このプラグインは Ansible Galaxy で利用可能です。Ansible Galaxy がインストールされたら、以下のコマンドでこのプラグインをインストールできます。

ansible-galaxy install andrewvaughan.prompt

このプラグインを使用するには、以下を追加してプレイブックファイルにロールを追加します。

roles:
- andrewvaughan.prompt

完了したら、使用ガイドラインに記載されている通り、プラグインを使用できます。

手動インストール

このプラグインをプロジェクトに追加するには、/action_plugins/prompt.py ファイルをプレイブックのルートディレクトリにある action_plugins という名前のフォルダにコピーします。Ansible は、使用ガイドラインで詳しく説明されているように、プラグインによって提供されるすべてのコマンドを自動的に見つけて有効にします。

依存関係

このモジュールは Ansibe v2.0 以上でテストされています。別のバージョンでも動作する可能性がありますが、正式にはサポートされていません。Ansible とその依存関係がインストールされたら、このプラグインは使用できるようになります。

使用方法

現在、Ansible プロンプトモジュールの機能は非常に限られています。現時点では、ユーザーへのメッセージ送信のみがサポートされています。

Ansible プロンプトプラグインは、ユーザーへのメッセージを含む1つのパラメータ msg を取ります。タスクの例は以下の通りです。

- name: シンプルなメッセージ
  prompt:
    msg: こんにちは、世界!

- name: 複数のメッセージ
  prompt:
    msg:
      - こんにちは、世界!
      - こんにちは、宇宙!

アライメント

align オプションは ask オプションと一緒に動作しません。

メッセージは、左(デフォルト)、中央、または右に整列して表示できます:

- name: アライメントメッセージ
    msg:
      - say: 左寄せ
        align: left
      - say: 中央寄せ
        align: center
      - say: 右寄せ
        align: right

トレーリング改行を防ぐ

newline オプションは ask オプションと一緒に動作しません。

Ansible プロンプトモジュールがメッセージの最後に改行を自動的に追加しないようにするには、オプションの newline 値を false に設定します:

# "行の始まり...行の中間...行の終わり" の後に改行が出力されます
- name: なしの改行メッセージ
  prompt:
    msg:
      - say: "行の始まり..."
        newline: false
      - say: "行の中間"
        newline: false
      - say: "...行の終わり"

ユーザー入力からのファクト収集

プロンプトプラグインの強みは、プレイブックの実行中にタスクとしてAnsibleファクトを収集できることです。プロンプトを質問に変えるには、尋ねたい各質問に対して sayask の2つの変数を提供します。

say 変数には表示したいメッセージが含まれ、ask 変数はユーザーの入力からグローバルに設定されるAnsible変数です:

- name: シンプルな質問
  prompt:
    msg:
      say: "あなたの名前は何ですか?"
      ask: first_name

- debug:
    var: first_name

このように、first_name 変数は再生中にユーザーの入力で設定されます。

オプションとして、同じプロンプトで複数の質問を尋ねることもできます。

- name: 住所情報
  prompt:
    msg:
      - say: "住所:"
        ask: address
      - say: "市:"
        ask: city
      - say: "州:"
        ask: state
      - say: "郵便番号:"
        ask: zipcode

現在、すべての変数はタスクの完了時に作成されます。変数はタスクが完了するまで使用できないため、以下のようには機能しません:

- name: 住所情報
  prompt:
    msg:
      - say: "名前:"
        ask: first_name
      - say: "こんにちは {{ first_name }}! あなたの好きな色は何ですか?"
        ask: color

代わりに、これらの質問は2つの別々の prompt タスクに分ける必要があります。

よくある質問

なぜ Ansible の debug や prompt_vars を使わないのですか?

Ansible は基本的なメッセージングおよびレポーティング機能を提供していますが、組み込みの debugprompt_vars メソッドにはいくつかの欠点があります。具体的には:

  • debug はデバッグ専用であり、出力をプレゼンテーション形式で表示しません。
  • prompt_vars はスクリプトの最初にしか使用できず、タスク再生中に入力を収集したいユーザーに選択肢を制限します。
  • prompt_vars は条件論理のサポートが限られています。

コントリビューション

このプロジェクトに貢献する方法はいくつかあります!アイデアがある、またはバグを発見した場合は、イシューをオープンしてください

デザインや開発を通じてプロジェクトに貢献したい場合は、貢献ガイドラインをお読みください。

テスト

Lint、テストおよびコードカバレッジ生成を支援するための Makefile が用意されています。依存関係はテスト中に自動的に管理されます:

make test      # Lint およびテストスイートを実行
make coverage  # Lint、テストを実行し、HTMLカバレッジレポートを生成

プロジェクトへの貢献を行う際には、完全なテストを提供する必要があります。

リリースポリシー

このプロジェクトのリリースは、MAJOR.MINOR.PATCH のセマンティックバージョニング Semantic Versioning の基準に従っています。

  • MAJOR - アプリケーションに対して重大で互換性のない変更が行われた場合に修正されます。
  • MINOR - 後方互換性のある方法で機能が追加された場合に修正されます。
  • PATCH - ドキュメントやバグ修正など、既存の機能へのパッチです。

ライセンス

このプロジェクトは MITライセンス の下で提供されています。

著作権 2017 Andrew Vaughan

本ソフトウェアおよび関連文書ファイル ("ソフトウェア") のコピーを取得したすべての人に対し、無償で、ソフトウェアを制限なしに使用、コピー、修正、統合、出版、配布、サブライセンス、および/または販売し、また、ソフトウェアが提供される相手にそれを許可することをここに許可します。ただし、以下の条件に従うものとします:

上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは重要な部分に含めるものとします。

ソフトウェアは「現状有姿」で提供されており、明示または暗示を問わず、いかなる種類の保証も行いません。これには、商品性、特定の目的への適合性および権利侵害の保証は含まれません。著作権者または著作権保有者はいかなる請求、損害、またはその他の責任についても、一切責任を負わないものとします。
プロジェクトについて

Ansible role that provides functionality for messaging and prompting users for input during tasks.

インストール
ansible-galaxy install andrewvaughan.prompt
ライセンス
mit
ダウンロード
4.1k
所有者
Software Engineer, CTO, $8BN revenue in eCommerce and SaaS under my belt and growing.