第十三周--作业
1、ansible-playbook实现MySQL的二进制部署
主控端安装ansible
yum -y install ansible
设置主机清单
vim /etc/ansible/hosts [servers] 10.0.0.8 10.0.0.17 10.0.0.18
基于key验证
vim ssh_key.sh
HOSTS="
10.0.0.8
10.0.0.17
10.0.0.18
"
PASS=409609
ssh-keygen -P "" -f /root/.ssh/id_rsa &> /dev/null
rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null
for i in $HOSTS;do
{
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub $i &> /dev/null
}
done
wait
下载mysql二进制安装包
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-8.0.28-linux-glibc2.12-x86_64.tar.gz
创建playbook剧本
vim install_mysql.yml
---
- name:
hosts: servers
remote_user: root
gather_facts: no
vars:
version: "mysql-cluster-8.0.28-linux-glibc2.12-x86_64"
suffix: "tar.gz"
file: "{{version}}.{{suffix}}"
root_password: 409609
tasks:
- name:
yum:
name:
- libaio
- numactl
state: present
- name:
group:
name: mysql
gid: 306
state: present
- name:
user:
name: mysql
uid: 306
groups: mysql
shell: /sbin/nologin
system: yes
create_home: no
home: /data/mysql
state: present
- name:
unarchive:
src: /root/{{file}}
dest: /usr/local
owner: root
group: root
- name:
file:
src: /usr/local/{{version}}
dest: /usr/local/mysql
state: link
- name:
shell: /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
tags: data
- name:
copy:
src: /root/my.cnf
dest: /etc/my.cnf
- name:
shell: /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld;chkconfig --add mysqld;service mysqld start
- name:
copy:
content: 'PATH=/usr/local/mysql/bin:$PATH'
dest: /etc/profile.d/mysql.sh
- name:
shell: /etc/init.d/mysqld start
- name:
shell: /usr/local/mysql/bin/mysqladmin -uroot password {{ root_password }}
执行playbook剧本
ansible-playbook install_mysql.yml
测试

2、Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html
主控端安装ansible
设置主机清单
基于key验证
以上步骤与第一题相同
创建playbook剧本
---
- name:
hosts: servers
remote_user: root
gather_facts: no
tasks:
- name:
yum:
name: httpd
state: present
- name:
service:
name: httpd
state: started
enabled: yes
- name:
shell: /usr/bin/hostname -I > /var/www/html/index.html
执行playbook剧本
ansible-playbook install_apache.yml
测试

3、http的报文结构和状态码总结
http报文结构: http报文分请求报文和响应报文
请求报文结构: 请求报文由开始行、首部行和实体主体三部分构成

响应报文结构:响应报文也是由开始行、首部行和实体主体三部分组成

http状态码分类
http状态码是用以表示web服务器超文本传输协议响应状态的3位数字代码,大体可分为1-5开头的五类:
①1开头,例如100-101,属于信息提示,表示请求已被接收,等待进一步的处理;
②2开头,例如200-206,表示请求已被服务器成功接受、理解或接收;
③3开头,例如300-307,表示重定向,需要客户端采取进一步的操作才能完成请求;
④4开头,例如400-415,表示客户端错误;
⑤5开头,例如500-505,表示服务器在处理请求的过程中发生错误。
常见http状态码:
200 (OK)表示请求已成功,请求数据通过响应报文的entity-body部分发送
301 (Moved Permanently)请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置
302 (Moved Temporarily)响应报文Location指明资源临时新位置
304 (Not Modified)客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端
307 (Temporary Redirect)浏览器内部重定向
401 (Unauthorized)需要输入账号和密码认证方能访问资源
403 (Forbidden)请求被禁止
404 (Not Found)服务器无法找到客户端请求的资源
500 (Internal Server Error)服务器内部错误
502 (Bad Gateway)代理服务器从后端服务器收到了一条伪响应,如无法连接到网关
503 (Service Unavailable)服务不可用,临时服务器维护或过载,服务器无法处理请求
504 (Gateway Timeout)网关超时

浙公网安备 33010602011771号