はじめに
Autonomous AI Databaseの「顧客の連絡先」(Customer Contacts)を一括で設定したいという要望があったので、特定のコンパートメント内のAutonomous AI Databaseの「顧客の連絡先」の設定値を表示するシェルスクリプトと、特定のコンパートメント内のAutonomous AI Databaseの「顧客の連絡先」を一括で設定するシェルスクリプトを作成してみました。
なお、こちらのスクリプトはデフォルトでOCI CLIが利用可能なOCIコンソールのCloud Shellで実行しています。
注意
こちらの記事の内容はあくまで個人のメモ的な内容のため、こちらの内容を利用した場合のトラブルには一切責任を負いません。
また、こちらの記事の内容を元にしたOracleサポートへの問い合わせはご遠慮ください。
1. 指定したコンパートメント内のAutonomous AI Databaseの情報を表示するシェルスクリプト
引数としてコンパートメントのOCIDを渡して実行すると、コンパートメント内にあるAutonomous AI DatabaseのOCID、DB名、顧客の連絡先、状態を表示するシェルスクリプトlist_adb.shを作成します。
user@cloudshell:~ (ap-tokyo-1)$ vi list_adb.sh
#!/bin/bash
set -e
compartment_id=$1
adbList=$(oci db autonomous-database list --compartment-id $compartment_id)
for i in $(echo "$adbList" | jq '.data | keys | .[]')
do
ID=$(echo $adbList | jq -r ".data[$i].\"id\"")
name=$(echo $adbList | jq -r ".data[$i].\"db-name\"")
customerContacts=$(echo $adbList | jq -r ".data[$i].\"customer-contacts\"")
lifecycleState=$(echo $adbList | jq -r ".data[$i].\"lifecycle-state\"")
echo "ID: $ID"
echo "Name: $name"
echo "Customer Contacts: $customerContacts"
echo "Lifecycle State: $lifecycleState"
echo "****"
done
list_adb.shに実行権限を付与します。
user@cloudshell:~ (ap-tokyo-1)$ chmod +x list_adb.sh
コンパートメントのOCIDを引数として渡して、list_adb.shを実行してみます。
user@cloudshell:~ (ap-tokyo-1)$ ./list_adb.sh ocid1.compartment.oc1..aaaaaaaaa4xfcxvm53g6kqpnjfsgdgiwtzwg425jsusnrm3hg43mkrltfdkq
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqactbjlr5ac4ihixhhavuvyenwm3a5g3zfobdee4mwojsq
Name: MovieStreamWorkshopY
Customer Contacts: null
Lifecycle State: STOPPED
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqaitoce37h25yq5k6f7kjnhs5szcrmkok2fshe4f3kp2yq
Name: atp1yama
Customer Contacts: null
Lifecycle State: STOPPED
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqalokjeuocw4fodeuaqdlshlbqes4ee72x3xp4arvcgiuq
Name: tokyoatp
Customer Contacts: null
Lifecycle State: STOPPED
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqapmrpvn43gubvm3pgyysilrfvo2ao3nm6tqsgyfbtml2a
Name: adw23ai
Customer Contacts: null
Lifecycle State: AVAILABLE
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqaqshdepump4mhtvz6iuqy2aj43wtfrnpjxafbjny5x4ba
Name: EVENTTEST
Customer Contacts: null
Lifecycle State: AVAILABLE
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqatkljpf76q3mb5px6iuga64cry7iewrbzzgiprvqgklmq
Name: atp23ai
Customer Contacts: null
Lifecycle State: STOPPED
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqautfwpsnlbgbxsclkwq2hoqvah2fbs6ifwwqqnhas4i5a
Name: atp26ai
Customer Contacts: null
Lifecycle State: STOPPED
****
user@cloudshell:~ (ap-tokyo-1)$
このコンパートメント内の全てのAutonomous AI Databaseにおいて、顧客の連絡先(Customer Contacts)が設定されていないことがわかりました。
2. 指定したコンパートメント内のAutonomous AI Databaseの「顧客の連絡先」を一括で設定するシェルスクリプト
引数としてコンパートメントのOCIDと「顧客の連絡先」に設定する情報を渡して実行すると、指定されたコンパートメント内にあるAutonomous AI Databaseの「顧客の連絡先」を一括で設定するシェルスクリプトupd_customer_contacts.shを作成します。
user@cloudshell:~ (ap-tokyo-1)$ vi upd_customer_contacts.sh
#!/bin/bash
set -e
compartment_id=$1
customer_contacts=$2
adbList=$(oci db autonomous-database list --compartment-id $compartment_id)
for i in $(echo "$adbList" | jq '.data | keys | .[]')
do
adb_ocid=$(echo $adbList | jq -r ".data[$i].\"id\"")
name=$(echo $adbList | jq -r ".data[$i].\"db-name\"")
customerContacts=$(echo $adbList | jq -r ".data[$i].\"customer-contacts\"")
echo "ADB OCID: $adb_ocid"
echo "ADB Name: $name"
echo "Current Customer Contacts: $customerContacts"
echo "New Customer Contacts: $customer_contacts"
echo y | oci db autonomous-database update --autonomous-database-id $adb_ocid --customer-contacts $customer_contacts
echo "****"
done
upd_customer_contacts.shに実行権限を付与します。
user@cloudshell:~ (ap-tokyo-1)$ chmod +x upd_customer_contacts.sh
コンパートメントのOCIDと「顧客の連絡先」に設定する情報(JSON形式)を引数として渡して、upd_customer_contacts.shを実行してみます。
user@cloudshell:~ (ap-tokyo-1)$ ./upd_customer_contacts.sh ocid1.compartment.oc1..aaaaaaaaa4xfcxvm53g6kqpnjfsgdgiwtzwg425jsusnrm3hg43mkrltfdkq '[{"email":"user1@example.com"},{"email":"user2@example.com"}]'
ADB OCID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqatkljpf76q3mb5px6iuga64cry7iewrbzzgiprvqgklmq
ADB Name: atp23ai
Current Customer Contacts: null
New Customer Contacts: [{"email":"user1@example.com"},{"email":"user2@example.com"}]
WARNING: Updates to long-term-backup-schedule and freeform-tags and defined-tags and security-attributes and whitelisted-ips and standby-whitelisted-ips and nsg-ids and customer-contacts and resource-pool-summary and autonomous-database-maintenance-window and scheduled-operations and db-tools-details and vanity-url-details and encryption-key will replace any existing values. Are you sure you want to continue? [y/N]: {
"data": {
"actual-used-data-storage-size-in-tbs": 0.0,
"additional-attributes": null,
"allocated-storage-size-in-tbs": 0.0322265625,
"apex-details": {
"apex-version": "24.2.10",
"ords-version": "25.4.2.050.2119"
},
※実行ログは長いため割愛
再度、コンパートメントのOCIDを引数として渡してlist_adb.shを実行し、「顧客の連絡先」が正しく設定されているか確認してみます。
user@cloudshell:~ (ap-tokyo-1)$ ./list_adb.sh ocid1.compartment.oc1..aaaaaaaaa4xfcxvm53g6kqpnjfsgdgiwtzwg425jsusnrm3hg43mkrltfdkq
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqactbjlr5ac4ihixhhavuvyenwm3a5g3zfobdee4mwojsq
Name: MovieStreamWorkshopY
Customer Contacts: [
{
"email": "user1@example.com"
},
{
"email": "user2@example.com"
}
]
Lifecycle State: STOPPED
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqaitoce37h25yq5k6f7kjnhs5szcrmkok2fshe4f3kp2yq
Name: atp1yama
Customer Contacts: [
{
"email": "user1@example.com"
},
{
"email": "user2@example.com"
}
]
Lifecycle State: STOPPED
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqalokjeuocw4fodeuaqdlshlbqes4ee72x3xp4arvcgiuq
Name: tokyoatp
Customer Contacts: [
{
"email": "user1@example.com"
},
{
"email": "user2@example.com"
}
]
Lifecycle State: STOPPED
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqapmrpvn43gubvm3pgyysilrfvo2ao3nm6tqsgyfbtml2a
Name: adw23ai
Customer Contacts: [
{
"email": "user1@example.com"
},
{
"email": "user2@example.com"
}
]
Lifecycle State: AVAILABLE
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqaqshdepump4mhtvz6iuqy2aj43wtfrnpjxafbjny5x4ba
Name: EVENTTEST
Customer Contacts: [
{
"email": "user1@example.com"
},
{
"email": "user2@example.com"
}
]
Lifecycle State: AVAILABLE
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqatkljpf76q3mb5px6iuga64cry7iewrbzzgiprvqgklmq
Name: atp23ai
Customer Contacts: [
{
"email": "user1@example.com"
},
{
"email": "user2@example.com"
}
]
Lifecycle State: STOPPED
****
ID: ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqautfwpsnlbgbxsclkwq2hoqvah2fbs6ifwwqqnhas4i5a
Name: atp26ai
Customer Contacts: [
{
"email": "user1@example.com"
},
{
"email": "user2@example.com"
}
]
Lifecycle State: STOPPED
****
user@cloudshell:~ (ap-tokyo-1)$
upd_customer_contacts.shを実行する際に第1引数に指定したコンパートメント内のAutonomous AI Databaseの「顧客の連絡先」に、第2引数に指定したメールアドレスが設定されていることが確認できました。
参考情報
・OCI CLI : oci db autonomous-database list
・OCI CLI : oci db autonomous-database update