您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“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)執(zhí)行例行任務(wù),無需人工干預(yù),從而使 Linux 管理員的工作變得更加輕松。這些工具允許用戶執(zhí)行配置管理,應(yīng)用程序部署和資源調(diào)配。
Ansible 是一種無代理的自動(dòng)化工具,使用 SSH 執(zhí)行所有任務(wù),但其它工具需要在客戶端節(jié)點(diǎn)上安裝代理。
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 通過在客戶端節(jié)點(diǎn)上推送稱為 ansible 模塊的小程序來工作,這些模塊臨時(shí)存儲(chǔ)在客戶端節(jié)點(diǎn)中,通過 JSON 協(xié)議與 Ansible 服務(wù)器進(jìn)行通信。
Ansible 通過 SSH 運(yùn)行這些模塊,并在完成后將其刪除。
模塊是用 Python 或 Perl 等編寫的一些腳本。
控制節(jié)點(diǎn),用于控制劇本的全部功能,包括客戶端節(jié)點(diǎn)(主機(jī))。
:使用 Ansible 在受控節(jié)點(diǎn)上執(zhí)行任務(wù)的主機(jī)。你可以有多個(gè)控制節(jié)點(diǎn),但不能使用 Windows 系統(tǒng)主機(jī)當(dāng)作控制節(jié)點(diǎn)。
:控制節(jié)點(diǎn)配置的主機(jī)列表。
:控制節(jié)點(diǎn)管理的一個(gè)主機(jī)列表,這些節(jié)點(diǎn)在 /etc/ansible/hosts
文件中配置。它包含每個(gè)節(jié)點(diǎn)的信息,比如 IP 地址或其主機(jī)名,還可以根據(jù)需要對(duì)這些節(jié)點(diǎn)進(jìn)行分組。
:每個(gè)模塊用于執(zhí)行特定任務(wù),目前有 3387 個(gè)模塊。
:它允許你一次性運(yùn)行一個(gè)任務(wù),它使用 /usr/bin/ansible
二進(jìn)制文件。
:每個(gè)
動(dòng)作都有一個(gè)任務(wù)列表。任務(wù)按順序執(zhí)行,在受控節(jié)點(diǎn)中一次執(zhí)行一個(gè)任務(wù)。
:你可以使用劇本同時(shí)執(zhí)行多個(gè)任務(wù),而使用點(diǎn)對(duì)點(diǎn)只能執(zhí)行一個(gè)任務(wù)。劇本使用 YAML 編寫,易于閱讀。將來,我們將會(huì)寫一篇有關(guān)劇本的文章,你可以用它來執(zhí)行復(fù)雜的任務(wù)。
此環(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 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
。
對(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:
$ sudo yum install -y python$ sudo dnf install -y python$ sudo zypper install -y python$ sudo pacman -S python$ sudo apt install -y python
使用以下命令創(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)證)》。
在 /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
一旦完成主機(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è)資訊頻道!
免責(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)容。