一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Ansible 自動化工具安裝、配置和快速入門指南

Ansible 自動化工具安裝、配置和快速入門指南

2021-02-22 22:09Linux中國Magesh Maruthamuthu Python

Ansible 是一個開源、易于使用的功能強大的 IT 自動化工具,通過 SSH 在客戶端節(jié)點上執(zhí)行任務(wù)。它是用 Python 構(gòu)建的,這是當今世界上最流行、最強大的編程語言之一。兩端都需要使用 Python 才能執(zhí)行所有模塊。

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

自動化工具可以做什么?

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

Ansible 自動化工具安裝、配置和快速入門指南

為什么喜歡 Ansible

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

什么是 Ansible?

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

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

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

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

Ansible 如何工作?

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

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

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

 

Ansible 自動化工具安裝、配置和快速入門指南

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

  • 控制節(jié)點Control node:使用 Ansible 在受控節(jié)點上執(zhí)行任務(wù)的主機。你可以有多個控制節(jié)點,但不能使用 Windows 系統(tǒng)主機當作控制節(jié)點。
  • 受控節(jié)點Managed node:控制節(jié)點配置的主機列表。
  • 清單Inventory:控制節(jié)點管理的一個主機列表,這些節(jié)點在 /etc/ansible/hosts 文件中配置。它包含每個節(jié)點的信息,比如 IP 地址或其主機名,還可以根據(jù)需要對這些節(jié)點進行分組。
  • 模塊Module:每個模塊用于執(zhí)行特定任務(wù),目前有 3387 個模塊。
  • 點對點ad-hoc:它允許你一次性運行一個任務(wù),它使用 /usr/bin/ansible 二進制文件。
  • 任務(wù)Task:每個動作Play都有一個任務(wù)列表。任務(wù)按順序執(zhí)行,在受控節(jié)點中一次執(zhí)行一個任務(wù)。
  • 劇本Playbook:你可以使用劇本同時執(zhí)行多個任務(wù),而使用點對點只能執(zhí)行一個任務(wù)。劇本使用 YAML 編寫,易于閱讀。將來,我們將會寫一篇有關(guān)劇本的文章,你可以用它來執(zhí)行復(fù)雜的任務(wù)。

測試環(huán)境

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

System Purpose Hostname IP Address OS
Ansible Control Node server.2g.lab 192.168.1.7 Manjaro 18
Managed Node1 node1.2g.lab 192.168.1.6 CentOS7
Managed Node2 node2.2g.lab 192.168.1.5 CentOS8
Managed Node3 node3.2g.lab 192.168.1.9 Ubuntu 18.04
User: daygeek      

前置條件

  • 在 Ansible 控制節(jié)點和受控節(jié)點之間啟用無密碼身份驗證。
  • 控制節(jié)點必須是 Python 2(2.7 版本) 或 Python 3(3.5 或更高版本)。
  • 受控節(jié)點必須是 Python 2(2.6 或更高版本) 或 Python 3(3.5 或更高版本)。
  • 如果在遠程節(jié)點上啟用了 SELinux,則在 Ansible 中使用任何與復(fù)制、文件、模板相關(guān)的功能之前,還需要在它們上安裝 libselinux-python

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

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

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

$ sudo dnf install ansible

對于 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

對于 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

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

$ sudo pacman -S ansible

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

$ sudo yum install ansible

對于 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é)點上檢查安裝的 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é)點上安裝 Python?

使用以下命令在受控節(jié)點上安裝 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 密鑰身份驗證(無密碼身份驗證)

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

$ 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 密鑰身份驗證(無密碼身份驗證)》。

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

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

$ sudo vi /etc/ansible/hosts

 

[web]

node1.2g.lab

node2.2g.lab

 

[app]

node3.2g.lab

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

$ ansible all --list-hosts

 

hosts (3):

node1.2g.lab

node2.2g.lab

node3.2g.lab

對單個組運行以下命令:

$ ansible web --list-hosts

 

hosts (2):

node1.2g.lab

node2.2g.lab

如何使用點對點命令執(zhí)行任務(wù)

一旦完成主機清單驗證檢查后,你就可以上路了。干的漂亮!

語法:

ansible [pattern] -m [module] -a "[module options]"

 

Details:

========

ansible: A command

pattern: Enter the entire inventory or a specific group

-m [module]: Run the given module name

-a [module options]: Specify the module arguments

使用 Ping 模塊對主機清單中的所有節(jié)點執(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

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

$ ansible-doc -l | wc -l

3387

使用 command 模塊對主機清單中的所有節(jié)點執(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.01

node1.2g.lab | CHANGED | rc=0 >>

06:35:06 up 1:21, 4 users, load average: 0.01, 0.03, 0.05

node2.2g.lab | CHANGED | rc=0 >>

18:05:07 up 1:25, 3 users, load average: 0.01, 0.01, 0.00

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

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

$ ansible app -m command -a "free -m"

 

node3.2g.lab | CHANGED | rc=0 >>

total used free shared buff/cache available

Mem: 1993 1065 91 6 836 748

Swap: 1425 0 1424

要對 web 組運行 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-64

node2.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 文檔

原文地址:https://linux.cn/article-13142-1.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 人生路不在线观看完整版 | 日本高清视频网站 | 男人的天堂在线观看免费 | 好大好深好涨好烫还要 | 天堂在线中文无弹窗全文阅读 | 性鸥美| 亚洲精品国产成人99久久 | lilisha李丽莎喷水大胆在线 | 男gay网站视频免费观看 | 狠狠色婷婷日日综合五月 | 国产另类视频一区二区三区 | 91精品国产91久久 | 91亚洲视频在线观看 | 大东北chinesexxxx露脸 | 朝鲜美女免费一级毛片 | 丝瓜秋葵番茄绿巨人在线观看 | 欧美日韩精品乱国产538 | 精品欧美 | 97精品国产自在现线免费观看 | 欧美日韩视频在线第一区二区三区 | 亚洲精品网址 | 人人艹在线视频 | 欧美一级精品 | 精品久久久久久久久免费影院 | 小寡妇水真多好紧 | 希望影院高清免费观看视频 | 久久午夜一区二区 | 欧美女孩videos | 亚洲国产精品二区久久 | 国产高清好大好夹受不了了 | 美女扒开尿口让男生添 漫画 | 数学老师扒开腿让我爽快 | 小早川怜子息梦精在线播放 | 国产日韩精品一区二区在线观看播放 | 免费看国产精品麻豆 | 国产一卡2卡3卡四卡国色天香 | 特黄特色大片免费高清视频 | 国产精品免费aⅴ片在线观看 | 精品国产福利在线 | 久久精品视频91 | lubuntu网页版在线 |