一、实验环境说明角色IP 地址操作系统备注Ansible 控制节点192.168.63.208CentOS Linux release 7.9.2009 (Core)安装 Ansible下发管理命令Ansible 被管理节点 1192.168.63.209CentOS Linux release 7.9.2009 (Core)受控主机无需安装 AnsibleAnsible 被管理节点 2192.168.63.210CentOS Linux release 7.9.2009 (Core)受控主机无需安装 Ansible二、系统初始化# 1. 关闭防火墙 systemctl stop firewalld systemctl disable firewalld #添加hosts解析 cat /etc/hostsEOF 127.0.0.1 localhost localhost.localdomain 192.168.63.208 208 192.168.63.209 209 192.168.63.210 210 EOF #修改对应节点主机名 hostname cat /etc/hosts|grep $(ifconfig|grep broadcast|awk {print $2})|awk {print $2};su #配置阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 清空缓存、重建yum缓存 yum clean all yum makecache三、环境部署#检查并配置 EPEL 源EPEL 源包含 Ansible 安装包需先确保源可用 # 192.168.63.208 执行 yum list | grep epel-release #若输出epel-release相关信息说明 EPEL 源已配置 #若无输出执行yum install epel-release -y安装 EPEL 源。 #安装 Ansible # 192.168.63.208 执行 yum install epel-release -y yum install ansible -y ansible --version #安装完成后执行ansible --version验证版本。 #配置 Ansible 主机清单主机清单文件用于定义被管理节点默认路径/etc/ansible/hosts # 192.168.63.208 执行 vi /etc/ansible/hosts #在文件末尾添加被管理节点 IP cat /etc/ansible/hosts EOF 192.168.63.209 192.168.63.210 EOF #配置 SSH 免交互认证预下载证书首次连接需手动验证主机密钥避免 Ansible 执行报错 # 192.168.63.208 执行 ssh root192.168.63.209 # 输入 yes再输入被管理节点 root 密码 ssh root192.168.63.210 # 输入 yes再输入被管理节点 root 密码 执行完成后按CtrlD退出远程连接。四、测试常用命令#验证 Ansible 连通性ping 模块 ansible -k all -m ping -k提示输入 SSH 密码 all匹配主机清单中所有被管理节点 -m ping调用 ping 模块测试连通性 # 验证远程节点系统时间 ansible -k all -m command -a date # 验证远程节点网络连通性ping 百度 ansible -k all -m command -a ping -c 1 www.baidu.com # 查看远程节点磁盘资源使用 ansible -k all -m command -a df -h # copy 模块本地文件拷贝到远程节点 # 拷贝 /etc/passwd 到远程 /tmp 目录设置权限和属主 ansible -k all -m copy -a src/etc/passwd dest/tmp/ mode755 ownerroot # copy 模块远程创建文件并写入内容 # 远程 /tmp 目录创建 hefang.txt写入 Hello World ansible -k all -m copy -a contentHello World dest/tmp/hefang.txt mode755 ownerroot # copy 模块远程文件备份 覆盖 # 覆盖文件前自动备份原文件 ansible -k all -m copy -a contentHello World dest/tmp/hefang.txt backupyes mode755 ownerroot # 批量安装软件,所有节点安装 sysstat、screen ansible all -k -m yum -a namesysstat,screen stateinstalled # 批量卸载软件 # 所有节点删除 sysstat、screen ansible all -k -m yum -a namesysstat,screen stateabsent # 单节点安装软件关闭 GPG 校验 # 仅 192.168.63.209 安装软件适配实验环境修正原IP ansible 192.168.63.209 -k -m yum -a namesysstat,screen stateinstalled disable_gpg_checkno # 批量创建日期命名目录,所有匹配 192.168.* 的节点创建目录 ansible -k 192.168.* -m file -a path/tmp/date %F statedirectory mode755 # 批量创建空文件 ansible -k 192.168.* -m file -a path/tmp/hefang.txt statetouch mode755 # 批量创建日期命名目录,所有匹配 192.168.* 的节点创建目录 ansible -k 192.168.* -m file -a path/tmp/date %F statedirectory mode755 # 创建时间同步定时任务,每天 0 点执行时间同步 ansible -k all -m cron -a minute0 hour0 day* month* weekday* nameNtpdate server for sync time job/usr/sbin/ntpdate 139.224.227.121 # 创建备份型定时任务 ansible -k all -m cron -a minute0 hour0 day* month* weekday* nameNtpdate server for sync time backupyes job/usr/sbin/ntpdate pool.ntp.org # 删除指定定时任务 ansible -k all -m cron -a nameNtpdate server for sync time stateabsent # 基础目录同步,控制节点创建本地目录 mkdir -p /data/test3 # 同步到远程节点对应目录 ansible -k all -m synchronize -a src/data/test3/ dest/data/test3/ # 高级数据同步压缩 删除 过滤 ansible -k all -m synchronize -a src/tmp/ dest/tmp/ compressyes deleteyes rsync_opts--no-motd,--exclude*.txt #本地创建 Shell 脚本 # 192.168.63.208 执行 cat /tmp/1.sh EOF #!/bin/bash echo abc EOF #添加执行权限 chmod ux /tmp/1.sh # 拷贝脚本到远程节点 ansible -k all -m copy -a src/tmp/1.sh dest/tmp/1.sh backupyes mode755 ownerroot # 远程执行脚本并输出日志 # 修正脚本名称执行并写入日志 ansible -k all -m shell -a /bin/sh /tmp/1.sh /tmp/var.log# 被管理节点查看日志192.168.63.209 执行 # 192.168.63.209 执行 cat /tmp/var.log #192.168.63.208 #远程创建目录屏蔽告警 ansible -k all -m shell -a mkdir -p date %F chdir/tmp/ warnno # 远程查看 HTTP 进程 ansible -k all -m shell -a ps -ef | grep http # 远程查看定时任务 ansible -k all -m shell -a crontab -l #远程重启 httpd 服务 ansible -k all -m service -a namehttpd staterestarted # 远程重启网卡服务 ansible -k all -m service -a namenetwork argsens33 staterestarted