kamakiri cdn

CDNの機能はアルファでの提供です。プロバイダーの選び方、それぞれに必要なDNSレコード、切り替え方とやめ方は CDN にあります。

kamakiri cdn cloudflare

kamakiri cdn cloudflare [--no-wait]

サイトを Cloudflare 経由にし、コンテンツを配信するすべてのドメインが Cloudflare 経由でHTTPS配信されるまで待ちます。対話的でないターミナルでも待ち続けます。--no-wait を付けると、変更が受け付けられた時点で終了します。

Cloudflare がホスト名を登録するまでは、その行が ⧗ Cloudflare にホスト名を作成しています… となり、レコードはまだ表示されません。

Cloudflare が不調と報告したドメインも配信はできているので、実行はそうしたドメインの件数を伝える ⚠ の行で終わり、0で終了します。エラーの状態や、このバージョンのクライアントが解釈できない状態で終わったドメインがある場合は、ドメインごとの内訳を表示して1で終了します。

コンテンツを配信するドメインに Apex が含まれるサイトは、何も変更する前に拒否され、1で終了します。

WebAccel を使っているサイトでは、プロバイダーの切り替えになります。まずCDNを無効にし、CDNなしで公開されるのを待ってから Cloudflare で公開します。最初に CDNを WebAccel から Cloudflare へ切り替えます。直接配信を経由するため、サイトが止まることはありません。 と表示されます。切り替えには対話的なターミナルが必要です。--no-wait を付けた場合やターミナルがない場合は、CDNを無効にするところまでを行い、サイトが直接配信に戻ったら(kamakiri status で確認)、次を実行してください: kamakiri cdn cloudflare と表示します。

kamakiri cdn webaccel

kamakiri cdn webaccel [--token <token>] [--secret <secret>] [--no-wait]

サイトをさくらのウェブアクセラレータ経由にします。ドメインごとに WebAccel のリソースをお客様のさくらのクラウドのアカウントに作り、すべてのドメインが WebAccel 経由でHTTPS配信されるまで待ちます。待ち方と --no-wait は kamakiri cdn cloudflare と同じで、Cloudflare のサイトでは同じ形でプロバイダーを切り替えます。

トークンとシークレットは、次のうち値がある最初のものから取ります。

  1. --token と --secret
  2. KAMAKIRI_CDN_TOKEN と KAMAKIRI_CDN_SECRET
  3. すでに WebAccel を使っているサイトでは、保存済みの認証情報
  4. プロンプト(ターミナルでは、シークレットの入力は画面に出ません)

CIや共有のシェルでは、環境変数をお使いください。コマンドライン引数は、プロセス一覧とシェルの履歴から見えます。

最初の設定では、プロンプトを出す前に、トークンで何を行うのかと、トークンの発行場所を表示します。保存済みのトークンがさくらのクラウド側で拒否されるようになっている場合は再利用せず、その旨を伝えて新しいトークンを尋ねます。入力した認証情報が拒否された場合は、トークンに必要なアクセス権と再発行の場所を表示して、1で終了します。プロンプトは標準入力がターミナルでなくても読むので、パイプで渡した値が答えになります。答える前に入力が終わった場合は1で終了します。

次の3つの状態では待ち続けずにそこで止まり、該当するドメインと解消の方法を表示して1で終了します。

原因を直してからコマンドを再実行すると、続きから再開します。

kamakiri cdn none

kamakiri cdn none [--no-wait]

CDNを無効にし、すべてのドメインがこちらの証明書でHTTPSの直接配信に戻るまで待ちます。CDNを通しているドメインがないサイトでは、トラフィックはオリジンへ直接届きます。 と表示して終了します。

対話的でないターミナルでは、こちら側で変更が反映されるまで待ってから、向け直すレコードを表示し、その反映は待たずに0で終了します。--no-wait を付けると、変更が受け付けられた時点で、レコードを表示せずに終了します。

止めた待機は、kamakiri cdn verify ではなく、kamakiri domain verify <domain> か kamakiri status で再開します。変更に失敗したときは1で終了します。

kamakiri cdn cleanup

kamakiri cdn cleanup [--no-wait]

どのドメインにも使われなくなった WebAccel のリソースを削除し、実際になくなるまで待ちます。

$ kamakiri cdn cleanup
Cleaning up 1 orphaned CDN resource(s)... done.
$ kamakiri cdn cleanup
未使用のCDNリソースを1件削除しています... 完了しました。

DNSは確認しません。ドメインがまだ向いているリソースも削除され、そのドメインは向け直すまで止まります。安全な順番は CDN にあります。

ご自身ですでに削除したリソースは完了として扱います。保存されている認証情報で削除できなくなっている場合は、行の末尾が 削除できませんでした。 になり、続けて 保存されているさくらの認証情報が無効になっているため、リソースを削除できません。 と さくらのコントロールパネルから削除してください。 が表示されます。残ったリソースがすべてこの状態のときは、1で終了します。

削除するものがない場合は、削除するものはありません。このサイトに未使用のCDNリソースはありません。 と表示します。--no-wait を付けると、削除が受け付けられた時点で終了します。

kamakiri cdn verify

kamakiri cdn verify

