第13周作业
第十三周作业
1、ansible-playbook实现MySQL的二进制部署
2、Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html
3、http的报文结构和状态码总结
ansible-playbook实现mysql二进制安装。
实验步骤
- 配置epel源,安装ansible
- 配置基于key的ssh免密登录
- 配置配置host文件,修改ansible.cfg的host路径
- 下载mysql二进制包,准备my.cnf配置文件
- 编写yaml文件
##配置基于key的ssh免密登录
[root@ansible-ser ~]#cat ssh_keylogin.sh
#!/bin/bash
#var
END=254
PASSWD=123456
#取IP和网段
IP=`ip a s eth0 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.
#扫描本机所在网段的ip,并记录在SCANIP.log内
[ -e ./SCANIP.log ] && rm -f SCANIP.log
for((i=3;i<="$END";i++));do
ping -c 1 -w 1 ${NET}$i &> /dev/null && echo "${NET}$i" >> SCANIP.log &
done
wait
#生成本机id_rsa,并生成本机key
rm -f /root/.ssh/id_rsa
ssh-keygen -P '' -f /root/.ssh/id_rsa
rpm -q sshpass || yum -y install sshpass
sshpass -p 123456 ssh-copy-id -o StrictHostKeyChecking=no $IP
IPLIST=`cat SCANIP.log`
for ip in $IPLIST;do
sshpass -p 123456 ssh-copy-id -o StrictHostKeyChecking=no $ip
done
wait
IPLIST=`cat SCANIP.log`
for ip in $IPLIST;do
sshpass -p 123456 scp -o StrictHostKeyChecking=no -r /root/.ssh root@$ip:
done
wait
#项目文件夹所有文件
[root@ansible-ser /data/ins_mysql]#tree -L 2
.
├── ansible.cfg
├── hosts
├── ins_mysql.yaml
├── my.cnf
├── mysql
│ ├── bin
│ ├── docs
│ ├── include
│ ├── lib
│ ├── LICENSE
│ ├── man
│ ├── README
│ ├── share
│ └── support-files
└── mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
[root@ansible-ser /data/ins_mysql]#vim ins_mysql.yaml
- hosts: mysql
gather_facts: no
tasks:
- name: transmission package
copy: src=/data/ins_mysql/mysql dest=/usr/local/ mode=0731
- name: mkidr /data
file: path=/data state=directory
- name: group
group: name=mysql system=yes
- name: user
user: name=mysql system=yes group=mysql home=/data/mysql shell=/sbin/nologin
- name: path
copy: content='export PATH=/usr/local/mysql/bin:$PATH' dest=/etc/profile.d/mysql.sh mode=711
- name: export path
shell: source /etc/profile.d/mysql.sh; echo $PATH > /tmp/path.log
- name: cp my.cnf
copy: src=/data/ins_mysql/my.cnf dest=/etc/my.cnf
- name: init
shell: mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
- name: denied
shell: chmod -R 731 /usr/local/mysql
- name: server
shell: cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld;chkconfig --add mysqld;chkconfig mysqld on
- name: server start
service: name=mysqld state=started enabled=yes
注意:
- cp后的文件权限问题
- shell模块不具有幂等性,执行时需注意
Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html
[root@ansible-ser /data/ins_apache]#tree
.
├── ansible.cfg
├── hosts
└── ins_httpd.yaml
0 directories, 3 files
---
- hosts: httpd
gather_facts: no
tasks:
- name: yum_install
yum: name=httpd state=present
- name: fork ip
shell: ip a show eth0| awk NR==3 | awk -F[" "/]+ '{print $3}'
register: ip
- name: index
shell: echo "{{ip.stdout}}" > /var/www/html/index.html
- name: server start
service: name=httpd state=started enabled=yes
http的报文结构和状态码总结
请求报文
请求报文的开始行包含内容:方法(get post等) URL 和http版本
首部行一般包含:主机名,主机地址、接受资源类型、客户端类型、接受语言、连接状态等。
GET / HTTP/1.1
Host: 10.0.0.173
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
相应报文
开始行一般包含http版本、状态码;
首部行一般包含内容:时间、服务端类型、超时时间等
HTTP/1.1 200 OK
Date: Fri, 10 Jun 2022 20:06:39 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Fri, 10 Jun 2022 20:02:20 GMT
ETag: "b-5e11d6a784604"
Accept-Ranges: bytes
Content-Length: 11
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
状态码
100+ 信息提示
200+ 成功
300+ 重定向
400+ 客户端错误
500+ 服务端错误
- 200: 成功,请求数据通过响应报文的entity-body部分发送;OK
- 301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
- 302: 响应报文Location指明资源临时新位置 Moved Temporarily
- 304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
- 307: 浏览器内部重定向
- 401: 需要输入账号和密码认证方能访问资源;Unauthorized
- 403: 请求被禁止;Forbidden
- 404: 服务器无法找到客户端请求的资源;Not Found
- 500: 服务器内部错误;Internal Server Error
- 502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
- 503: 服务不可用,临时服务器维护或过载,服务器无法处理请求
- 504: 网关超时
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通