關於在 Unix 相似系統上設定 Terraform

若要使用 Terraform 來建立 Oracle Cloud Infrastructure 元件,您必須下載並安裝 Terraform。您也會下載 Terraform 模組,以建立將用來建立所需基礎架構元件的組態檔。

您安裝 Terraform 和儲存 Teraform 模組的系統可以位於企業內部或雲端。為了方便起見,我們將指明本機系統或您的本機主機。

在您執行 Terraform 之前:

  • 產生可讓您存取 Compute 執行處理的 SSH 金鑰組

  • 產生用來認證 TerraForm 所做之 API 呼叫的 API 簽章金鑰

  • 設定 Terraform 用來認證存取與執行其計畫的環境變數

完成這些步驟後,您可以套用 Terraform 組態檔,在 Oracle Cloud Infrastructure 上建立基礎架構元件。

安裝精簡格式

若要在 Linux 或 UNIX 類似的系統上安裝 Terraform,請從 Terraform 網站下載適當的套裝程式。

  1. 前往https://www.terraform.io/downloads.html
  2. 將適用的套裝程式下載至您的本機系統。
  3. 將套件擷取至路徑/usr/local/bin/
    不需要進一步安裝。Terraform 現在已安裝且可供使用。

    您也可以將 Terraform 擷取至本機系統中的任何其他位置。請確定已將位置新增至您系統上的 PATH 變數中。

  4. 若要驗證您的安裝並檢查該版本,請開啟終端機並執行 terraform -version
    您會看到輸出中顯示的 Terraform 版本。例如:Terraform v0.11.8

下載 Terraform 模組

若要開始使用 Terraform 在 Oracle Cloud Infrastructure 中建立基礎架構元件,請下載 Terraform 模組。

  1. 使用 Git 或 Web 瀏覽器來複製或下載本機系統上的 Terraform 模組。按一下左邊導覽中的下載程式碼,即可取得 Git 儲存區域的連結。
  2. 將 Terraform 模組解壓縮或解壓縮至本機系統的目錄。
  3. 瀏覽至您 Terraform 模組所在的目錄。執行 terraform init。這也會下載 Terraform 的 Oracle Cloud Infrastructure 提供者。
    終止表單會起始模組與 OCI 提供者 Plugin。初始化完成時,您會看到 Terraform has been successfully initialized!訊息

產生供存取以群組為基礎之主機的 SSH 金鑰組

SSH 金鑰組可用來安全地存取在公用子網路中建立的執行處理。您需要在本機主機上產生 SSH 金鑰組。然後,Terraform 模組會將 SSH 公用金鑰新增至基礎主機。當您需要透過公用網際網路連線至基礎主機時,您需要提供 SSH 私密金鑰來認證存取。

您可以使用 ssh-keygen 公用程式來產生 SSH 金鑰組。請勿為您的 SSH 金鑰設定密碼詞組。

  • 若要使用 ssh-keygen 公用程式產生 SSH 金鑰組,請在終端機中輸入:ssh-keygen -t rsa -N "" -b 2048 -C "<key_name>" -f <path/root_name>
    在此命令中:
    • -t rsa 指定使用 RSA 演算法產生金鑰

    • -N ""指定要與此金鑰關聯的密碼詞組。請勿在報價單之間輸入任何項目。建立的金鑰不含密碼詞組。

    • -b 2048指定要產生 2048 位元金鑰。此為預設值,也是建議的最小值。

    • -C "<key_name>"指定此金鑰組的名稱。

    • -f <path/root_name>指定儲存金鑰的位置,以及公用和私密金鑰的根名稱。公用金鑰在根名稱附加.pub

SSH 金鑰組會產生並儲存在您指定的位置中。記下此地點。

產生 SSH 金鑰組以存取其他執行處理

原始主機是用來啟用 SSH 轉送至其他沒有公用 IP 位址且不允許透過公用網際網路存取的執行處理。若要從基礎主機安全存取其他執行處理,您需要使用 SSH 金鑰組,此金鑰組是儲存在私密子網路執行處理的公用金鑰,與儲存在您本機機器上的私密金鑰相符。此 SSH 金鑰組最佳實務不能與用來存取基礎主機的 SSH 金鑰組相同。

在本機主機上使用 ssh-keygen 來產生另一個 SSH 金鑰組。記下儲存此 SSH 金鑰組的位置。

產生 API 簽署金鑰

您必須提供 Privacy Enhanced Mail (PEM) 格式的 RSA 金鑰組,以使用 Oracle Cloud Infrastructure 認證您的 TerraForm 命令檔。請注意,此 API 簽章金鑰與您用來存取執行處理的 SSH 金鑰組不同。您可以使用 OpenSSL 來產生此金鑰組。

  1. 在您的本位目錄區域中建立隱藏目錄以儲存 PEM 金鑰。輸入:mkdir ~/.oci
  2. 使用 OpenSSL 來產生私密金鑰。產生私密金鑰時,請記得指定 2048 個位元或更高的位元。輸入:openssl genrsa -out ~/.oci/key_name.pem 2048
  3. 變更私密金鑰的權限,確定只有您可以讀取私密金鑰。輸入:chmod go-rwx ~/.oci/key_name.pem
  4. 接著,使用 OpenSSL 產生指定之私密金鑰的公用金鑰。輸入:openssl rsa -pubout -in ~/.oci/key_name.pem -out ~/.oci/key_name_public.pem