Ctrl-C のあとや別のマシンから、kamakiri cdn cloudflare または kamakiri cdn webaccel の公開の見守りにつなぎ直し、同じように待ちます。何も変更せず、kamakiri domain verify と違って再確認も要求しません。フラグは受け付けません。

CDNが設定されていないサイトでは、CDNは設定されていません。`kamakiri cdn cloudflare` または `kamakiri cdn webaccel` を実行して追加してください。 と `kamakiri cdn none` を実行した直後の場合は、`kamakiri status` でサイトが直接配信に戻る様子を確認できます。 の2行を表示して、0で終了します。

kamakiri cdn credentials

kamakiri cdn credentials [--token <token>] [--secret <secret>] [--no-wait]

保存されている WebAccel のトークンとシークレットを置き換えます。ほかには何も変えません。

$ kamakiri cdn credentials --token <token> --secret <secret>
Rotating WebAccel credentials... done.
$ kamakiri cdn credentials --token <token> --secret <secret>
WebAccel の認証情報を更新しています... 完了しました。

値は、フラグ、KAMAKIRI_CDN_TOKEN と KAMAKIRI_CDN_SECRET、シークレットが画面に出ないプロンプトの順に読みます。保存済みの認証情報には戻りません。環境変数を使えば、シークレットがプロセス一覧やシェルの履歴に残りません。kamakiri cdn webaccel と同じく、パイプで渡した値が答えになり、答える前に入力が終わった場合は1で終了します。

サイトがすでに WebAccel を使っている必要があります。そうでない場合は このサイトには更新対象の WebAccel 設定がありません。先に "kamakiri cdn webaccel" を実行してください と表示して1で終了します。

コマンドは、新しい認証情報がさくらのクラウドで確認されるまで待ちます。拒否された場合は行の末尾が 失敗しました。 になり、1で終了します。--no-wait を付けると、変更が受け付けられた時点で終了します。

使えなくなった認証情報は、あとから kamakiri cdn と kamakiri status にも表示されます。配信は認証情報に左右されないので、どちらの場合もサイトは配信を続けます。ただし、認証情報を直すまではキャッシュのクリアができず、デプロイの待機もCDNの段階で止まります。

kamakiri cdn status

kamakiri cdn status

サイトのCDNのモードと、コンテンツを配信するドメイン(正規ドメインとエイリアス)ごとの行を表示します。kamakiri cdn だけでも同じです。

$ kamakiri cdn
CDN:  cloudflare
  www.example.com  ✓ via Cloudflare
$ kamakiri cdn
CDN:  cloudflare
  www.example.com  ✓ Cloudflare 経由

Cloudflare の確認を待っているドメインは、行の下に追加するレコードが出ます。配信レコードが割り当てられた先を向かなくなったドメインは、戻すべきレコードとともに警告になります。

行の上に、2種類の行が出ることがあります。1つは WebAccel のAPIの認証情報が受け付けられていないことを伝え、kamakiri cdn credentials を案内します。もう1つは kamakiri cdn cleanup を待っているリソースの数と、そのうち認証情報が無効で削除できないものの数を示します。この数は、CDNを使っていないサイトでも表示されます。

フラグは受け付けず、何も待たずに0で終了します。kamakiri status にも同じ行が出ます。

kamakiri cdn purge

kamakiri cdn purge [--no-wait]

すべてのドメインについてCDNのキャッシュをクリアし、それぞれでいまのデプロイに対するクリアをプロバイダーが受け付けるまで待ちます。デプロイとロールバックは、これを自動で行います。

$ kamakiri cdn purge
✓ caches flushed (~1m)
$ kamakiri cdn purge
✓ キャッシュをクリアしました(約1分)

CDNがないサイト(このサイトにはCDNが設定されていません。先に "kamakiri cdn <cloudflare|webaccel>" を実行してください)、一度もデプロイしていないサイト(このサイトにはキャッシュ削除の対象となる公開中のコンテンツがありません。先に "kamakiri deploy <path>" を実行してください)、そして認証情報の拒否や削除済みのリソースのように、ご自身でしか直せない理由でプロバイダーがクリアを受け付けない場合は、1で終了します。最後の場合は、次にやることを示す行が出ます。

--no-wait を付けると、クリアが受け付けられた時点で CDNキャッシュの削除を受け付けました (--no-wait)。クリアはバックグラウンドで続きます。kamakiri status で確認してください。 と表示して終了します。

待機と終了コード

Ctrl-C で止まるのは待機だけで、処理はこちら側で続きます。公開の見守りは、kamakiri cdn verify か kamakiri status で、このマシンからでも別のマシンからでも再開できます。Ctrl-C で待機を止めたときは130で終了します。

どのコマンドも、待っていたことが済んだ時点で0で終了します。--no-wait を付けた場合は、リクエストが受け付けられた時点です。上に挙げた場合のほか、認証情報がないかAPIキーが拒否されたとき、サイトが紐付いていないとき、このバージョンのクライアントをサーバーがサポートしなくなったとき、リクエストが失敗したか拒否されたとき、受け付けないフラグや引数を付けたときは、どのコマンドも1で終了します。

トークンのプロンプトで Ctrl-C を押すと、130で終了します。シークレットの画面に出ないプロンプトでは、Ctrl-C を押すと1で終了し、Ctrl-D は入力の終わりではなく文字として読まれます。