实验环境:
ansible服务器:192.168.8.5
web服务器:192.168.8.6
nfs服务器:192.168.8.7
rsync服务器:192.168.8.8
注:在(自动化运维)的基础上做,亦或自行搭建环境安装ansible(yum -y install ansible)
编辑ansible主机文件
vim /etc/ansible/hosts
在文件末尾添加内容
[web]
192.168.8.6
[nfs]
192.168.8.7
[rsync]
192.168.8.8
[benet:children]
web
nfs
rsync
生成密钥对
ssh-keygen -t rsa
将密钥对拷贝到另外三台主机(web,nfs,rsync)
ssh-copy-id root@192.168.8.6
ssh-copy-id root@192.168.8.7
ssh-copy-id root@192.168.8.8
在web服务器上远程安装httpd
ansible web -m yum -a "name=httpd state=installed"
用ansible工具启动httpd服务
ansible web -m service -a "name=httpd state=started"
编辑hosts主机文件供解析
vim /etc/hosts
192.168.8.5 ansible
192.168.8.6 web
192.168.8.7 nfs
192.168.8.8 rsync
将hosts主机文件以父之名拷贝给各个主机
ansible benet -m copy -a "src=/etc/hosts dest=/etc/hosts backup=yes"
创建一个conf配置文件存放目录
mkdir -p /etc/ansible/conf
进入此目录
cd /etc/ansible/conf
将rsync配置文件拷贝到当前目录下
cp /etc/rsyncd.conf ./
编辑rsync配置文件
vim rsyncd.conf
修改以下内容
uid = root
gid = nobody
address = 192.168.8.8
hosts allow = 192.168.8.0/24
max connections = 4
pid file = /var/run/rsyncd.pid
timeout = 900
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[backup]
path = /backup
read only = no
auth users = rsync_backup
secrete file = /etc/rsync.password
整体效果
注释:
uid = nobody #访问服务的用户名
gid = nobody #访问服务的组
use chroot = yes #建立安全连接,类似ftp锁定目录
pid file = /var/run/rsyncd.pid #进程ID号管理文件
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
#不需要压缩的文件类型
# max connections = 4 #最大连接数
address = 192.168.1.10 #监听地址
port 873 #监听端口号
log file = /var/log/rsyncd.log #指定日志文件
hosts allow = 192.168.1.0/24 #指定允许访问的客户端地址范围
[share]
path = /gongxiang #路径
read only = no #只读
writeable = yes #可写
auth users = zhang3 #认证虚拟用户
secrets file = /etc/rsyncd_users.db #虚拟用户信息文件
将ansible主机刚修改的rsync配置文件拷贝到指定的rsync服务器中,并进行备份
src:源路径 dest:目标路径
注:(保证路径的正确性)
ansible rsync -m copy -a "src=rsyncd.conf dest=/etc/rsyncd.conf backup=yes"
开启rsync服务
ansible rsync -m systemd -a "name=rsyncd state=restarted"
远程在rsync服务器上创建一个目录backup 属主为root 属组为root 使用递归 权限给定777所有权
ansible rsync -m file -a "path=/backup owner=root group=root recurse=yes mode=777"
配置rsync服务器密码文件
ansible rsync -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password owner=root group=root mode=600"
查看文件是否存在
ansible rsync -m shell -a "ls -l /etc/rsync.password"
黄色即为执行成功
查看内容是否存在
ansible rsync -m shell -a "cat /etc/rsync.password"
配置所有服务器的rsync密码连接文件属主为root,属组为root,权限600
ansible benet -m copy -a "content='1' dest=/etc/server.pass owner=root group=root mode=600"
进行备份测试,备份web服务器的httpd.conf文件
ansible web -m shell -a "rsync -avz --password-file=/etc/server.pass /etc/httpd/conf/httpd.conf rsync_backup@rsync::backup"
备份成功
查看是否有内容
ansible rsync -a "ls /backup"
服务状态类型
使用ansible工具关闭httpd服务
ansible web -m service -a "name=httpd state=stopped enabled=yes"
注释:
name 指定服务名
state 指定服务运行状态
started 开启服务
stopped 关闭服务
reloaded 重载服务
restarted 重启服务
enabled 是否开机自启
组,用户
创建一个组名为“www” 组号为666的组
ansible all -m group -a "name=www gid=666"
删除该组
ansible all -m group -a "name=www gid=666 state=absent"
创建一个名为www的用户
ansible all -m user -a "name=www"
给定密码为123
ansible web -m shell -a "echo 123|passwd --stdin www"
创建目录,文件,属主为root,属组为root,权限为777
ansible rsync -m file -a "path=/a owner=root group=root recurse=yes mode=777"
ansible rsync -m file -a "path=a.txt owner=root group=root recurse=yes mode=777"
挂载共享
使用ansible工具在nfs服务器创建一个挂载目录,属主,组都为root,权限为777
ansible nfs -m file -a "path=/nfs owner=root group=root recurse=yes mode=777"
编辑exports文件
vim /etc/exports
添加以下内容,允许8网段通信
/nfs 192.168.8.0/24(rw,sync,no_root_squash)
将变量文件传输到nfs的/etc/exports下
ansible nfs -m copy -a "src=/etc/exports dest=/etc/exports"
将服务重启
ansible nfs -m systemd -a "name=nfs state=restarted"
ansible nfs -m systemd -a "name=rpcbind state=restarted"
使用ansible进行远程挂载操作,IP为nfs服务器IP,挂载nfs目录到web下的/var/www/html
ansible web -m mount -a "src=192.168.8.7:/nfs path=/var/www/html fstype=nfs state=mounted"
挂载成功
进入nfs服务器进行测试
进入nfs目录
创建一个网页文件
vim index.html
任意写入内容
保存退出
在web服务器中/var/www/html查看
会发现同步成功
在ansible服务器上查看网页文件
ansible nfs -m shell -a "cat /nfs/index.html"
创建一个脚本
vim /root/test.sh
#!/bin/bash
touch /tmp/test{001..999}.txtnsible web -m script -a "/root/test.sh"
在web服务器中执行此脚本
ansible web -m script -a "/root/test.sh"
执行成功
在web服务器中查看创建的文件
创建成功
一些常用的Ansible命令行选项:
-v 或 --verbose: 增加详细程度,可以使用多个 -vvv 来获取更多信息。
--version: 显示Ansible的版本信息。
-m MODULE_NAME: 指定要运行的模块,默认为 command 模块。
-a MODULE_ARGS: 指定模块的参数。
--list-hosts: 显示主机列表。
--private-key=PRIVATE_KEY_FILE: 指定私钥文件路径用于SSH连接。
--user=REMOTE_USER: 指定远程主机上的用户名。
--check: 运行检查,不会实际执行任务。
--syntax-check: 检查Ansible playbook的语法错误