TeamsId から Bitwarden への移行をまたやってました。
作っておいてよかったということでサクッとやったのですがいくつか修正しています。
目次
TeamsId2BitwardenConverter
移行に使ったのは例によって自作ツール。
個人のデータを移行する
次の例は、TeamsIdのデータをBitwarden のPersonalへ移行する例です。(Bitwardenには Organizationもある)
必要なのは、Bitwardenのフォルダ構造の定義JSONと、TeamsIdの export csv です。
あとは、teamsIdのcsvを teamsidPersonalCsv
に指定して、bitwardenのフォルダ構造json を bitwardenFolderDefinitionJson
に指定すれば変換されます。
static void Personal(string outputPath, string teamsidPersonalCsv, string bitwardenFolderDefinitionJson) { var folderDefinition = DeserializeFolderJson<BitwardenFolderDefinition>(bitwardenFolderDefinitionJson); // convert teamsid to bitwarden var teamsIdDatas = new CsvParser(teamsidPersonalCsv).Parse<TeamsIdDefinition4>(); var bitwardenItems = new BitwardenConverter(folderDefinition).Convert(teamsIdDatas, defaultGroup: "TestGroup"); // serialize bitwarden import data var importData = new BitwardenDefinition { folders = folderDefinition.folders, items = bitwardenItems, }; importData.WriteJson(outputPath); }
使いにくかった処理をいくつか修正しました。
- 前の実装、完全にTeamsIdのカラム数を12に決め打ちしてて、カラム数が満たないときにエラー出てたので
ITeamsIdDefinition
を実装すればいいようにしました。書かなくていいようにカラム数分の定義を1-12まで用意しておいたので、楽になるはず - 出力先フォルダも自動生成するようにしました。(わすれてました)
- Group埋め込みとかEmail/UserNameの分岐がなかったので足しました。(ひどい
あと、ついでにCIを Appveyor から CircleCIに変更しました。 Appveyor、残り GolangとC#とPowerShellでいくつかCI回しているので全部CircleCIに移行予定。
Golang は GitHub Actionsでも動かしているので、CircleCIじゃなくてもいいかな。
まとめ
とりあえず数回移行に使って問題なかったので便利に使ってます。(移行中にデータを確認するので100回以上使ってる)
TeamsId、相変わらず非ascii (日本語も) だめなのでもう使わない....。
Bitwarden webが少々不安感あるので、k8sでクラスタ組もうかなぁ。