Azure CosmosDB for PostgreSQLで多数のユーザを作りたい

大したことではないけど、テストで作りたくなるシナリオは確かにあるよな、と。

az cosmosdb postgres role createではadminパスワードが要求されるので、expectを使う。

#!/usr/bin/expect -f
set timeout -1

# 必要な環境変数を取得(Expect内では $env(変数名) で参照可能)
set root_password $env(ROOT_PASSWORD)
set pg_password $env(PGPASSWORD)

# 1から100までループ
for {set i 1} {$i <= 100} {incr i} {
    # コマンド作成
    set cmd "az cosmosdb postgres role create --no-wait -n \"user$i\" --password $pg_password -g group_name --cluster-name cluster_name"
    puts "実行: $cmd"

    spawn sh -c $cmd

    expect {
        "Password:" {
            send "$root_password\r"
            # パスワード送信後、プロセス終了を待つ(spawnプロセスが既に終了している場合はcatchで対応)
            if {[catch {expect eof} err]} {
                 puts "Warning: spawn id is not open (user$i): $err"
            }
        }
        timeout {
            puts "タイムアウトしました: ユーザー user$i の作成時"
            exit 1
        }
        eof {
            # 突然EOFになった場合もエラーではなく次のループへ進む
            puts "EOFに達しました(user$i)。"
        }
    }
}
タイトルとURLをコピーしました