在 Linux 上安裝和配置 Ansible


本分步指南將引導您完成在 Linux 上安裝和配置 Ansible 的步驟。我們還將向您展示如何在 Linux 上建立 Ansible homelab 以學習 ansible 的基礎知識。

內容

  1. 1.首先
  2. 2. 三節點 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. 您可以配置多個 Controller 節點。

在開始使用 Ansible 之前,讓我向您展示 Ansible 家庭實驗室設置的圖表。

2. 三節點 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、EndeavorOS 和 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

此命令提供有關 hosts 文件、配置文件和 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 地址。

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

Ansible 庫存文件Ansible 庫存文件

一切都設置為使用 ansible 運行任務。

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

這個 ping 該模塊嘗試訪問受管節點,檢查 Python 解釋器是否可用,並響應: pong.

$ ansible all -m ping

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

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

現在你可以開始使用你想要的模塊了。

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

結論是

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

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

Ansible 是一個龐大的話題。 我們只介紹了 Ansible 的基礎知識。查看 Ansible 官方文檔 了解有關使用 Ansible 的更多信息。

AnsibleAnsibleLabSetupAutomationConfiguration Management SystemConfigure AnsibleInstallAnsibleITAutomationLinuxLinux ManagementOpen Source PythonRedhat