返回部落格

使用 Ansible 和 Ubuntu 20.04 自動化伺服器設定

使用 Ansible 和 Ubuntu 20.04 自動化伺服器設定

簡介

如今,伺服器需要非常頻繁地建立和銷毀。這是因為伺服器有時會承受很大的執行負載,而其他時候負載會減少,從而浪費系統資源。一個常見的例子是電子商務網站在節日期間吸引大量流量。當應用程式的本質是可擴展時,始終需要組態管理工具來使建立伺服器的整個過程變得更容易。Ansible 是一款優秀的組態管理工具,它使用標準程序自動化伺服器建立,從而減少人為錯誤。

Ansible 不需要將特殊軟體安裝在伺服器的節點上。它擁有編寫、建置和促進指令碼自動化所需的所有工具。本教學 詳細說明了如何使用 Ansible 來自動化我們 如何設定您的 Ubuntu 伺服器 教學中的步驟.

先決條件

要完成本指南,我們將使用 Ubuntu 20.04。此外,您還需要:

  • 一個 Ansible 控制節點:一部執行最新 Ubuntu 版本的 Ubuntu 機器。Ansible 的主二進位檔案必須在此機器上安裝並執行。此機器應該要能夠連接到 Ansible 節點。對於這些連接,您需要使用 SSH 金鑰。為避免連接時出現問題,請確保您的 Ansible 控制節點已啟用防火牆。如果您需要協助,請查看我們的 在 Ubuntu 20.04 上安裝與設定 Ansible 部落格。

  • Ansible 主機:需要連接到一個或多個主機。這些主機本質上是 Ansible 中的受控節點。這些必須是 Ubuntu 伺服器。

Ansible Playbook 的功能

您可以手動設定以下所有步驟。但是,我們將自動化此執行過程。當您執行此 playbook 時,它將在您的機器上執行以下操作:

  1. 它將安裝 aptitude,這是 Ansible 首選的套件管理器。

  2. 它將建立一個管理群組 wheel,並具有免密碼的 sudo 權限。

  3. 它將建立一個新的 sudo 使用者。

  4. 它將複製一個本機 SSH 金鑰到 authorized_keys。這將用於遠端主機上的新管理使用者。

  5. 它將停用 root 使用者的密碼驗證。

  6. 它將安裝必要的套件。

  7. 它將設定 UFW 防火牆 以僅允許 SSH 連線。任何其他連線都將被阻止。

一旦 Playbook 執行完畢,將可以使用新使用者。您可以使用此使用者登入系統。

使用 Ansible Playbook

要設定伺服器,您將需要初始伺服器設定 playbook 及其相依性。如果您是第一次使用,則需要使用下方的連結複製(clone)該儲存庫:

如果您的系統中已存在該儲存庫,請執行以下命令以獲取最新更新:

您將在機器上獲得以下檔案結構:

以下是檔案的說明:

  • vars/default.yml:此檔案包含用於設定 Ansible 節點的變數。

  • playbook.yml:此檔案包含要在伺服器上執行的工作。

檔案 vars/default.yml 看起來像這樣:

以下是這些變數的說明。如果您希望編輯它們,可以將其值替換為您自己的值:

  1. create_user:這是建立的使用者。此使用者具有 sudo 權限。

  2. copy_local_key: 這包含本地 SSH 公鑰的路徑。它將被複製到遠端伺服器,作為 authorized_key.

  3. sys_packages: 如果您想在伺服器上安裝一個或多個套件,請在此處以陣列形式列出。

編輯完此檔案後,請儲存內容。之後,在 nano 中按下 CTRL+X , Y. 然後, ENTER 以儲存檔案內容。

現在您已準備好在多台伺服器上執行此 playbook。預設情況下,Playbook 已準備好在您清單中的伺服器上執行。如果您想在某些特定的伺服器上使用 Playbook,可以使用 -l 旗標。現在假設遠端伺服器有多個使用者,您可以使用 -u 旗標來指定要連線的使用者。

如果您的伺服器名稱為 my_server 且使用者名稱為 my_user,然後執行以下命令以在 Ansible 節點上執行:

您將會得到類似以下的輸出:

執行完成後,您可以使用以下命令進行連線:

請記住 my_user 是我們在 vars/default.yml 檔案中使用的名稱。您還需要將上述命令中的伺服器 IP 更改為您伺服器的 IP。如果您提供了 copy_local_key 變數以指向某個自訂 SSH 金鑰,請使用 -i 選項指定位置:

接下來,登入您的伺服器以檢查 UFW 防火牆的規則:

您將會得到如下輸出:

上述輸出確認了 UFW 防火牆已成功完成設定。這是我們 playbook 中的最後一個步驟。如果執行正確,這意味著執行已成功。

Ansible Playbook 內容

我們在本教學中使用的 Playbook 檔案託管於 ansible-playbooks/setup_ubuntu1804 at master · do-community/ansible-playbooks · GitHub。如果您希望查看每個檔案的內容以進行使用或編輯,請點擊每個指令碼頂部的 Raw 按鈕。

為了方便快速參考,我們將分享 Playbook 的完整內容以及相關檔案:

  • vars/default.yml

此檔案包含 playbook 任務將使用的值。這些值包括使用者名稱、權限、SSH 金鑰、作為初始設定一部分要安裝的套件等等:

  • playbook.yml

playbook.yml 檔案包含要執行的工作。首先,該檔案會列出所有要針對的主機。如果您想指定所有伺服器,請將此鍵的值設為 all。接下來,如果您想指定使用 sudo 權限執行的任務,請將變數的值設為 become: true。最後,此檔案需要包含上述 vars/default.yml 檔案的內容。我們接下來包含這些內容以載入此檔案的設定:

結論

自動化是 IT 的關鍵,能確保所有流程皆無誤並遵循標準實踐與程序。由於現今大多數軟體都是透過網路以分散式架構交付,因此建立新伺服器已成為日常工作,例如針對預備環境(staging)、生產環境(production)或甚至是展示環境(demo)等不同環境。

在本教學中,我們示範了如何使用 Ansible 實現伺服器自動化,這是一個強大且易於使用的工具,可以為您節省大量時間。

祝您使用愉快!

author

Shreyas Patil

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

目前尚無留言。成為第一個留言的人吧。