Ansible 自动化运维

Ansible架构:

一.部署主机清单 前期环境准备:

管理端:

192.168.60.128

被管理端:

client1:192.168.60.129

client2:192.168.60.131

1.1 所有被管理端配置ssh密钥 (1.免密登陆 2.允许root远程登陆) 脚本如下:

bash 复制代码
#!/bin/bash

# 检查 sshpass 是否已安装
if ! command -v sshpass &> /dev/null; then
    echo "请先安装 sshpass 工具!"
    exit 1
fi

# 固定的 IP 地址列表
ip_list="192.168.60.129 192.168.60.131"

# 检查并生成 SSH 密钥
if [ ! -f ~/.ssh/id_rsa ]; then
    echo '----------------'
    echo '1. 创建 key'
    echo '----------------'
    if ! ssh-keygen -f ~/.ssh/id_rsa -t rsa -P ''; then
        echo "生成 SSH 密钥失败!"
        exit 1
    fi
else
    echo "SSH 密钥已存在,跳过生成步骤。"
fi

echo '----------------'
echo '2. 分发 key'
echo '----------------'

for ip in $ip_list; do
    echo "----------------"
    echo "分发 key 到 $ip"
    echo "----------------"
    if sshpass -p2004129 ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@$ip; then
        echo "分发公钥到 $ip 成功!"
    else
        echo "分发公钥到 $ip 失败!"
    fi
done

运行效果:

1.2 控制端安装ansible

2.1安装 EPEL 源:sudo dnf install epel-release

sudo dnf install ansible

ansible --version

ok~~~~~~~~~~~~~~~~~~~~~~~~~~~

3.安装完成之后 配置主机清单~ 配置文件地址:/etc/ansible/hosts

Server1 为组名 将.129 和.131分配在一个组~~~~~~~~~~

4.测试使用:

测试1 # ansible Server1 -m ping //测试主机是否通~~~~~~~~

出现绿色就说明通了~~~~~~

测试2 # ansible Server1 -m command - a 'hostname' // -m 指定模块 -a 执行的命令 command命令执行模块

测试3 #ansible Server1 -m shell -a 'ip addr | grep inet'

注意command不能识别管道!!!!!!

1.3 ansible 核心配置文件:

就最前面这两个

ansible.cfg # ansible核心配置文件

hosts #主机清单

如何设置子组(就是将多个组 合并在一个组)

在host文件下这样写:

data:children // children关键字

组名

组名

~n

测试一下看

ansible data -m ping

测试所有主机是否ping通

ansible all -m ping

ansibel核心模块

如何查询命令帮助: ansible-doc -s command

ansible官方文档:Ansible Documentation

模块使用:

二.命令脚本相关模块

1.command 支持简单的命令 不支持管道符号!!!! 默认模块 不写 也是他

ansible all -m command -a '命令'

2.shell模块 支持 一些特殊的符号!

ansible all -m shell -a 'ip a s ens160 | grep inet'

3.script模块 传输脚本到被管理端 并执行

3.1比如我们在管理端写一个安装nmap软件脚本

脚本内容 名称:

执行命令:ansible all -m script -a '/home/test/script-ans/nmapins.sh'

看一下被控端受否安装(直接在管理端测试nmap这个工具)

ansible all -m shell -a 'nmap localhost'

二.文件相关模块

2.1创建目录和文件

目录:ansible all -m file -a 'path=/home/ansible-test state=directory'

文件:ansible all -m file -a 'path=/home/ansible-test/hello.txt state=touch'

2.2创建软连接

ansible all -m file -a 'src=/home/ansible-test/hello.txt path=/home/test/hello.txt.soft state=link'

看看是否成功:ansible all -a 'ls -l /home/test'

删除(都是加一个参数就可以 state=ansent)

删除一个文件:ansible all -m file -a 'path=/home/ansible-test/hello.txt state=absent'

注意是:state=absent 不是 state:absent

案例:创建一个txt文件 所有者是:root 组:root 权限:755

ansible all -m file -a 'path=/tmp/xxw.txt state=touch group=root owner=root'

三. 文件传输copy模块

ansible all -m copy -a 'src=/home/test/400.txt dest=/home/'

如果当遇到同名的文件 可以备份一下:添加参数:backup=yes

ansible all -m copy -a 'src=/home/test/400.txt dest=/home/ backup=yes'

执行后备份路径为:

备份了原先的内容:

四.服务管理模块

涉及到命令:systemctl 主要就是 服务启动 关闭 开机自/不启动。。。。

1.模块名:systemctld

2.案例: firewalld

2.1关闭

ansible all -m systemd -a 'name=firewalld enabled=no state=stopped'

查看是否关闭:

ansible all -a 'systemctl status firewalld'

注意这不是报错 服务已经关闭 注意看!!!!!

2.2开启

ansible all -m systemd -a 'name=firewalld enabled=yes state=started'

查看是否开启:

ansible all -a 'systemctl status firewalld'

五.磁盘挂载模块 & 定时任务模块

1.mount 挂载nfs

NFS搭建指南

mount模块参数

1.1挂载nfs

1.2卸载nfs挂载

ansible all -m mount -a 'fstype=nfs src="192.168.60.129:/nfs-test" path=/mnt/nfs-gx129 state=absent'

六.用户管理模块 user

6.1参数:
6.2案例:

创建用户xxw

普通命令

ansible:

ansible all -m user -a 'name=xxw uid=8888 shell=/bin/bash home=/home/xxw create_home=yes state=present'

创建虚拟用户test1(不创建家目录 && 命令解释器/sbin/nologin 指定uid=2004)

普通命令: useradd -u2004 -s /sbin/nologin -M test1

ansible:

ansible all -m user -a 'user=test2 uid=10086 shell=/sbin/nologin create_home=no state=present'

相关推荐
用户03284722207015 小时前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
dayuOK63074 天前
写作卡壳怎么办?我的“5分钟启动法”
人工智能·职场和发展·自动化·新媒体运营·媒体
AC赳赳老秦4 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw