第十三周--作业

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)网关超时

posted @   এ蓝桉、  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示