各製品の資料を入手。
詳細はこちら →Confluence のデータをPowerShell でMySQL にレプリケーションする方法
PowerShell のシンプルなスクリプトで、Confluence のデータ をMySQL データベースにレプリケーション(複製)する方法を紹介します。
最終更新日:2023-09-26
この記事で実現できるConfluence 連携のシナリオ
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData Cmdlets for Confluence を使えば、PowerShell からConfluence のデータ データにリアルタイムで連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for Confluence およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。
まずは、PowerShell でConfluence への接続を行います。レプリケーションは4つのステップがあります。
Confluence 接続プロパティの取得・設定方法
任意のConfluence Cloud またはConfluence Server インスタンスへの接続を確立できます。接続するにはURL 接続プロパティを設定します。例えば、https://yoursitename.atlassian.net です。
Confluence への認証
Confluence は、次の認証メソッドをサポートしています:API トークン、Basic 認証、OAuth 2.0、SSO。
API トークン - Confluence Cloud アカウント
トークンの取得
アカウント認証にはAPI トークンが必要です。API トークンを生成するには、Atlassian アカウントにログインしてAPI トークン -> API トークンの作成を選択します。生成されたトークンが表示されます。
トークンを使用する認証
Cloud アカウントへの認証を行うには、以下を入力します。
- AuthScheme:APIToken に設定。
- User:Confluence サーバーに認証する際に使用されるユーザー。
- APIToken:現在認証されているユーザーに紐づくAPI トークン。
- Url:Confluence エンドポイントに紐づくURL。例えば、https://yoursitename.atlassian.net です。
Basic 認証 - Confluence Server インスタンス
Server インスタンスへの認証を行うには、以下のように指定します。
- AuthScheme:Basic に設定。
- User:Confluence インスタンスに認証する際に使用されるユーザー。
- Password:Confluence サーバーに認証する際に使われるパスワード。
- Url:Confluence エンドポイントに紐づくURL。例えば、https://yoursitename.atlassian.net です。
Confluence のデータの取得
-
モジュールのインストール:
Install-Module ConfluenceCmdlets
-
Confluence への接続:
$confluence = Connect-Confluence -User $User -APIToken $APIToken -Url $Url -Timezone $Timezone
-
取得ターゲットのリソースの取得:
$data = Select-Confluence -Connection $confluence -Table "Pages"
Invoke-Confluence cmdlet を使って、SQL-92 クエリを使用することもできます:
$data = Invoke-Confluence -Connection $confluence -Query 'SELECT * FROM Pages WHERE Id = @Id' -Params @{'@Id'='10000'}
-
戻り値からカラム名のリストを保存します。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name
Confluence のデータをMySQL データベースにレプリケーション
カラム名を指定できるようにして、データをMySQL データベースにレプリケーションします。
-
モジュールのインストール:
Install-Module MySQLCmdlets
-
MySQL DB に、MySQL Server 名、ユーザー、パスワード、レプリケーション先のデータベース名を指定して、接続します:
$mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
-
Confluence、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、Confluence のリソース(Pages)と同じテーブル名を持っている必要があります。
$data | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Pages" -Columns $columns -Values $values }
次回以降のレプリケーションをシンプルに実現
-
一度PowerShell でConfluence とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:
Select-Confluence -Connection $confluence -Table "Pages" | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Pages" -Columns $columns -Values $values }
-
別のPowerShell モジュールで、Confluence を別のデータベースに複製する場合、Select-Confluence cmdlet のデータから、カラム、接続およびテーブルを除外しておきましょう。これらのデータはデータ移動のときだけ必要となるためです。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}
おわりに
これで、Confluence のデータをMySQL に複製できました。分析、BI などでConfluence のデータをMySQL から使うことができるようになります。