Ansible实战

Ansible实战

环境

主机名 外网IP 内网IP 角色
m01 10.0.0.61 172.16.1.61 ansible管理端
backup 10.0.0.41 172.16.1.41 ansible被管理端、rsync服务端、nfs服务端
nfs 10.0.0.31 172.16.1.31 ansible被管理端、rsync客户端、nfs服务端
web01 10.0.0.7 172.16.1.7 ansible被管理端、部署提交作业代码,挂载上传目录即可
web02 10.0.0.8 172.16.1.8 ansible被管理端、部署提交作业代码,挂载上传目录即可

操作思路

1.web01上安装httpd,php服务用来搭建网站
2.web01,nfs,backup三台服务器安装nfs-utils服务
3.nfs服务器做共享存储
5.backup服务器当做nfs共享存储,让nfs无差异备份到backup

发送公钥

如果前期没有管理机没有创建密钥 需要先创建密钥对
[Thu Aug 12 17:39:00 root@m1 ~]
 # ssh-keygen
 
如果是一件创建过密钥对了,那就可以直接下发密钥

ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.7
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.8
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.31
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.41

编辑主机清单

[Thu Aug 12 17:45:59 root@m1 ~]
 # vim /etc/ansible/hosts
[web_group]
web01 ansible_ssh_host=172.16.1.7
web02 ansible_ssh_host=172.16.1.8
[nfs_group]
nfs ansible_ssh_host=172.16.1.31
[bakcup_group]
backup ansible_ssh_host=172.16.1.41
[rsync_install_group:children]
nfs_group
bakcup_group
[nfs_install_group:children]
web_group
nfs_group
bakcup_group

编辑好之后在测试一下
[Thu Aug 12 17:45:59 root@m1 ~]
 # ansible all -m ping
 全是绿色的表明没有问题 都是通的

前戏准备

# 1.准备rsync配置文件
[
[Thu Aug 12 17:55:27 root@m1 ~]
 # vim rsync.moban
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
[backup]
comment = Backup to Rsync
path = /backup

# 2.httpd配置文件
[Thu Aug 12 20:22:09 root@m1 ~]
 # yum install -y httpd (首先在管理机上安装httpd服务)
cp /etc/httpd/conf/httpd.conf . (把这个配置文件复制到root目录下)
vim /root/httpd.conf (修改配置文件 改好了就可以把这个文件后期推出去了)
User www
Group www

# 3.kaoshi.tgz
[Thu Aug 12 20:17:15 root@m1 ~]
       rz -E  (首先在桌面把考试的安装包拖到/root下)
   mkdir kaoshi (在root下创建一个考试目录)
   mv kaoshi.zip  kaoshi (把安装包移到考试这个目录里)
   cd kaoshi/       (进入到考试目录)
  unzip kaoshi.zip  (解压安装包)
  rm -fr kaoshi.zip  (删除这个安装包)
  vim upload_file.php (编辑配置文件更改路径 $wen="/var/www/html/uploads";)
  tar zcf kaoshi.tgz ./* (把剩余的文件重新打包)
  mv kaoshi.tgz /root 把这个打包的安装包移到 root下

image

编辑ad-hoc

[root@m01 ~]# cat ansible_web.sh    (这是开始编辑脚本内容)
#!/bin/bash
# 1.基础操作
#关闭selinux和防火墙
ansible all -m selinux -a 'state=disabled'
ansible all -m service -a 'name=firewalld state=stopped'
#创建统一的用户组和用户
ansible all -m group -a 'name=www gid=666'
ansible all -m user -a 'name=www uid=666 group=666 shell=/sbin/nologin create_home=no'

# 2.安装rsync
ansible rsync_install_group -m yum -a 'name=rsync state=present'
# 3.推送配置文件
ansible backup -m copy -a 'src=/root/rsync.moban dest=/etc/rsyncd.conf owner=root group=root mode=0644'
# 4.创建目录
ansible backup -m file -a 'path=/backup owner=www group=www mode=0755 state=directory'
# 5.创建密码文件
ansible backup -m copy -a 'content="rsync_backup:123" dest=/etc/rsync.passwd owner=root group=root mode=0600'
# 6.启动服务
ansible backup -m service -a 'name=rsyncd state=started enabled=yes'
# 7.安装nfs
ansible nfs_install_group -m yum -a 'name=nfs-utils state=present'
# 8.编辑配置文件
ansible rsync_install_group -m copy -a 'content="/data
172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)" dest=/etc/exports'
# 9.创建共享目录
ansible rsync_install_group -m file -a 'path=/data owner=www group=www mode=0755 state=directory'
# 10.启动nfs
ansible rsync_install_group -m service -a 'name=nfs-server state=started enabled=yes'
# 11.在nfs上创建rsync的密码文件
ansible nfs -m copy -a 'content=123 dest=/etc/rsync.passwd owner=root group=root mode=0600'
# 12.部署web
ansible web_group -m yum -a 'name=httpd,php state=present'
# 13.推送配置文件
ansible web_group -m copy -a 'src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf'
#(如果打包的是zip打包的 那在12步的时候 还需要在安装个unzip命令 本次是tar打包的 服务器本身自带 所以不用安装解压命令了)

# 14.部署代码
ansible web_group -m unarchive -a 'src=/root/kaoshi.tgz dest=/var/www/html'
# 15.创建上传目录
ansible web_group -m file -a 'path=/var/www/html/uploads owner=www group=www mode=0755 state=directory'
# 16.启动httpd服务
ansible web_group -m service -a 'name=httpd state=started enabled=yes'
# 17.挂载上传目录到nfs
ansible web_group -m mount -a 'path=/var/www/html/uploads src=172.16.1.31:/data fstype=nfs state=mounted'
posted @ 2021-08-15 16:48  手可摘星辰1314  阅读(133)  评论(0)    收藏  举报