溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Ansible自動(dòng)化工具如何安裝配置

發(fā)布時(shí)間:2021-10-25 13:59:18 來源:億速云 閱讀:129 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“Ansible自動(dòng)化工具如何安裝配置”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Ansible自動(dòng)化工具如何安裝配置”這篇文章吧。

市面上有很多自動(dòng)化工具。我可以舉幾個(gè)例子,例如 Puppet、Chef、CFEngine、Foreman、Katello、Saltstock、Space Walk,它們被許多組織廣泛使用。

自動(dòng)化工具可以做什么?

自動(dòng)化工具可以自動(dòng)執(zhí)行例行任務(wù),無需人工干預(yù),從而使 Linux 管理員的工作變得更加輕松。這些工具允許用戶執(zhí)行配置管理,應(yīng)用程序部署和資源調(diào)配。

Ansible自動(dòng)化工具如何安裝配置

為什么喜歡 Ansible?

Ansible 是一種無代理的自動(dòng)化工具,使用 SSH 執(zhí)行所有任務(wù),但其它工具需要在客戶端節(jié)點(diǎn)上安裝代理。

什么是 Ansible?

Ansible 是一個(gè)開源、易于使用的功能強(qiáng)大的 IT 自動(dòng)化工具,通過 SSH 在客戶端節(jié)點(diǎn)上執(zhí)行任務(wù)。

它是用 Python 構(gòu)建的,這是當(dāng)今世界上最流行、最強(qiáng)大的編程語(yǔ)言之一。兩端都需要使用 Python 才能執(zhí)行所有模塊。

它可以配置系統(tǒng)、部署軟件和安排高級(jí) IT 任務(wù),例如連續(xù)部署或零停機(jī)滾動(dòng)更新。你可以通過 Ansible 輕松執(zhí)行任何類型的自動(dòng)化任務(wù),包括簡(jiǎn)單和復(fù)雜的任務(wù)。

在開始之前,你需要了解一些 Ansible 術(shù)語(yǔ),這些術(shù)語(yǔ)可以幫助你更好的創(chuàng)建任務(wù)。

Ansible 如何工作?

Ansible 通過在客戶端節(jié)點(diǎn)上推送稱為 ansible 模塊的小程序來工作,這些模塊臨時(shí)存儲(chǔ)在客戶端節(jié)點(diǎn)中,通過 JSON 協(xié)議與 Ansible 服務(wù)器進(jìn)行通信。

Ansible 通過 SSH 運(yùn)行這些模塊,并在完成后將其刪除。

模塊是用 Python 或 Perl 等編寫的一些腳本。

Ansible自動(dòng)化工具如何安裝配置

控制節(jié)點(diǎn),用于控制劇本的全部功能,包括客戶端節(jié)點(diǎn)(主機(jī))。

  • 控制節(jié)點(diǎn)Control node

    :使用 Ansible 在受控節(jié)點(diǎn)上執(zhí)行任務(wù)的主機(jī)。你可以有多個(gè)控制節(jié)點(diǎn),但不能使用 Windows 系統(tǒng)主機(jī)當(dāng)作控制節(jié)點(diǎn)。

  • 受控節(jié)點(diǎn)Managed node

    :控制節(jié)點(diǎn)配置的主機(jī)列表。

  • 清單Inventory

    :控制節(jié)點(diǎn)管理的一個(gè)主機(jī)列表,這些節(jié)點(diǎn)在 /etc/ansible/hosts 文件中配置。它包含每個(gè)節(jié)點(diǎn)的信息,比如 IP 地址或其主機(jī)名,還可以根據(jù)需要對(duì)這些節(jié)點(diǎn)進(jìn)行分組。

  • 模塊Module

    :每個(gè)模塊用于執(zhí)行特定任務(wù),目前有 3387 個(gè)模塊。

  • 點(diǎn)對(duì)點(diǎn)ad-hoc

    :它允許你一次性運(yùn)行一個(gè)任務(wù),它使用 /usr/bin/ansible 二進(jìn)制文件。

  • 任務(wù)Task

    :每個(gè)

    動(dòng)作Play

    都有一個(gè)任務(wù)列表。任務(wù)按順序執(zhí)行,在受控節(jié)點(diǎn)中一次執(zhí)行一個(gè)任務(wù)。

  • 劇本Playbook

    :你可以使用劇本同時(shí)執(zhí)行多個(gè)任務(wù),而使用點(diǎn)對(duì)點(diǎn)只能執(zhí)行一個(gè)任務(wù)。劇本使用 YAML 編寫,易于閱讀。將來,我們將會(huì)寫一篇有關(guān)劇本的文章,你可以用它來執(zhí)行復(fù)雜的任務(wù)。

測(cè)試環(huán)境

此環(huán)境包含一個(gè)控制節(jié)點(diǎn)(server.2g.lab)和三個(gè)受控節(jié)點(diǎn)(node1.2g.lab、node2.2g.lab、node3.2g.lab),它們均在虛擬環(huán)境中運(yùn)行,操作系統(tǒng)分別為:

System PurposeHostnameIP AddressOS
Ansible Control Nodeserver.2g.lab192.168.1.7Manjaro 18
Managed Node1node1.2g.lab192.168.1.6CentOS7
Managed Node2node2.2g.lab192.168.1.5CentOS8
Managed Node3node3.2g.lab192.168.1.9Ubuntu 18.04
User: daygeek   

前置條件

  • 在 Ansible 控制節(jié)點(diǎn)和受控節(jié)點(diǎn)之間啟用無密碼身份驗(yàn)證。

  • 控制節(jié)點(diǎn)必須是 Python 2(2.7 版本) 或 Python 3(3.5 或更高版本)。

  • 受控節(jié)點(diǎn)必須是 Python 2(2.6 或更高版本) 或 Python 3(3.5 或更高版本)。

  • 如果在遠(yuǎn)程節(jié)點(diǎn)上啟用了 SELinux,則在 Ansible 中使用任何與復(fù)制、文件、模板相關(guān)的功能之前,還需要在它們上安裝 libselinux-python。

如何在控制節(jié)點(diǎn)上安裝 Ansible

對(duì)于 Fedora/RHEL 8/CentOS 8 系統(tǒng),使用 DNF 命令 來安裝 Ansible。

注意:你需要在 RHEL/CentOS 系統(tǒng)上啟用 EPEL 倉(cāng)庫(kù),因?yàn)?Ansible 軟件包在發(fā)行版官方倉(cāng)庫(kù)中不可用。

$ sudo dnf install ansible

對(duì)于 Debian/Ubuntu 系統(tǒng),使用 APT-GET 命令 或 APT 命令 來安裝 Ansible。

配置下面的 PPA 以便在 Ubuntu 上安裝最新穩(wěn)定版本的 Ansible。

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

對(duì)于 Debian 系統(tǒng),配置以下源列表:

$ echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367$ sudo apt update$ sudo apt install ansible

對(duì)于 Arch Linux 系統(tǒng),使用 Pacman 命令 來安裝 Ansible:

$ sudo pacman -S ansible

對(duì)于 RHEL/CentOS 系統(tǒng),使用 YUM 命令 來安裝 Ansible:

$ sudo yum install ansible

對(duì)于 openSUSE 系統(tǒng),使用 Zypper 命令 來安裝 Ansible:

$ sudo zypper install ansible

或者,你可以使用 Python PIP 包管理工具 來安裝:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py$ sudo python get-pip.py$ sudo pip install ansible

在控制節(jié)點(diǎn)上檢查安裝的 Ansible 版本:

$ ansible --version ansible 2.9.2  config file = /etc/ansible/ansible.cfg  configured module search path = ['/home/daygeek/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']  ansible python module location = /usr/lib/python3.8/site-packages/ansible  executable location = /usr/bin/ansible  python version = 3.8.1 (default, Jan  8 2020, 23:09:20) [GCC 9.2.0]

如何在受控節(jié)點(diǎn)上安裝 Python?

使用以下命令在受控節(jié)點(diǎn)上安裝 python:

$ sudo yum install -y python$ sudo dnf install -y python$ sudo zypper install -y python$ sudo pacman -S python$ sudo apt install -y python

如何在 Linux 設(shè)置 SSH 密鑰身份驗(yàn)證(無密碼身份驗(yàn)證)

使用以下命令創(chuàng)建 ssh 密鑰,然后將其復(fù)制到遠(yuǎn)程計(jì)算機(jī)。

$ ssh-keygen$ ssh-copy-id daygeek@node1.2g.lab$ ssh-copy-id daygeek@node2.2g.lab$ ssh-copy-id daygeek@node3.2g.lab

具體參考這篇文章《在 Linux 上設(shè)置 SSH 密鑰身份驗(yàn)證(無密碼身份驗(yàn)證)》。

如何創(chuàng)建 Ansible 主機(jī)清單

在 /etc/ansible/hosts 文件中添加要管理的節(jié)點(diǎn)列表。如果沒有該文件,則可以創(chuàng)建一個(gè)新文件。以下是我的測(cè)試環(huán)境的主機(jī)清單文件:

$ sudo vi /etc/ansible/hosts [web]node1.2g.labnode2.2g.lab [app]node3.2g.lab

讓我們看看是否可以使用以下命令查找所有主機(jī)。

$ ansible all --list-hosts  hosts (3):   node1.2g.lab   node2.2g.lab   node3.2g.lab

對(duì)單個(gè)組運(yùn)行以下命令:

$ ansible web --list-hosts  hosts (2):   node1.2g.lab   node2.2g.lab

如何使用點(diǎn)對(duì)點(diǎn)命令執(zhí)行任務(wù)

一旦完成主機(jī)清單驗(yàn)證檢查后,你就可以上路了。干的漂亮!

語(yǔ)法:

ansible [pattern] -m [module] -a "[module options]" Details:========ansible: A commandpattern: Enter the entire inventory or a specific group-m [module]: Run the given module name-a [module options]: Specify the module arguments

使用 Ping 模塊對(duì)主機(jī)清單中的所有節(jié)點(diǎn)執(zhí)行 ping 操作:

$ ansible all -m ping node3.2g.lab | SUCCESS => {    "ansible_facts": {        "discovered_interpreter_python": "/usr/bin/python"    },    "changed": false,    "ping": "pong"}node1.2g.lab | SUCCESS => {    "ansible_facts": {        "discovered_interpreter_python": "/usr/bin/python"    },    "changed": false,    "ping": "pong"}node2.2g.lab | SUCCESS => {    "ansible_facts": {        "discovered_interpreter_python": "/usr/libexec/platform-python"    },    "changed": false,    "ping": "pong"}

所有系統(tǒng)都返回了成功,但什么都沒有改變,只返回了 pong 代表成功。

你可以使用以下命令獲取可用模塊的列表。

$ ansible-doc -l

當(dāng)前有 3387 個(gè)內(nèi)置模塊,它們會(huì)隨著 Ansible 版本的遞增而增加:

$ ansible-doc -l | wc -l3387

使用 command 模塊對(duì)主機(jī)清單中的所有節(jié)點(diǎn)執(zhí)行命令:

$ ansible all -m command -a "uptime" node3.2g.lab | CHANGED | rc=0 >> 18:05:07 up  1:21,  3 users,  load average: 0.12, 0.06, 0.01node1.2g.lab | CHANGED | rc=0 >> 06:35:06 up  1:21,  4 users,  load average: 0.01, 0.03, 0.05node2.2g.lab | CHANGED | rc=0 >> 18:05:07 up  1:25,  3 users,  load average: 0.01, 0.01, 0.00

對(duì)指定組執(zhí)行 command 模塊。

檢查 app 組主機(jī)的內(nèi)存使用情況:

$ ansible app -m command -a "free -m" node3.2g.lab | CHANGED | rc=0 >>              total        used        free      shared  buff/cache   availableMem:           1993        1065          91           6         836         748Swap:          1425           0        1424

要對(duì) web 組運(yùn)行 hostnamectl 命令,使用以下格式:

$ ansible web -m command -a "hostnamectl" node1.2g.lab | CHANGED | rc=0 >>   Static hostname: CentOS7.2daygeek.com         Icon name: computer-vm           Chassis: vm        Machine ID: 002f47b82af248f5be1d67b67e03514c           Boot ID: dc38f9b8089d4b2d9304e526e00c6a8f    Virtualization: kvm  Operating System: CentOS Linux 7 (Core)       CPE OS Name: cpe:/o:centos:centos:7            Kernel: Linux 3.10.0-957.el7.x86_64      Architecture: x86-64node2.2g.lab | CHANGED | rc=0 >>   Static hostname: node2.2g.lab         Icon name: computer-vm           Chassis: vm        Machine ID: e39e3a27005d44d8bcbfcab201480b45           Boot ID: 27b46a09dde546da95ace03420fe12cb    Virtualization: oracle  Operating System: CentOS Linux 8 (Core)       CPE OS Name: cpe:/o:centos:centos:8            Kernel: Linux 4.18.0-80.el8.x86_64      Architecture: x86-64

以上是“Ansible自動(dòng)化工具如何安裝配置”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI