日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Ansible自動化工具安裝、配置和快速入門指南

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

創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元宜章做網(wǎng)站,已為上家服務(wù),為宜章各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

自動化工具可以做什么?

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

為什么喜歡 Ansible?

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

什么是 Ansible?

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

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

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

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

Ansible 如何工作?

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

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

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

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

  • 控制節(jié)點Control node:使用 Ansible 在受控節(jié)點上執(zhí)行任務(wù)的主機(jī)。你可以有多個控制節(jié)點,但不能使用 Windows 系統(tǒng)主機(jī)當(dāng)作控制節(jié)點。
  • 受控節(jié)點Managed node:控制節(jié)點配置的主機(jī)列表。
  • 清單Inventory:控制節(jié)點管理的一個主機(jī)列表,這些節(jié)點在 /etc/ansible/hosts 文件中配置。它包含每個節(jié)點的信息,比如 IP 地址或其主機(jī)名,還可以根據(jù)需要對這些節(jié)點進(jìn)行分組。
  • 模塊Module:每個模塊用于執(zhí)行特定任務(wù),目前有 3387 個模塊。
  • 點對點ad-hoc:它允許你一次性運(yùn)行一個任務(wù),它使用 /usr/bin/ansible 二進(jìn)制文件。
  • 任務(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.lab、node2.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é)點和受控節(jié)點之間啟用無密碼身份驗證。
  • 控制節(jié)點必須是 Python 2(2.7 版本) 或 Python 3(3.5 或更高版本)。
  • 受控節(jié)點必須是 Python 2(2.6 或更高版本) 或 Python 3(3.5 或更高版本)。
  • 如果在遠(yuǎn)程節(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ù)制到遠(yuǎn)程計算機(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 密鑰身份驗證(無密碼身份驗證)》。

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

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

$ sudo vi /etc/ansible/hosts

[web]
node1.2g.lab
node2.2g.lab

[app]
node3.2g.lab

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

$ ansible all --list-hosts

 hosts (3):
   node1.2g.lab
   node2.2g.lab
   node3.2g.lab

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

$ ansible web --list-hosts

 hosts (2):
   node1.2g.lab
   node2.2g.lab

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

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

語法:

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 模塊對主機(jī)清單中的所有節(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

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

$ ansible-doc -l | wc -l
3387

使用 command 模塊對主機(jī)清單中的所有節(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 組主機(jī)的內(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 組運(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-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 文檔。



名稱欄目:Ansible自動化工具安裝、配置和快速入門指南
本文URL:http://www.5511xx.com/article/dhsohep.html