在單個服務器上配置和部署應用程序通常是一項微不足道的任務。但是,在具有多台服務器的複雜 IT 環境中,這可能是一項艱鉅且耗時的任務。 Ansible 由 Red Hat 開發和維護,是一種開源服務器和軟件配置工具,可簡化應用程序部署和配置管理。 解放您的 IT 運營團隊,以簡單有效的方式自動化服務器配置和應用程序部署。
與 Chef 和 puppet 等類似產品相比,Ansible 是使用最廣泛的工具,因為它不需要代理與遠程主機通信。 Ansible 使用 SSH 協議與遠程目標進行通信。這樣做不會影響遠程主機的 CPU 資源。
Ansible 實驗室設置
在測試環境中,有兩個節點。 由安裝了 Ansible 的控制節點和 Ansible 控制節點組成的遠程主機。
Ansible 控制節點 IP 192.168.2.101 Ubuntu 20.04
遠程主機 IP 192.168.2.104 Ubuntu 20.04
還要確保你有 須藤用戶 它由一個 Ansible 控制節點組成,並且 SSH 守護程序在兩個節點上運行。
讓我們來談談如何在 Ubuntu 20.04 上安裝 Ansible 沒有任何麻煩。
第 1 步:安裝 Ansible
現在登錄到 Ansible 主服務器並以 sudo 用戶身份安裝 Ansible,如下所示:
$ sudo apt install ansible
這將安裝 Ansible 以及一些對於 Ansible 正常工作必不可少的 Python3 包。
安裝完成後,可以如下查看 Ansible 的版本。
輸出提供了一些廣泛的信息。 它顯示了 Ansible 的版本(在本例中為 Ansible 2.9.6)、系統上安裝的模塊、Ansible 可執行文件路徑和 Python 版本。
設置文件- ansible.cfg – Ansible 配置文件是否位於: /etc/ansible 目錄。這些設置決定了 Ansible 如何運行並與遠程客戶端交互。此外,該目錄包含以下文件: 主持人。 這是定義遠程主機或託管主機的地方。就像您在本教程中所做的那樣,在此清單文件中定義遠程主機。
第 2 步:設置無密碼 SSH 登錄
SSH協議提供了兩種認證方式:密碼認證和公鑰/私鑰認證。 使用 SSH 密鑰設置無密碼 ssh 登錄方式,提供更安全、更便捷的遠程主機交互方式。無密碼 SSH 登錄方法提供了與主機交互的無縫方式,因為您在運行 playbook 文件時不必提供密碼。
要設置無密碼的 SSH 登錄,首先生成一個 SSH 密鑰對,如下所示:
$ ssh-keygen
按住 Enter 鍵接受默認建議。
SSH 密鑰對由私鑰和公鑰組成。我們有 id_rsa 這是一個私鑰。而且, id_rsa.pub 這是公鑰。
然後使用root用戶作為遠程主機上的用戶,將公鑰複製到遠程主機上。
筆記
在復制ssh公鑰文件之前,在Ansible配置文件中配置遠程用戶如下:
$ sudo vim /etc/ansible/ansible.cfg
將遠程用戶設置為 根。
remote_user=root
保存文件。
然後去遠程主機並編輯它以啟用遠程root登錄 /etc/ssh/ssh_config 文檔。
$ sudo vim /etc/ssh/ssh_config
添加以下行
PermitRootLogin yes
保存並再次退出。
您現在可以將 SSH 公鑰複製到遠程主機,如下所示。
$ ssh-copy-id [email protected]
如果您是第一次以 root 身份登錄,您將看到如下所示的提示。 只需鍵入“yes”即可繼續連接。輸入遠程主機的 root 密碼會將 SSH 密鑰添加到 root 主目錄。
後續登錄不需要您輸入密碼。要看到這一點,請註銷遠程主機並再次嘗試登錄。
$ ssh [email protected]
如圖所示,這將自動將您移動到遠程主機的 shell。
完美的!無密碼SSH登錄設置完成。接下來,創建一個 playbook 文件來安裝 Apache Web 服務器。
第三步:將遠程主機添加到 Ansible 配置文件中
接下來,在 Ansible 清單文件中定義遠程主機。默認 /etc/ansible/主機 文檔。因此,打開文件。
$ sudo vim /etc/ansible/hosts
文檔 主持人 該結構採用 INI 格式。在下面添加主機的IP地址 網絡服務器 團隊名稱。
[webservers]
192.168.2.104
保存並關閉庫存文件。要查看清單文件中定義的主機,請執行以下步驟:
$ ansible webservers --list-hosts
或者,要查看所有主機組中的所有主機,請運行以下命令:
$ ansible all --list-hosts
接下來,測試遠程主機上是否存在 AnsiblePython 模塊。
$ ansible -m ping webservers
筆記:
這個 平坦的 該模塊不是 ICMP ping 命令。 這是一個簡單的測試,可確保您已安裝 Python3 模塊並存在 SSH。
下面的輸出表明該命令是成功的。輸出還顯示了下面定義的遠程主機的 IP 網絡服務器 團體。如果在多個組下定義了多個主機, 全部 選項。
$ ansible -m ping all
第 4 步:創建一個 playbook 文件來配置遠程主機
定義遠程主機後,創建一個 playbook 文件來安裝 Apache Web 服務器。劇本文件是一個 Ansible YAML 文件,它指定要在遠程主機上執行的任務。
$ sudo vim /etc/ansible/apache.yml
playbook 文件定義如下:請注意,該文件以三個連字符 (-) 開頭。另外,注意縮進。
最後,運行 playbook 文件,如下所示。
$ ansible-playbook /etc/ansible/apache.yml
在運行時,playbook 會非常小心地執行任務並顯示設備上的所有操作。 安裝 Apache Web 服務器並啟動服務。
要驗證您的 Web 服務器是否已成功安裝,請啟動瀏覽器並瀏覽到遠程主機的 IP,如下所示:
https://server-ip/
概括
Ansible 是 DevOps 中廣泛使用的自動化工具,成千上萬的開發人員和系統管理員使用它在服務器上配置和部署應用程序。節省時間並最大限度地減少處理複雜 IT 基礎架構中大量服務器所需的工作量。 我希望您可以在 Ubuntu 20.04 上輕鬆安裝和配置 Ansible。