共计 2392 个字符,预计需要花费 6 分钟才能阅读完成。
Ansible 是由 RedHat 资助的开源收费自动化工具。应用 Ansible,咱们能够治理和配置 Linux 和 Windows 零碎,而无需装置任何代理。它基本上能够在 SSH 协定上应用,并且能够一次配置数百台服务器。在 Ansible 术语中,装置 Ansible 的零碎称为管制主机 / 节点,而由 Ansible 治理的零碎称为托管主机。
在这篇文章中,咱们将探讨如何在 Rocky Linux 8 上装置最新版本的 Ansible。
试验筹备
- Control Node – 192.168.1.170 – Minimal Rocky Linux 8
- Managed Host 1 – 192.168.1.121 – Ubuntu 20.04 LTS
- Managed Host 2 – 192.168.1.122 – Rocky Linux 8
- sysops user with admin rights
装置 Ansible
1) 更新零碎
要更新 rocky linux 8,请运行 dnf 命令
$ sudo dnf update -y
重启零碎
$ sudo reboot
2) 配置 EPEL 存储库
Ansible 包及其依赖项在默认的 Rocky Linux 8 包存储库中不可用。因而,要通过 dnf 装置 ansible,咱们必须先配置 EPEL 存储库。
$ sudo dnf install -y epel-release
3) 装置 Ansible
$ sudo dnf install ansible -y
查看 Ansible 版本
$ ansible --version
pip 形式装置 Ansible
如果您正在寻找 Ansible 的最新版本,那么请应用 pip 装置 Ansible。
1) 装置所有更新
$ sudo dnf update -y
重启零碎
$ reboot
2) 装置 python 3.8 和其余依赖项
$ sudo dnf module -y install python38
$ sudo alternatives --config python
键入 3 并按 enter 键
3) 装置 Ansible
$ sudo pip3 install setuptools-rust wheel
$ sudo pip3 install --upgrade pip
$ sudo python -m pip install ansible
Ansible 装置胜利
查看 Ansible 版本
$ ansible --version
验证 Ansible
Whenever Ansible is installed with dnf or yum command then it’s default configuration file‘ansible.cfg’is created automatically under‘/etc/ansible’folder. But when we install it with pip then we have to create its configuration file manually.
每当应用 dnf 或 yum 命令装置 Ansible 时,就会主动创立 /etc/ansible/ansible.cfg 文件,当咱们应用 pip 装置时,咱们必须手动创立其配置文件。
It is recommended to create ansible.cfg for each project. For the
demonstration purpose, I am creating an automation project. Run
following mkdir command,
倡议为每个我的项目创立独立的 ansible.cfg,本文中我创立了一个自动化我的项目。
$ mkdir automation
$ cd automation
创立 ansible.cfg 文件,蕴含以下内容
$ vi ansible.cfg
[defaults]
inventory = /home/sysops/auotmation/inventory
remote_user = sysops
host_key_checking = False
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
保留并退出文件
在 automation 目录下创立一个 inventory 文件,蕴含以下内容
$ vi inventory
[prod]
192.168.1.121
[test]
192.168.1.122
保留并敞开文件
在 ansible.cfg 文件中,我曾经应用 sysops 作为 remote_user,因而让咱们为 sysops 用户创立 ssh 密钥,并在托管主机之间共享它。
$ ssh-keygen
应用 ssh-copy-id 命令共享 SSH 密钥
$ ssh-copy-id sysops@192.168.1.121
$ ssh-copy-id sysops@192.168.1.122
在所有的托管主机上执行以下命令
# echo "sysops ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/sysops
应用 ping 模块验证管制节点到托管主机的连通性
$ cd automation/
$ ansible -i inventory all -m ping
让咱们创立一个剧本 (web.yaml) 在托管主机上安装 nginx 和 php
$ vi web.yaml
---
- name: Play to Packages
hosts:
- test
- prod
tasks:
- name: Install php and nginx
package:
name:
- php
- nginx
state: present
保留并敞开文件
应用上面的 ansible-playbook 命令运行剧本
$ ansible-playbook -i inventory web.yaml
很好,以上输入确认 playbook 曾经胜利执行,它也确认 Ansible 装置正确。
我的开源我的项目
- course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
- course-tencent-cloud(酷瓜云课堂 – github 仓库)