大家好,今天我们来聊聊一个神奇的工具,它能让IT运维人员从繁琐的手工操作中解放出来,它就是——Ansible!
一:产品亮点
Ansible 是一种自动化工具,它能够简化配置管理、应用程序部署和任务自动化等工作。与其他自动化工具相比,Ansible 的主要优势之一是其简单性和易用性。通过使用简单的 YAML 语法,用户可以轻松地编写 Playbook,实现对大型 IT 环境的自动化管理。
二:产品优势
- 简单易学:Ansible 的语法简单,学习过 YAML 就能看懂
- 无需代理:Ansible 不需要在目标服务器上安装任何代理,这就像是你告诉朋友去超市买东西,而不需要他先下载一个购物 App。
- 跨平台:无论是 Linux、Windows 还是 MacOS,Ansible 都能游刃有余。
三:产品架构
- connection plugins:负责和被监控端实现通信;
- host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
- playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
- Ansible:ansible核心程序
- Modules:ansible执行任务是由模块执行的,不是ansible它自己执行的
- Playbook:剧本,Yaml定义的文件,类似于shell脚本
四:工作原理
ansible 分为控制端与被控端,当我么需批量的去对主机进行操作的时候,这时候我们可以通过 inventory 定义主机组和主机,安装的时候,我们可以编写playbook 或者 AD-HOC,然后把模块等推给被控端,然后被控端再执行 playbook 或者 AH-HOC,完成任务,这个推送过程是使用ssh的方式推送的,确保安全,并且客户端必须有 Python2,确保能够执行 playbook 或者 AD-HOC。
五:安装部署
1.环境主机
本次实例是在 ubuntu 22.04 系统下进行安装与使用,主机配置为 4C8G ,对于其他的Linux操作系统,本文不保证完全适用,但步骤类似,可以本文为参考进行搭建。
2.安装 ansible
# Ubuntu 编译版可在PPA中获得,配置PPA及安装ansible,执行如下命令:
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
3.配置 ssh 公钥
在我们开始前要先理解 Ansible 是如何通过 SSH 与远程服务器连接是很重要的.
Ansible 1.3及之后的版本默认会在本地的 OpenSSH 可用时会尝试用其进行远程通讯.这会启用 ControlPersist(一个性能特性),Kerberos,和在 ~/.ssh/config 中的配置选项如 Jump Host setup.然而,当你使用 Linux 企业版 6 作为主控机(红帽企业版及其衍生版如 CentOS),其 OpenSSH 版本可能过于老旧无法支持 ControlPersist. 在这些操作系统中,Ansible 将会退回并采用 paramiko (由 Python 实现的高质量 OpenSSH 库). 如果你希望能够使用像是 Kerberized SSH 之类的特性,烦请考虑使用 Fedora, OS X, 或 Ubuntu 作为你的主控机直到相关平台上有更新版本的 OpenSSH 可供使用,或者启用 Ansible 的“accelerated mode“
# ansible 是没有任何代理的,而是通过 ssh 连接,所以我们在操作前需要配置 ssh 公钥
$ ssh-keygen
# 配置域名解析
192.168.1.200 node1.example.com
192.168.1.77 node2.example.com
# 执行 ssh-copy-id
$ ssh-copy-id node1.example.com
$ ssh-copy-id node2.example.com
# 如果被控主机可以登陆,也可将生成的公钥添加的被控主机的authorized_keys文件中
4.使用 ansible
配置好 ssh 与 DNS(域名解析) 后,我们就可以开始使用 ansible 了,第一次使用需要先配置 ansible 内部的 hosts,然后通过命令运行 ansible。
- 配置 hosts
# 进入 /etc/ansible/hosts,配置模块 all
[all]
uat.xplaza.cn ansible_host=172.16.11.196
- 运行 ansible
六:项目代码地址
项目地址:https://github.com/ansible/
国内网站地址:http://www.ansible.com.cn/
原文地址:https://www.xplaza.cn/topic/topicView?topicId=1304