本分步指南提供了在 Linux 上安裝和配置 Ansible 的說明。它還描述瞭如何在 Linux 上設置 Ansible homelab 以學習 ansible 的基礎知識。

內容

  1. 1.首先
  2. 2.3 node ansible lab架構圖
  3. 3. 在 Linux 上安裝和配置 Ansible
    1. 3.1。 在 Linux 上安裝 Ansible
      1. 3.1.1。使用系統包管理器安裝 Ansible
      2. 3.1.2. 使用 Pip 安裝 Ansible
    2. 3.2. Ansible 設置
      1. 3.2.1。為被管節點生成 SSH 密鑰對
      2. 3.2.2. Ansible 配置測試
  4. 結論是

1.首先

Ansible 是一個 IT 自動化工具,可以在軟件環境中自動執行“N”個任務。 了解 Ansible 是什麼以及它的作用 介紹 Ansible 指導。

Ansible 顯然是為大規模配置管理而設計的。如果您的目標是能夠了解您的環境并快速重建您的環境,那麼您就在正確的軌道上!

Ansible 是 無代理 建築學。含義-託管節點上沒有運行受信任的代理/進程。

正如 Ansile 介紹文章中已經提到的,ansible 有兩種類型的節點。

  • 主控節點 – 安裝 ansible 的服務器/工作站。從此節點運行所有 ansible playbook 和 ansible 命令。
  • 被管節點 – ansible 管理的主機列表。

並非所有受管節點都需要運行相同的分發版本或類型。您可以使用不同類型的 Linux 作為受管節點。

對於控制器和被管節點之間的通信, 基於 ssh 密鑰的身份驗證..

本動手指南描述瞭如何在您的 Linux 發行版上設置 Ansible Labs。

筆記:

  1. Windows 不能用作控制器節點。
  2. 您可以配置多個控制器節點。

在我們開始使用 Ansible 之前,這裡有一張 Ansible 的 homelab 設置圖。

2.3 node ansible lab架構圖

下圖顯示了實驗室的外觀。

設置我的 Ansible 家庭實驗室

出於演示目的,我在 Ubuntu 20.04 上設置了一個控制器節點,在 CentOS 8 和 Ubuntu 21.04 上設置了兩個託管節點。

3. 在 Linux 上安裝和配置 Ansible

首先,我將解釋如何在 Linux 上設置 Ansible 主節點。

3.1。 在 Linux 上安裝 Ansible

Ansible 是用 Python 編寫的,因此必須在 Linux 機器上安裝 Python 才能使 ansible 工作。

幸運的是,所有 Linux 發行版都預裝了 Python。 Ansible 支持 Python 2.7 和 Python 3.5 及更高版本。

要檢查機器上安裝的 Python 版本,可以使用以下命令:輸出可能會有所不同,具體取決於您的發行版中 Python 的配置方式。

$ which python python2 python3
/usr/bin/python2
/usr/bin/python3

檢查您的 Python 版本:

$ python2 --version
Python 2.7.18rc1
$ python3 --version
Python 3.8.5
$ compgen -c python | grep -P '^python..d'
python3.8
python3.8-config
python2.7

在 Linux 上安裝 ansible 有兩種方法。

  1. 使用操作系統包管理器
  2. 利用 畫中畫 – Python 包管理器

3.1.1。使用系統包管理器安裝 Ansible

首先,我將向您展示如何使用您的發行版的包管理器安裝 ansible。 運行以下命令,具體取決於您的 Linux 發行版。

在 Arch Linux、EndeavourOS、Manjaro Linux 上安裝 Ansible。

$ sudo pacman -S ansible

德比安:

編輯 /etc/apt/sources.list 文檔:

$ sudo nano /etc/apt/sources.list

添加以下行。

deb https://ppa.launchpad.net/ansible/ansible/ubuntu trusty main

然後運行以下命令:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible

軟呢帽:

$ sudo dnf install ansible

CentOS、RHEL、AlmaLinux、Rocky Linux:

$ sudo dnf install epel-release
$ sudo dnf install ansible

Ubuntu 及其衍生產品:

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible

您的發行版可能附帶舊版本的 Ansible。如果你想在你的系統上安裝一個新的 Ansible 版本,你可以使用: 觀點Python 包管理器。

3.1.2. 使用 Pip 安裝 Ansible

首先,通過執行以下操作確保您已安裝 pip:

$ which pip pip3
/usr/bin/pip
/usr/bin/pip3
$ pip --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
$ pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

如果未安裝 pip,請運行以下命令進行安裝。

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py --user

安裝 pip 後,運行以下命令安裝 ansible。

$ sudo python3 -m pip install ansible

這將安裝最新的 Ansible 版本。

也可以安裝特定的 Ansible 版本,比如 2.9,如下:

$ sudo python3 -m pip install 'ansible==2.9'

安裝 Ansible 後,運行以下命令檢查 ansible 的版本。

$ ansible --version

此命令提供有關主機文件、配置文件、ansible 二進製文件的位置以及安裝的 Ansible 版本的信息。

樣本輸出:

ansible 2.9.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/karthick/.ansible/plugins/modules',
  '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

3.2. Ansible 設置

如前所述,Ansible 是 ssh 身份驗證協議。

創建 ssh 密鑰對並將它們分發到所有受管節點。因此,每次發送 ansible 命令時,都會使用這些密鑰對被管節點進行身份驗證。

3.2.1。為被管節點生成 SSH 密鑰對

創建一個新的命名用戶 可以理解為 在控制器和受管節點上。

$ sudo useradd ansible               ##create user 
$ sudo passwd ansible                ##set password for ansible user.

以 Ansible 用戶身份登錄/切換,並使用以下命令創建 ssh 密鑰對:

$ su - ansible
$ ssh-keygen -t rsa

此命令將生成一個 SSH 密鑰對。

立即分發 公鑰 對於所有受管節點。

你可以使用它 ssh-copy-id 將公鑰複製到目標節點的命令。

要使用 ssh-copy-id 命令將公鑰複製到目標節點,請運行以下命令:

$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]

如果你有更多的節點, for loop 將 ssh 密鑰複製到所有目標節點。

出於本指南的目的,我有兩個託管節點並將它們命名為 centos1 (Centos8) 和 Ubuntu1 (Ubuntu 20.04)。我使用以下代碼將密鑰複製到兩個節點。

$ for node in centos1 ubuntu1; do ssh-copy-id -i /home/ansible/.ssh/id_rsa [email protected]${node} done
將 SSH 密鑰複製到目標節點

然後登錄到受管節點以驗證基於密鑰的身份驗證是否正常工作。

$ ssh [email protected]

這樣就完成了 ansible 的設置。接下來,您需要創建一個清單文件並在託管主機上運行一些 ansible 命令。

3.2.2. Ansible 配置測試

Ansible 有兩個重要的文件要提交 為了這劇本 命令。

  1. Ansible.cfg – Ansible 配置文件。
  2. Hosts – 提供主機詳細信息的清單文件。

配置和清單文件在另一篇文章中詳細討論。當您運行第一個 ansible 命令時,您只需將受管節點的主機名添加到清單文件中。

Ansible 配置文件位於: /etc/ansible/ansible.cfg 文檔。你也可以運行 ansible version 命令:

$ ansible --version
ansible 2.9.0
 config file = /etc/ansible/ansible.cfg
 configured module search path = ['/home/karthick/.ansible/plugins/modules',
'/usr/share/ansible/plugins/modules']
 ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
 executable location = /usr/local/bin/ansible
 python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

打開 ansible.cfg 創建一個文件並找到參數列表。 Ansible 在運行時引用這個參數來獲取庫存文件的路徑。

$ sudo grep -iw "^#Inventory" /etc/ansible/ansible.cfg
#inventory        = /etc/ansible/hosts

庫存默認值 /etc/ansible/hosts 文檔。打開 hosts 創建一個文件並添加被管節點的主機名/IP 地址。

由於存在 DNS 到 IP 的映射,因此請在 hosts 文件中指定 DNS 名稱。 您還可以指定 IP 地址。

Ansible 庫存文件Ansible 庫存文件

一切都設置為在 ansible 中執行任務!

它類似於 "Hello world" 在程序編程中,ansible也有做的傳統 ping 模塊作為檢查控制器和被管節點之間連接的第一個命令。

這個 ping 模塊訪問被管節點,檢查Python解釋器是否可用,響應如下: pong..

$ ansible all -m ping

您還可以使用顯式指定主機文件 -i 跡像是:

$ ansible all -m ping -i flag <path-to-host-file>
AnsiblePing 模塊AnsiblePing 模塊

您現在可以開始使用您需要的模塊了。

要添加更多控制器節點,只需將 SSH 密鑰從控制器節點複製到新節點,並將 IP / DNS 條目添加到主機文件。 Ansible 然後可以開始檢索新添加的受管節點。就這麼容易!

結論是

本指南解釋瞭如何在 Linux 上安裝和配置 Ansible。我們還展示瞭如何手動設置 3 節點 Ansible 家庭實驗室。

還有其他自動化解決方案,例如使用設置 ansible 實驗室 流浪漢烤肉店..這些主題將在以後的文章中介紹。

Ansible 是一個廣闊的話題! 我只解釋了 Ansible 的基礎知識。查看 Ansible 官方文檔 了解有關使用 Ansible 的更多信息。

AnsibleAnsibleLabSetupAutomationConfiguration Management SystemConfigure AnsibleInstallAnsibleITAutomationLinuxLinuxManagement開源PythonRedhat