1Password CLI 2にアップグレードする
1Passwordマニュアル|1Password CLI 2にアップグレードする方法を解説します。
Table of Contents
1Password CLI 2にアップグレードする
以前のバージョンから1Password CLI 2にアップグレードし、スクリプトを新しいコマンド構文に更新する方法を紹介します。
⚠️注意:1Password CLI 1 は非推奨です
1Password CLI 1 は、2024年10月1日をもって廃止されます。バージョン1を使うスクリプトや統合による停止を回避するには、1Password CLI 2にアップグレードしてください。
1Password CLI 2
1Password CLIのバージョン 2は 2022 年3月にリリースされました。それ以来、96%以上のユーザーが最新バージョンを採用しています。 1Password CLI 2には、ツールを使いやすくするためのスキーマへの多数の変更と、シークレットのプロビジョニングに役立つ新機能が含まれています。
新しいスキーマ
1Password CLI 2 では、操Create別ではなくトピック別にコマンドをグループ化する名詞-動詞コマンド構造が導入されています。 op --helpで利用可能な全トピックを検索でき、 op <topic> --helpで各トピックで利用可能なコマンドを確認できます。トピックには次のものがあります:
その他のスキーマの変更は次の通りです:
- デフォルトの出力は、人間に分かりやすい表形式のスキーマになりました。 デフォルトの出力を JSON に変更する方法はここで学べます。
- JSON出力スキーマに、より有用な情報が含まれるようになりました。
- stdin処理が改善され、より多くのコマンドを連結できるようになりました。
- 新しいスキーマでは、位置引数の代わりにフラグが使用されます。
シークレットのプロビジョニング
シークレットをローカルでプロビジョニングできるように、1Password CLI 2 では、環境変数や設定ファイルで 1Password から直接シークレットを読み込むことができます。シークレットのプロビジョニングにより、プレーンテキストのシークレットを 1PasswordにSaveされているシークレットへの参照に置き換え、スクリプト、アプリケーション、その他のワークフローで実行時に読み込むことができます。
1Password CLIを1Passwordデスクトップアプリと統合
1Passwordデスクトップ アプリに追加したアカウントを使って1Password CLI 2にサインインし、以後はコマンドラインで生体認証を使ってアカウントを認証できます。
シェルプラグイン ワークフローを簡素化し、安全に保つために、1Password CLI 2では、生体認証を使ってサードパーティのコマンドラインツールを安全に認証できるシェルプラグインが導入されています。
パッケージマネージャーのインストール
1Password CLI 2は、Apt、Yum、Alpine、tarなどのパッケージ マネージャーを使った簡単なインストールをサポートしています。
全ての変更は変更履歴で確認できます。
フィードバックを共有するには、サポートコミュニティーフォーラムにアクセスしてください。
ステップ 1: アップグレード戦略を選ぶ
1Password CLI 2にアップグレードする方法は複数あります。ワークフローとツールチェーンに応じて、すぐにアップグレードすることも、段階的にアップグレードすることもできます。
即アップグレードする
1Password CLI 2にアップグレードする最も簡単な方法は、保存済みのインストールを上書きすることです。これは、各ローカルインストールを同時にアップグレードできる小規模なチームがある場合に適したオプションです。
- 現在のインストールのディレクトリーを取得するには、which op(Windowsの場合はGet-Command op.Path)を使います。
- 1Password CLI 2をダウンロードし、opコマンドを同じディレクトリーに移動して、保存済みのコピーを上書きします。
- インストールを確認するには、次のコマンドでバージョン番号を確認します。
$ op --version
チームの全員が1Password CLI 2にアップグレードしたことを確認してください。スクリプトを更新すると、以前のバージョンの1Password CLIでは動作しなくなります。
徐々にアップグレードする
すぐにアップグレードする準備ができていない場合は、Dockerを使って個々のプロジェクトをアップグレードするか、1Password CLIの両方のバージョンを並行して利用できます。バージョン2がリリースされた後も、バージョン1のサポートは1年間継続されます。
Dockerを使って個々のプロジェクトをアップグレードする
プロジェクトごとにアップグレードしたい場合は、ワークフローをDockerizeして、各チーム メンバーが特定のプロジェクトのDockerイメージ内の1Password CLIのバージョンを利用できるようにします。各チームメンバーがそれぞれのローカルインストールを更新する必要がないため、これは大規模なチームに適したオプションです。
- 1Password CLI Dockerイメージを使うか、独自のイメージを使ってCLIを追加します。Dockerfileは次のようになります。
FROM 1password/op:2 COPY ./your-script.sh /your-script.sh CMD ["/your-script.sh"]
- 2. 1Password CLI 2にアップグレードした後、新しいコマンド構文を使うようにスクリプトを更新します。
このアプローチにより、スクリプトをCI/CDパイプラインなどのヘッドレス環境に移動することもできます。
両方のバージョンの1Password CLIを使い続ける
スクリプトが各チームメンバーのマシン上のローカルインストールに依[Save]しており、段階的に移行したい場合は、これが最適なオプションです。 各チームメンバーは次のことを行う必要があります。
- 以前のバージョンの1Password CLIの名前をop1に変更します。
- op1が出現する場所を全部検索してopに置き換えます。
- 1Password CLI 2を、$PATH内にインストールします。
⚠️注意
macOSの場合、1Password CLI 2は正確に /usr/local/bin/op に移動する必要があります。
Linuxの場合は、/usr/local/bin/opに移動することをお勧めします。
- スクリプトを1つずつ新しいopコマンドをように更新してください。現在のスクリプトをop1としてインストールされている以前のバージョンの1Password CLIで引き続き使用できます。
- 全スクリプトを更新し、アップグレードの準備ができたら、以前のバージョンの 1Password CLIをアンインストールします。
- スクリプト内でop1が出現する場所を全部検索してopに置き換えます。
ステップ2:自分のスクリプトを更新する
スクリプトで以前のバージョンの1Password CLIを使っていた場合は、スクリプトを新しい構文に更新する必要があります。
1Password CLI 2をインストールしたら、次の表を使ってスクリプトを更新します。この表には更新された全コマンドと、関連する引数またはフラグの変更が表示されています。
旧コマンド | CLI 2コマンド | 注記 |
create vault | vault create | |
get vault | vault get | |
edit vault | vault edit | --travel-mode=on/offフラグが導入されました |
delete vault | vault delete | [-]引数が指定されている場合はパイプ入力を許可します |
list vaults | vault list |
|
list users --vault | vault user list | |
add group | vault group grant |
|
remove group | vault group revoke |
|
add user <user> <vault> | vault user grant |
|
remove user <user> <vault> | vault user revoke |
|
signin <url> | account add |
|
signin --list | account list | account listは、選択した出力形式(JSON形式または人間が読める形式) に基づいて出力をフォーマットします |
forget account | account forget | 全アカウントを消去するための新しい-—allフラグが追加されました |
get account | account forget | |
confirm user | user confirm | -引数が指定されている場合はパイプ入力を許可します |
create user | user provision | 引数emailとnameがフラグ--emailと--nameに変更されました |
delete user | user delete | -引数が指定されている場合はパイプ入力を許可します |
edit user | user edit | -引数が指定されている場合はパイプ入力を許可します |
reactivate user | user reactivate | -引数が指定されている場合はパイプ入力を許可します |
suspend user | user suspend | --deauthorize-devices-afterフラグは秒だけでなく任意の期間単位を受け入れます |
list users | user list | |
get user | user get |
|
create connect server | connect server create | 関連サーバーを指定するために引数を使う代わりに--serverフラグを追加します |
delete connect server | connect server delete | -引数が指定されている場合はパイプ入力を許可します |
edit connect server | connect server edit | |
list connect servers | connect server list | |
- | connect server get | |
create connect token | connect token create | |
delete connect token | connect token delete | |
edit connect token | connect token edit | 引数名がjtiからtokenに変更されました |
list connect tokens | connect token list | ConnectVault.ACLが小文字とアンダースコアで表示されるようになりました |
add connect server | connect vault grant | 引数serverとvaultがフラグ--serverと--vaultに変更されました |
remove connect server | connect vault revoke | 引数serverとvaultがフラグ--serverと--vaultに変更されました |
manage connect add group | connect group grant | 引数serverとgroupがフラグ--serverと--groupに変更されました |
manage connect remove group | connect group revoke | 引数serverとgroupがフラグ--serverと--groupに変更されました |
create item | item create |
|
delete item | item delete | -引数が指定されている場合はパイプ入力を許可します |
edit item | item edit | 新しい--tags、--title、--urlフラグ |
get item | item get | |
list items | item list | |
list templates | item template list | |
get template | item template get | |
create group | group create | |
delete group | group delete | -引数が指定されている場合はパイプ入力を許可します。 |
edit group | group edit | -引数が指定されている場合はパイプ入力を許可します。 |
list groups | group list | |
get group | group get | |
add user <user> <group> | group user grant | 引数userおよびgroupがフラグ--userと--groupに変更されました |
remove user <user> <group> | group user revoke | 引数userとgroupがフラグ--userと--groupに変更されました |
op list users --group <group> | group user list | op list users --group GROUPはまだ機能します |
delete trash | - | 非推奨 |
create document | document create | --filenameフラグが--file-nameフラグに変更されました |
edit document | document edit | --filenameフラグが--file-nameフラグに変更されました |
list documents | document list | |
get document | document get | |
delete document | document delete | |
create integration events-api | events-api create | |
list events | - | 代わりにEvents Reporting APIを使ってください。 |
encode | - | 非推奨。create item --template=file.jsonを代わりに使ってください |
get totp | item get --otp |
付録:デフォルトの出力をJSONにする
1Password CLI 2のデフォルトの出力形式は、人間が判読しやすい表形式のスキーマです。デフォルトを機械が判読しやすいなJSONに変更するには、次の2つの方法があります。
- コマンドで1度だけ指定する場合は、--format jsonフラグをコマンドに含めます。 例:
op item get <name> --format json。
- 常にJSONをデフォルトにするには、環境変数$OP_FORMATをjsonに設定します。
付録:アイテムJSONテンプレート
1Password CLI 2のアイテムJSONテンプレートでは、いくつかの書式設定の改善とフィールド名の変更ができます。
旧テンプレート | 新テンプレート |
{ "fields": [ { "designation": "username", "name": "username", "type": "T", "value": "" }, { "designation": "password", "name": "password", "type": "P", "value": "" } ], "notesPlain": "", "passwordHistory": [], "sections": [] } |
{ "title": "", "category": "LOGIN", "fields": [ { "id": "username", "type": "STRING", "purpose": "USERNAME", "label": "username", "value": "" }, { "id": "password", "type": "CONCEALED", "purpose": "PASSWORD", "label": "password", "value": "" }, { "id": "notesPlain", "type": "STRING", "purpose": "NOTES", "label": "notesPlain", "value": "" } ] } |
1Password CLI 1テンプレートの各フィールドは1Password CLI 2と次のように対応します。
アイテム
1Password CLI 1 | 1Password CLI 2 | 注記 |
uuid | ||
templateUuid | category | |
details | - | sections、fieldsにに置き換えられる |
セクション
1Password CLI 1 | 1Password CLI 2 | 注記 |
name | id | |
title | label | |
fields | - | 分離される |
フィールド
1Password CLI 1 | 1Password CLI 2 |
n | id |
k | type |
t | label |
v | value |
- | section |
ヘルプを受ける
1Password CLI 2へのアップグレードに関してサポートが必要な場合は、1Passwordサポートにお問い合わせいただくか、Developer Slack ワークスペースに参加して#cliチャネルで質問してください。