自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ansible 自動(dòng)化工具安裝、配置和快速入門指南

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

市面上有很多自動(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)配。

[[383026]]

為什么喜歡 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)大的編程語言之一。兩端都需要使用 Python 才能執(zhí)行所有模塊。

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

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

Ansible 如何工作?

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

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

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

 

控制節(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ù)需要對這些節(jié)點(diǎn)進(jìn)行分組。
  • 模塊Module:每個(gè)模塊用于執(zhí)行特定任務(wù),目前有 3387 個(gè)模塊。
  • 點(diǎn)對點(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)對點(diǎn)只能執(zhí)行一個(gè)任務(wù)。劇本使用 YAML 編寫,易于閱讀。將來,我們將會(huì)寫一篇有關(guān)劇本的文章,你可以用它來執(zhí)行復(fù)雜的任務(wù)。

測試環(huán)境

此環(huán)境包含一個(gè)控制節(jié)點(diǎn)(server.2g.lab)和三個(gè)受控節(jié)點(diǎn)(node1.2g.labnode2.2g.lab、node3.2g.lab),它們均在虛擬環(huán)境中運(yù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é)點(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

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

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

  1. $ sudo dnf install ansible

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

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

  1. $ sudo apt update
  2. $ sudo apt install software-properties-common
  3. $ sudo apt-add-repository --yes --update ppa:ansible/ansible
  4. $ sudo apt install ansible

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

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

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

  1. $ sudo pacman -S ansible

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

  1. $ sudo yum install ansible

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

  1. $ sudo zypper install ansible

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

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

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

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

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

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

  1. $ sudo yum install -y python
  2. $ sudo dnf install -y python
  3. $ sudo zypper install -y python
  4. $ sudo pacman -S python
  5. $ sudo apt install -y python

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

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

  1. $ ssh-keygen
  2. $ ssh-copy-id daygeek@node1.2g.lab
  3. $ ssh-copy-id daygeek@node2.2g.lab
  4. $ 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è)新文件。以下是我的測試環(huán)境的主機(jī)清單文件:

  1. $ sudo vi /etc/ansible/hosts
  2.  
  3. [web]
  4. node1.2g.lab
  5. node2.2g.lab
  6.  
  7. [app]
  8. node3.2g.lab

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

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

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

  1. $ ansible web --list-hosts
  2.  
  3. hosts (2):
  4. node1.2g.lab
  5. node2.2g.lab

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

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

語法:

  1. ansible [pattern] -m [module] -a "[module options]"
  2.  
  3. Details:
  4. ========
  5. ansible: A command
  6. pattern: Enter the entire inventory or a specific group
  7. -m [module]: Run the given module name
  8. -a [module options]: Specify the module arguments

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

  1. $ ansible all -m ping
  2.  
  3. node3.2g.lab | SUCCESS => {
  4. "ansible_facts": {
  5. "discovered_interpreter_python": "/usr/bin/python"
  6. },
  7. "changed": false,
  8. "ping": "pong"
  9. }
  10. node1.2g.lab | SUCCESS => {
  11. "ansible_facts": {
  12. "discovered_interpreter_python": "/usr/bin/python"
  13. },
  14. "changed": false,
  15. "ping": "pong"
  16. }
  17. node2.2g.lab | SUCCESS => {
  18. "ansible_facts": {
  19. "discovered_interpreter_python": "/usr/libexec/platform-python"
  20. },
  21. "changed": false,
  22. "ping": "pong"
  23. }

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

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

  1. $ ansible-doc -l

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

  1. $ ansible-doc -l | wc -l
  2. 3387

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

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

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

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

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

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

  1. $ ansible web -m command -a "hostnamectl"
  2.  
  3. node1.2g.lab | CHANGED | rc=0 >>
  4. Static hostname: CentOS7.2daygeek.com
  5. Icon name: computer-vm
  6. Chassis: vm
  7. Machine ID: 002f47b82af248f5be1d67b67e03514c
  8. Boot ID: dc38f9b8089d4b2d9304e526e00c6a8f
  9. Virtualization: kvm
  10. Operating System: CentOS Linux 7 (Core)
  11. CPE OS Name: cpe:/o:centos:centos:7
  12. Kernel: Linux 3.10.0-957.el7.x86_64
  13. Architecture: x86-64
  14. node2.2g.lab | CHANGED | rc=0 >>
  15. Static hostname: node2.2g.lab
  16. Icon name: computer-vm
  17. Chassis: vm
  18. Machine ID: e39e3a27005d44d8bcbfcab201480b45
  19. Boot ID: 27b46a09dde546da95ace03420fe12cb
  20. Virtualization: oracle
  21. Operating System: CentOS Linux 8 (Core)
  22. CPE OS Name: cpe:/o:centos:centos:8
  23. Kernel: Linux 4.18.0-80.el8.x86_64
  24. Architecture: x86-64

參考:Ansible 文檔。 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2015-08-17 14:13:52

Ansible輕量自動(dòng)化部署工具

2021-03-02 06:32:03

Ansible系統(tǒng)運(yùn)維

2019-12-02 15:45:53

CentOS 8AnsibleLinux

2020-03-31 10:58:35

網(wǎng)絡(luò)自動(dòng)化SD-WAN軟件定義網(wǎng)絡(luò)

2021-03-01 13:00:21

Ansible系統(tǒng)運(yùn)維

2021-03-31 10:20:54

LinuxParallel SS命令

2022-07-20 12:18:36

Python自動(dòng)化工具tox

2023-08-28 09:14:20

ScrapyPython

2014-09-22 11:24:18

運(yùn)維

2010-05-26 16:21:25

2021-05-19 17:04:29

Python阿里自動(dòng)化工具

2010-12-06 09:56:52

數(shù)據(jù)中心網(wǎng)絡(luò)

2024-03-08 13:11:05

前端自動(dòng)化工具

2015-11-09 10:25:40

自動(dòng)化工具開源

2013-12-19 09:56:12

云計(jì)算自動(dòng)化工具云計(jì)算管理

2021-05-08 09:00:53

AI 工具人工智能

2022-05-06 12:04:24

Ansible管理工具

2017-03-22 18:30:44

Linux運(yùn)維自動(dòng)化ansible

2019-10-30 14:47:05

工具代碼開發(fā)

2017-03-22 16:31:30

Linux運(yùn)維自動(dòng)化ansible
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號