目录Ansible简介核心关键点安装创建SSH免密通道修改hosts文件模块使用常用模块Ansible简介Ansible 是一款开源的基于 Python的自动化运维工具用于配置管理、应用部署、任务自动化和持续交付。其核心特点包括无代理架构基于 SSH 或 WinRM 协议通信和声明式语言YAML 格式的 Playbook简化了自动化流程的实现。核心关键点1.无 Agent仅控制机装 ansible被控机器自带 SSH 即可轻量化2.传输方式底层 SSH 通信安全可靠3.核心组件host inventory主机清单记录所有待管理服务器 IP / 分组playbook剧本 YAML文件批量执行多步自动化任务modules模块内置 yum/apt/file/copy 等上百个模块不用手写 shell4.用途批量执行命令、批量部署代码、统一配置环境等安装使用 Rocky10 操作系统默认root用户在控制主机上安装ansible1.安装epel源yum install -y epel-release2.rocky新版本只能先安装核心yum install -y ansible-core3.安装通用社区模块集合ansible-galaxy collection install community.general创建SSH免密通道建立控制主机与各个被控制主机的免密通道方便传输1.在控制主机上生成RSA公私密钥最好使第一次登录时不用输入yes交互防止后续出错ssh-keygen -t rsa -o StrictHostKeyCheckingno2.然后在~/.ssh/ 下面有id_rsa.pub文件存放公钥与id_rsa文件存放私钥。3.在被控制主机上存放公钥在~/.ssh/ 下面编辑authorized_keys文件加入公钥。 注意该文件的权限最好是600。4.可以先用ssh 用户ip地址来试一下免密登录修改hosts文件在/etc/ansible目录下存在一个hosts文件也就是主机清单记录所有待管理服务器 IP / 分组1.vim /etc/hosts编辑hosts文件添加以下格式的被操控主机IP地址[centos]192.168.150.128[ubuntu]192.168.150.129模块使用命令格式 ansible 主机/分组 -m 模块名 -a 模块参数1值1 模块参数2值2比如我们来让所有的被控制主机去创建一个目录ansible all -m file -a path/ansible_test statedirectory mode755执行效果输出信息的颜色代表着比不同执行状态绿色 OK执行成功该操作使被操控主机无修改黄色 CHANGED执行成功该操作使被操控主机产生变更红色执行失败 / 被操控主机连不上常用模块command 执行简单命令ansible all -m command -a df -hshell 支持复杂命令ansible all -m shell -a ps aux | grep pythonfile 创建目录 / 删除文件 / 改权限ansible all -m file -a path/app statedirectory mode755copy 从控制机推送文件到远端ansible all -m copy -a src/log/messages dest/var/logfetch 从远端拉文件到控制机ansible all -m fetch -a src/var/log/messages dest/logyum 安装软件ansible all -m yum -a namenginx statepresentuser 创建系统用户日志看不到明文密码ansible all -m user -a namesanchuang shell/bin/bashcron 定时任务ansible all -m cron -a nametestjob minute0 hour3 job/bin/bash backup.sh systemd / service 管理服务ansible all -m systemd -a namenginx statestarted enabledyes核心参数说明name必填要管理的服务名称nginx、httpd、flask 等state服务操作started启动服务stopped停止服务restarted重启服务reloaded平滑重载配置不中断连接enabledyes开机自启 / no开机不启动template 使用Jinja2 模板远程动态配置文件ansible web -m template -a src./nginx.conf.j2 dest/etc/nginx/nginx.conf mode644