您可以將 API 簽章金鑰儲存在您選擇的其他位置。不過,請確定您記下此位置。

使用主控台上傳 API 簽署金鑰

產生 API 簽章金鑰後,您必須在 Oracle Cloud Infrastructure 中上傳關聯使用者的公開金鑰。第一次上傳 API 簽章金鑰時,您必須使用主控台。接下來,您也可以使用 API 來上傳 API 金鑰。

  1. 登入「Oracle Cloud Infrastructure 主控台」。
  2. 按一下識別,然後按一下使用者。
  3. 按一下您要新增 API 簽章金鑰的使用者。
  4. 在使用者詳細資訊頁面中,按一下新增公共金鑰。
  5. 在本機系統上,若要複製公用金鑰,請輸入:cat ~/.oci/key_name_public.pem | pbcopy
    如果您將金鑰儲存在其他位置,請改為輸入該位置的路徑。
  6. 在主控台中,貼上公共金鑰值並按一下新增。

設定環境變數

此處提供的 Terraform 模組可讓您指定文字檔中所需的值來設定環境變數。之後,您就可以尋找檔案,確保所有必要的環境變數均正確設定。

開始之前,請先登入「Oracle Cloud Infrastructure 主控台」。您將使用主控台來尋找下列資訊。

  • 租用 Oracle Cloud Infrastructure ID (OCID)

  • 使用者 OCID

  • 您要使用之 API 簽署金鑰的指紋

  • 區域

  • 隔間 OCID

另請確認您知道 API 簽章金鑰和 SSH 金鑰組儲存在本機系統的位置。

  1. 在本機系統上,瀏覽至 Terraform 模組所在的目錄。
  2. 在文字編輯器中開啟檔案 env-vars
  3. env-vars 檔案有四個區段。從認證詳細資訊區段開始。
    1. 輸入租用 OCID。您可以在「Oracle Cloud Infrastructure 主控台」底部找到租用 OCID。這是類似於 ocid1.tenancy.oc1。.aaaaa。。。的字串。將這個值貼到 env-vars 檔案中。
    2. 輸入使用者 OCID。若要尋找您的使用者 OCID,請在「Oracle Cloud Infrastructure 主控台」中,按一下識別,然後按一下使用者。系統會顯示使用者清單與使用者 OCID。按一下使用者名稱下方的複製以複製所需的使用者 OCID。將這個值貼到 env-vars 檔案中。
    3. 輸入 API 簽署金鑰指紋。在「Oracle Cloud Infrastructure 主控台」的「使用者」頁面中,按一下使用者以檢視使用者詳細資訊頁面。從「API 金鑰」區段中列出的金鑰複製 API 金鑰指紋。將這個值貼到 env-vars 檔案中。
    4. 輸入本機系統上 API 私密金鑰的完整路徑和檔案名稱。
  4. env-vars 檔案的區域,輸入要建立基礎架構元件的區域。您目前檢視的區域會顯示在「Oracle Cloud Infrastructure 主控台」的頂端。您也可以使用「主控台」來尋找您可以存取的其他區域。
  5. env-vars 檔案的區間段落中,輸入您要建立基礎架構元件之區間的 Ococid。確定您先前指定的使用者屬於您在此指定之區間的必要權限群組。若要尋找 compartment OCID,請移至「Oracle Cloud Infrastructure 主控台」。按一下識別,然後按一下區間。就會顯示區間清單,以及隔間。按一下區間名稱下方的複製,複製所需的隔間。將這個值貼到 env-vars 檔案中。
  6. env-vars 檔案的公用/私密金鑰區段中,針對基礎主機和其他執行處理,輸入適當 SSH 公用金鑰和本機系統私密金鑰的完整路徑和檔案名稱。私密金鑰必須是 openssh 格式。
  7. 檢查輸入的值是否正確。如果您省略了任何值,系統會在您執行 Terraform 時提示您輸入。若您提供的值不正確,則 Terraform 會發生錯誤。確認所有值均正確無誤後,請儲存並關閉 env-vars 檔案。
  8. 若要設定 env-vars 檔案中指定的環境變數,請開啟終端機,並瀏覽至 Terraform 模組所在的目錄。輸入:source。/env-vars

驗證您的終端表單組態

設定所有必要環境變數後,請確認您已準備執行 Terraform。

  • 在終端機中,瀏覽至 Terraform 模組所在的目錄。輸入:terraform plan
    此命令的輸出會顯示目前目錄中所有模組之所有組態的執行計畫。此原則說明 Terraform 要採取的動作,以變更目前的基礎架構來符合組態。如果目前沒有建立任何元件,輸出會顯示您執行 terraform apply 時將建立的元件清單。此命令不會建立任何元件,而且如果您只想確認組態成功並且所有必要的認證值都已正確儲存在適當的環境變數中,就可以安全地執行。