附註:
- 此教學課程可在 Oracle 提供的免費實驗室環境中取得。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
搭配 Oracle Linux Automation Engine 使用 OCI 動態產品目錄
簡介
Oracle Linux Automation Engine (用於佈建和組態管理的開放原始碼軟體) 使用產品目錄檔案來處理基礎架構中的受管理節點或主機。此產品目錄檔案包含伺服器清單、它們的 IP 位址以及其他選擇性的連線資訊。
如果您的基礎架構強制變更,靜態產品目錄檔案就可以正常運作。
不過,使用雲端時,您的基礎架構可能會持續流通。因此,當主機出現並開始時,最好能夠動態更新庫存。
目標
在本教學課程中,您將學習到:
- 設定 Oracle Linux Automation Engine
- 建立 OCI 動態產品目錄
- 使用 OCI 動態庫存搭配手冊
必要條件
-
至少為兩個 Oracle Linux 系統,配置如下:
- 具備 sudo 權限的非 root 使用者
- 非 root 使用者的 ssh 金鑰組
- 使用無密碼 SSH 登入從一個主機至另一個主機 SSH 的功能
部署 Oracle Linux Automation Engine
注意:如果在您自己的租用戶中執行,請先閱讀 linux-virt-labs
GitHub 專案 README.md 並完成先決條件,再部署實驗室環境。
-
在 Luna 桌面上開啟終端機。
-
複製
linux-virt-labs
GitHub 專案。git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
變更至工作目錄。
cd linux-virt-labs/olam
-
安裝所需的集合。
ansible-galaxy collection install -r requirements.yml
-
更新 Oracle Linux 執行處理組態。
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ol-control-node" type: "control" 2: instance_name: "ol-host" type: "remote" EOF
-
部署實驗室環境。
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
自由實驗室環境需要額外的變數
local_python_interpreter
,此變數會設定ansible_python_interpreter
代表在 localhost 上執行的播放。環境會安裝 Oracle Cloud Infrastructure SDK for Python 的 RPM 套裝程式 (位於 python3.6 模組底下),因此需要此變數。預設部署資源配置使用 AMD CPU 和 Oracle Linux 8。若要使用 Intel CPU 或 Oracle Linux 9,請在部署命令中新增
-e instance_shape="VM.Standard3.Flex"
或-e os_version="9"
。重要事項:等待手冊順利執行並到達暫停工作。在此階段的手冊中,Oracle Linux 的安裝已完成,且執行處理已就緒。請注意先前的播放,其會列印部署節點的公用和專用 IP 位址,以及執行實驗室時所需的任何其他部署資訊。
安裝 Oracle Linux Automation Engine Control Node
控制節點是執行 Oracle Linux Automation Engine 手冊的系統。執行手冊之前,必須先安裝 Oracle Linux Automation Engine 套件。
-
開啟新終端機,並透過 SSH 連線至 ol-control-node 系統。
ssh oracle@<ip_address_of_instance>
-
安裝 Oracle Linux Automation Engine 套裝程式和相依性。
sudo dnf install -y ansible-core
ansible-core 套裝軟體可於 ol8_appstream 儲存庫中取得。
-
測試套裝軟體安裝。
ansible --version
複查輸出並尋找預設版本的 Python Oracle Linux Automation Manager。這就是必須安裝 Python 適用的 Oracle Cloud Infrastructure (OCI) SDK 的環境。
注意:如果輸出顯示錯誤:Ansible 需要將地區設定編碼設為 UTF-8;偵測到「無」。,代表
ansible
的地區設定設定不正確。設定這兩個環境變數來修正問題:export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
設定 Python 適用的 Oracle Cloud Infrastructure SDK
OCI 動態產品目錄 Plugin 需要在控制節點上使用 OCI SDK 進行 Python 組態設定。我們可以使用 Python 套裝程式安裝程式 Oracle Linux RPM 或 PIP 安裝 OCI SDK。
-
使用 PIP 安裝適用於 Python 的 OCI SDK。
-
安裝 PIP 的套裝軟體和相依性。
sudo dnf install -y python3.12-pip python3.12-setuptools
-
安裝 Python 套裝軟體
/usr/bin/python3.12 -m pip install oci
如果您位於代理伺服器後方,請增加
--proxy
選項。執行python3.12 -m pip help install
命令可在說明中取得詳細資訊。
-
-
Test the OCI SDK for Python installation by printing its version.
python3.12 -c "import oci;print(oci.__version__)"
-
建立 OCI SDK 預設組態目錄。
mkdir -p ~/.oci
-
建立 SDK 預設組態檔
免費實驗室提供預先產生的 SDK 組態,我們可以複製到使用
scp
的 ol-control-node 系統。-
從桌面環境開啟一個 new 終端機。
-
將所有 SDK 組態檔複製到 ol-control-node 系統。
scp ~/.oci/* oracle@<ip_address_of_instance>:~/.oci/.
exit
如果您在免費實驗室環境之外遵循此教學課程,請參閱 OCI 文件的 SDK 和 CLI 組態檔和必要的金鑰和 OCID 區段中提供的指示,以產生您的 OCI 組態檔。
-
-
切換到連線至 ol-control-node 系統的終端機視窗。
-
更新 SDK 組態檔中
key_file
的位置。從桌面環境複製 SDK 組態檔時,必須修改
key_file
的使用者本位目錄部分。sed -i 's/luna.user/oracle/g' ~/.oci/config
-
建立測試 Python 命令檔以確認 SDK 運作中。
cat << EOF | tee test.py > /dev/null import oci object_storage_client = oci.object_storage.ObjectStorageClient(oci.config.from_file()) result = object_storage_client.get_namespace() print("Current object storage namespace: {}".format(result.data)) EOF
test.py
命令檔會顯示所設定 OCI 租用戶和區間的物件儲存命名空間。 -
執行命令檔
python3.12 test.py
測試命令檔已順利列印所設定租用戶的唯一命名空間。
安裝 Oracle Cloud Infrastructure Ansible 集合
OCI Ansible 集合包含一組模組,可將雲端基礎架構的佈建和組態自動化、協調複雜的作業處理作業,以及部署和更新軟體資產。
-
建立專案目錄。
mkdir ~/myproject
-
建立必修課程檔案。
cat << EOF | tee ~/myproject/requirements.yml > /dev/null --- collections: - name: oracle.oci EOF
-
安裝 OCI Ansible 集合。
ansible-galaxy collection install -r ~/myproject/requirements.yml
如果您已安裝舊版本,請使用
--force
選項執行指令,以取得最新版本。ansible-galaxy collection install --force oracle.oci
使用 OCI 動態產品目錄
Oracle 在 OCI Ansible 集合中包括其動態產品目錄 Plugin。
-
建立 YAML 組態來源以設定產品目錄 Plugin。
來源檔案名稱必須為
<filename>.oci.yml
或<filename>.oci.yaml
。其中<filename>
是使用者定義的實用 ID。cat << EOF | tee ~/myproject/myproject.oci.yml > /dev/null --- plugin: oracle.oci.oci # Optional fields to specify oci connection config: config_file: ~/.oci/config config_profile: DEFAULT EOF
-
建立產品目錄圖表以測試產品目錄 Plugin。
ansible-inventory -i ~/myproject/myproject.oci.yml --graph
輸出會顯示一系列的警告與錯誤。什麼東西不對勁?
發生此錯誤的原因是 Plugin 需要知道區間 OCID。如果您提供租用戶 OCID (而非區間 OCID) 且具備正確的權限,Plugin 將會產生整個租用戶的產品目錄。
Plugin 無法直接從 SDK 組態檔讀取區間 OCID 資訊,請將它加到 Plugin 組態來源檔案。
-
從 SDK 組態檔擷取區間 OCID,然後將其指定給 comp_ocid 變數。
comp_ocid=$(grep -i compartment ~/.oci/config | sed -e 's/compartment-id=//g')
-
將區間參數附加至 Plugin 來源檔案。
cat << EOF | tee -a ~/myproject/myproject.oci.yml > /dev/null compartments: - compartment_ocid: "$comp_ocid" fetch_compute_hosts: true EOF
fetch_compute_hosts
若設為true
,產品目錄只會收集運算主機上的資訊,並忽略區間內部署的其他執行處理類型。 -
重新執行測試。
ansible-inventory -i ~/myproject/myproject.oci.yml --graph
我們的範例將區間內可用的運算執行處理顯示為以
@
字元指定的產品目錄群組清單,並顯示執行處理的公用 IP 位址。如果我們想要私有 IP 位址,該怎麼辦?
必須根據控制器節點的實體位置或雲端基礎架構內設定的網路拓樸,擷取專用 IP 位址。另一個擷取專用 IP 位址的原因是要求的運算執行處理只有專用 IP 位址時。
-
更新 Plugin 組態來源檔案,以變更 Plugin 主機名稱格式參數。
cat << EOF | tee -a ~/myproject/myproject.oci.yml > /dev/null hostname_format_preferences: - "private_ip" - "public_ip" EOF
以上的範例格式將優先於公用 IP 位址的系統專用 IP 位址。如需此組態的詳細資訊,請參閱文件中的主機名稱格式偏好設定。
-
重新測試外掛程式。
ansible-inventory -i ~/myproject/myproject.oci.yml --graph
輸出現在會顯示專用 IP 位址。
執行手冊
有了動態庫存設定與設定,我們就可以使用它來執行簡單手冊。請確定您在控制節點與任何匯票之間啟用 SSH 存取。我們已在第一次部署執行處理時,使用無密碼 SSH 登入設定。
-
建立偵測主機的手冊。
cat << EOF | tee ~/myproject/ping.yml > /dev/null --- - hosts: all,!$(hostname -i) tasks: - name: Ansible ping test ansible.builtin.ping: EOF
Oracle Linux Automation Engine 會在
- hosts:
項目之後預期使用逗號區隔的主機或群組清單,而!
則表示應該排除這些項目。all
項目會將產品目錄中顯示的每個主機偵測為最上層群組內的@all
。您可以修改此手冊,從名稱移除@
字元並將該名稱輸入- hosts:
項目,以使用與圖表輸出不同的群組。 -
執行此手冊 。
ansible-playbook -u opc -i ~/myproject/myproject.oci.yml ~/myproject/ping.yml
出現提示時,接受 ECDSA 金鑰指紋。
-i
選項會設定使用的動態產品目錄檔案。-u
選項可在嘗試連線時設定遠端 SSH 使用者。
接下來的步驟
完成以 ok 狀態執行的手冊會確認 Oracle Linux Automation Engine 已順利使用 OCI 動態產品目錄與其在區間內發現的遠端執行處理進行通訊。繼續學習並使用此功能來協助管理您的 OCI 執行處理機組,以及對 Oracle Linux 執行例行管理作業。
相關連結
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Use an OCI Dynamic Inventory with Oracle Linux Automation Engine
F55848-02
Copyright ©2022, Oracle and/or its affiliates.