我正在撰寫一個腳本,負責運行一個terraform檔案并創建infra。我有一個要求,我需要將terraform的輸出到同一個腳本中,為資料庫創建模式。我需要把端點、用戶名、密碼和資料庫名稱作為腳本的輸入,以登錄到資料庫并創建模式。我需要從已經創建的terraform中獲取aws_db_instance的輸出,并將其作為輸入推入bash腳本。 如果能得到任何幫助,我們將非常感激,因為我們可以實作這個目標,提前感謝。下面是我將在腳本中使用的模式代碼,需要從terraform中獲得這些輸入。
RDS_MYSQL_USER="用戶名"。
RDS_MYSQL_PASS="密碼"。
RDS_MYSQL_BASE="DB-Name"。
mysql -h $RDS_MYSQL_ENDPOINT -P $PORT -u $RDS_MYSQL_USER - p $RDS_MYSQL_PASS -D $RDS_MYSQL_BASE -e 'quit'/span>; ```
uj5u.com熱心網友回復:
從Terraform配置中匯出特定值的通常方法是宣告Output Values。
在您的案例中,您似乎希望從aws_db_instance匯出幾個結果屬性,您可以在根模塊中使用以下宣告:
output "mysql_host" {
值 = aws_db_instance.example.address
}
輸出 "mysql_port" {
值 = aws_db_instance.example.port
}
輸出 "mysql_username" {
值 = aws_db_instance.example.username
}
輸出 "mysql_password" {
值 = aws_db_instance.example.password
敏感 = true "mysql_database_name" {
值 = aws_db_instance.example.name
在你運行terraform apply之后,你應該看到Terraform報告了每一個的最終值,密碼隱藏在(敏感值)后面,因為我用sensitive = true宣告它。
一旦成功,你可以使用terraform output命令及其-raw選項來檢索這些值,以更方便地在shell腳本中使用。例如,如果你使用的是一個類似Bash的shell:
MYSQL_HOST="$(terraform output -raw mysql_host)"
MYSQL_PORT="$(terraform output -raw mysql_port)"
MYSQL_USERNAME="$(terraform output -raw mysql_username)"
MYSQL_PASSWORD="$(terraform output -raw mysql_password)"
MYSQL_DB_NAME="$(terraform output -raw mysql_database_name)"。
每次運行terraform output都需要從你配置的后端檢索最新的狀態快照,所以如果你選擇的后端有很長的往返時間,運行五次可能會很慢。你可以通過安裝單獨的軟體(如jq)來決議terraform output -json的結果,以便從一個單一的命令中檢索所有的值。在terraform output中有一些進一步的例子。在自動化中的使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327315.html
標籤:
