一、简介
Ansible是一种开源的自动化工具,它用于配置管理、应用程序部署、任务自动化等。由于其简单性、灵活性和强大的功能,Ansible已经成为许多组织中自动化IT基础设施的首选工具。
关键特点和用途:
- 简单易用: Ansible使用YAML语言编写配置文件,易于理解和编写。它不需要在被管理的主机上安装任何代理程序,只需使用SSH协议即可进行通信。
- 无代理: Ansible不需要在目标系统上安装任何客户端代理。这使得部署和维护相对简单,同时减少了对目标系统的侵入性。
- 模块化: Ansible使用模块来执行各种任务,例如包管理、服务启停、文件操作等。用户可以编写自己的模块,或者使用社区提供的丰富模块库。
- 剧本(Playbooks): Ansible使用Playbooks来定义一系列任务,以及任务的执行顺序。Playbooks使用YAML语法,使得用户可以轻松描述复杂的自动化流程。
- 可扩展: Ansible可以与其他工具和系统集成,包括云服务提供商(如AWS、Azure、Google Cloud)、监控系统、源代码管理工具等。
- 多平台支持: Ansible可以管理多种操作系统,包括Linux、Unix、Windows等。
- 实时性: Ansible支持实时任务执行,可以用于快速响应和自动修复。
- 强大的社区支持: Ansible拥有庞大的社区,用户可以在社区中分享Playbooks、模块和经验,从中获取支持和帮助。
- IT基础设施自动化: Ansible广泛用于自动化IT基础设施的各个方面,包括服务器配置、应用程序部署、网络设备配置等。
二、部署步骤(在线/离线)
2.1 在线安装
2.1.1 安装epel源
阿里:https://developer.aliyun.com/mirror/epel?spm=a2c6h.13651102.0.0.3e221b11XkAJAf
epel(RHEL 8)
1)安装 epel 配置包
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
2)将 repo 配置中的地址替换为阿里云镜像站地址
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
epel(RHEL 6) (epel6官方源已下线,建议切换epel-archive源)
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-archive-6.repo
2.1.2 安装ansible
yum clean all
yum makecache
yum -y install ansible
2.2 离线安装
yum install yum-utils -y
yum -y install epel-release
yumdownloader --resolve --destdir /root/ansible ansible
yumdownloader --resolve --destdir /root/ansible createrepo
yumdownloader --resolve --destdir /root/ansible rpm
tar -czvf ansible.tar.gz /root/ansible #打包
将打包好的包上传到离线设备
tar -zxf ansible.tar.gz
rpm -ivh ansible-2.9.27-1.el7.noarch.rpm --nodeps
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm --nodeps
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm --nodeps
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm --nodeps
rpm -ivh rpm-4.11.3-48.el7_9.x86_64.rpm --nodeps
2.3 配置
[defaults]
inventory = /home/ansible/hosts #清单路径
sudo_user = root
roles_path = /home/ansible/roles #角色路径
remote_user = alice #node上使用的用户
[privilege_escalation] #提权
become=True #是否提权
become_method=sudo #提权方式
become_user=root #提权用户
become_ask_pass=False #询问密码