tpaexec eval
============

evalコマンドを使用して、クラスターのインベントリのコンテキストで任意のJinja/Ansible式を評価できます。情報は、変数、インベントリ、収集されたOSファクト、計算されたパス、パッケージ名などに関連する場合があります。

使用法
------

- ``tpaexec eval ~/clusters/speedy '<expression>'`` を実行します

オプション
^^^^^^^^^^

- ``tpaexec eval ~/clusters/speedy '<expression>' --hosts <pattern>``

評価をホストパターンに制限します。パターンは、単一のインスタンス名\ ``unreal``
、コロン区切りリスト\ ``unreal:ultra`` 、\ ``localhost``
、またはグループ名\ ``role_primary`` 、\ ``role_etcd`` です。

- ``tpaexec eval ~/clusters/speedy '<expression>' --no-init``

クラスター初期化プレイブックをスキップします。 ``config.yml``
および生成されたインベントリから派生した変数のみが使用できます。
``ansible_*``
ホストファクトは未定義になります。スピーディーな在庫確認におすすめです。

出力例
------

単一ホストの\ ``config.yml`` から値を検索します。

.. code:: shell

   tpaexec eval ~/clusters/speedy {{ postgres_version }} --no-init --hosts unreal

.. code:: output

     unreal => {
       "msg": "17"
   }

クラスター内のすべてのホストの値を出力します。

.. code:: shell

   tpaexec eval ~/clusters/speedy {{ ip_address }} --no-init

.. code:: output

     unreal => {
       "msg": "10.33.155.2"
   }
     ultra => {
       "msg": "10.33.155.3"
   }
     quondam => {
       "msg": "10.33.155.4"
   }

``localhost`` をターゲティングしてインベントリ全体のデータを検査します。

.. code:: shell

   tpaexec eval ~/clusters/speedy {{ groups.keys() | list }} --no-init --hosts localhost

.. code:: output

     localhost => {
       "msg": [
           "all",
           "ungrouped",
           "tag_Cluster_speedy"
       ]
   }

ホスト用に定義されたすべての変数をリストします必要な変数の名前がまだわからない場合に役立ちます。

.. code:: shell

   tpaexec eval ~/clusters/speedy {{ hostvars[inventory_hostname].keys() | list | sort }} --no-init --hosts unreal

.. code:: output

     unreal => {
       "msg": [
           "ansible_user",
           "backup",
           "cluster_name",
           "failover_manager",
           "ip_address",
           "postgres_version",
           "role",
           "..."
       ]
   }

ホスト自分自身から収集されたファクトを読み取ります ``--no-init``
を省略すると、初期化プレイブックが実行され、\ ``ansible_*``
ファクトが設定されます。

.. code:: shell

   tpaexec eval ~/clusters/speedy {{ ansible_distribution }} --hosts unreal

.. code:: output

     unreal => {
       "msg": "Debian"
   }
