AnsibleでConnectを使う
1Passwordマニュアル|Ansibleでの1Password Connect使用法を解説。モジュールを活用し、効率的なデプロイメントと管理を実現します。
1Password Connect Ansible collectionには、 AnisblePlaybook から 1Password Connect デプロイメントを操Createできるようにするモジュールが含まれています。これらのモジュールは Connect API と通信して、Create、読み取り、更新、削除の操Createを通じて 1Password 保管庫とアイテムの管理をサポートします。
Requirements
1Password Connect Ansible コレクションを使う前に、次の必要条件を満たす必要があります。
Ansibleをインストールするバージョン 7.x 以降。
Ansible Coreをインストールするバージョン 2.14 以降。
Pythonをインストールするバージョン3.8以降。
Get started
1Password Ansible コレクションの使用を開始するには、次の手順に従ってください。
③サンプルプレイブックを調べてみましょう。
Step 1: Install the collection
onepassword.connectAnsible Galaxyからコレクションをインストールします。
$ ansible-galaxy collection install onepassword.connect
INFO
1Password Ansible コレクションは、Red Hat Ansible Automation Platform でも利用できます。
Step 2: Use the collection in an Ansible task
Ansible タスクでonepassword.connectコレクションを使用します。
①collectionsタスクにonepassword.connect追加します。
playbook.yaml

②Ansible タスクのtoken変数またはOP_CONNECT_TOKEN環境変数を通じて Connect サーバー トークンを提供します。この値は各 Ansible タスクで設定する必要があります。
より安全なため、ローカル変数を使用して Connect サーバー トークンを設定するのがbest practiceです。次の例では、connect_token変数を Connect サーバーのトークン値に設定し、それをtokenフィールドで参照します。
playbook.yaml

③Ansible タスクのhostname変数またはOP_CONNECT_HOST環境変数を通じて、Connect サーバーのホスト名、IP アドレス、または URL を指定します。この値は、各 Ansible タスクで設定する必要があります。

Examples
特定のタスクを実行する方法については、次の例を参照してください。
Create an item
次の例では、generic_itemモジュールを使用して1Password アイテムをCreateします。また、カスタムgenerator_recipeでRandom Code値もCreateします。
playbook.yaml

Update an item
次の例では、generic_itemモジュールを使用して1Password アイテムを更新します。また、generate_value設定を に設定しますalways。つまり、プレイブックを実行するたびに 1Password がフィールドに新しい値を生Createします。
注意
更新操Createにより、titleまたはuuidフィールドに一致する項目が完全に置き換えられます。タスク定義で指定していないプロパティはすべて失われます。
データが失われないようにするには、Ansible によってCreateされたアイテムを、Connect サーバーだけがアクセスできるスコープの保管庫にSaveします。

Find an item by name
次の例では、item_infoモジュールを使用して、名前で 1Password 項目を検索します。

Get the value of a field
次の例では、field_infoモジュールを使用して1Password アイテム内の特定のフィールドの値を取得します。

Reference
使用可能な変数とモジュールの詳細については、次のセクションを参照してください。
Variables
全てのモジュールは、次の変数定義をサポートしています。Ansible タスクで値を明示的に定義するか、Ansible が環境変数にフォールバックして全てのタスクで同じ値を使うようにすることができます。

注意
モジュール変数は環境変数よりも優先されます。環境変数を使う場合は、対応するモジュール変数が存在しないことを確認してください。
Modules
1Password Ansible コレクションには次のモジュールがあります。
generic_item
このgeneric_itemモジュールを使用して、1Password アイテムをCreate、更新、削除できます。
State is important
generic_item モジュールは Ansible's present/absent stateパターンに従います。
状態がpresent(state: present)のときの動作:
モジュールがuuid またはtitle で一致する項目を見つけられない場合は、定義された値を持つ新しい項目をCreateします。
モジュールがサーバー上で一致するアイテムを見つけた場合、古いアイテムをプレイブックの値で定義された新しいアイテムに完全に置き換えます。
状態がabsent(state: absent)のときの動作:
モジュールが uuidまたは titleでアイテムを見つけられない場合、アクションは実行されません。
モジュールがuuidまたは titleに一致する項目を見つけた場合、その項目を削除します。それ以外の場合、アクションは実行されません。
generic_item モジュールを使用して 1Password アイテムをCreateまたは更新すると、1Passwordにフィールドの値を生Createさせることができます。 generate_value には、次の 3 つの設定のいずれかを指定できます。:
generate_value設定
効果
never (デフォルト)
フィールド値を生Createしないでください。代わりにvalueパラメータを使用してください。
on_create
フィールドをCreateするときに値を生Createします。
always
プレイブックが実行されるたびに、フィールドに新しい値を生Createします。valueパラメータを上書きします。
次の例では、on_create 設定を使用し、カスタムの generated_recipe を指定することにより、Random Code フィールドの値 (カスタム レシピを使用) を生Createします。
playbook.yaml

item_info
item_infoモジュールを使用して、1Password アイテム (フィールドやメタデータなど) に関する情報を検索または取得します。
info
アイテムを検索する場合、1Password は最初にuuid(提供されている場合)を検索し、次に titleを検索します。 titleでアイテムを検索する場合、モジュールは大文字と小文字を区別した完全一致クエリを使用します。
field_info
onepassword.connect.field_infoモジュールを使用して、アイテム フィールドの値を取得します。
field_infoモジュールは最初にタイトルまたは UUID でアイテムを検索し、次に要求されたフィールドを名前で検索します。 sectionを指定した場合、モジュールはそのアイテム セクション内でのみ検索します。 セクションを指定しない場合は、フィールド名はアイテム内で一意である必要があります。
検索方法は、フィールド名をunicodedata.normalize 機能とNKFD形状。
Best practices
1Password Ansible コレクションを使う場合は、次のベスト プラクティスを考慮してください。
Turn off task logging
1Password Connect と対話するタスクのタスク ログをオフにすることがベスト プラクティスです。 no_log が設定されていない場合、または false に設定されている場合、Ansible は機密情報を出力する可能性があります。
ログ記録をオフにするには、no_log を true に設定します。

Avoid using environment variables for sensitive information
Connectサーバートークンなどの機密情報を設定する場合は、 Ansible環境変数を使うのがベストプラクティスです。通常はプレーンテキストで渡されます。
Last updated