- 综合架构知识概述说明
- 剧本编写扩展说明
- 剧本整合功能说明
方法一: 编写整合剧本信息
方法二: 编写剧本角色信息 ??? - 网站服务概念原理
- 网站服务资源信息
- 网站服务度量方法
- 网站服务软件程序 nginx
- 网站服务软件介绍 nginx
- 网站服务软件部署
方法一: yum安装
方法二: 编译安装 - 网站服务配置参数
- 综合架构课程回顾:
- 远程服务配置文件说明
- 批量管理服务概念说明
- 批量管理服务部署过程
a 掌握主机清单配置方法 5种
b 掌握批量管理模块使用
ping command shell script file copy fetch yum service user cron mount
c 掌握剧本编写过程方法
3点注意: 缩进(空格) 字典(冒号) 列表(短横线)
剧本语法检查: ansible-playbook --syntax-check
剧本执行过程: ansible-playbook 剧本文件
-
批量管理服务剧本扩展编写
-
剧本变量信息设置方法 OK
-
剧本判断功能设置方法 OK
-
剧本循环功能设置方法 OK
-
剧本标签功能设置方法 OK 便于调试剧本
-
剧本忽略错误设置方法 OK
-
剧本执行加速设置方法
-
剧本信息输出设置方法
-
剧本触发功能设置方法
-
剧本变量信息设置方法
方法一: 在剧本中设置变量 其次加载- hosts: 172.16.1.31
vars:
dir_info: /oldboy
tasks:- name: create file
file: path={{ dir_info }}/nfs.conf state=touch - name: backup file
copy: src={{ dir_info }}/rsync.conf dest=/backup/rsync.conf.bak remote_src=yes
- name: create file
方法二: 在主机清单中设置变量 最后加载
单独给某一个主机设置变量
172.16.1.31 dir_info=/oldboy
批量给多个主机设置变量
[oldboy]
172.16.1.31
172.16.1.32
172.16.1.33
[oldboy:vars]
dir_info=/oldboy方法三: 在剧本执行命令参数中设置变量 优先加载
ansible-playbook -e dir_info=/oldboy test_变量功能.yaml - hosts: 172.16.1.31
-
剧本判断功能设置方法
setup模块: 收集远程主机信息- hosts: all
tasks:- name: create dir with backup
file: name=/etc/backup/ state=directory
when: ansible_eth1.ipv4.address == "172.16.1.41" - name: create dir with data
file: name=/etc/data/ state=directory
when: ansible_eth1.ipv4.address == "172.16.1.31" - name: create dir with database
file: name=/etc/database state=directory
when: ansible_distribution == "CentOS" and ansible_eth1.ipv4.address == "172.16.1.51" - name: create dir with zabbix
file: name=/etc/zabbix state=directory
when: ansible_distribution == "Debian" or ansible_eth1.ipv4.address == "172.16.1.31"
- name: create dir with backup
常见判断条件的信息:
ansible_all_ipv4_addresses: 仅显示ipv4的信息。
ansible_devices: 仅显示磁盘设备信息。
ansible_distribution: 显示是什么系统,例:centos,suse等。
ansible_distribution_major_version: 显示是系统主版本。
ansible_distribution_version: 仅显示系统版本。
ansible_machine: 显示系统类型,例:32位,还是64位。
ansible_eth0: 仅显示eth0的信息。
ansible_hostname: 仅显示主机名。
ansible_kernel: 仅显示内核版本。
ansible_lvm: 显示lvm相关信息。
ansible_memtotal_mb: 显示系统总内存。
ansible_memfree_mb: 显示可用系统内存。
ansible_memory_mb: 详细显示内存情况。
ansible_swaptotal_mb: 显示总的swap内存。
ansible_swapfree_mb: 显示swap内存的可用内存。
ansible_mounts: 显示系统磁盘挂载情况。
ansible_processor: 显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus: 显示cpu个数(只显示总的个数)。 - hosts: all
-
剧本循环功能设置方法
剧本循环参数: with_items loop简单循环书写方式:
- hosts: 172.16.1.31
tasks:- name: add user for oldboy01
user: name={{ item }}
loop:- oldboy01
- oldboy02
- oldboy03
- name: add user for oldboy01
负载循环书写方式:
- hosts: 172.16.1.31
tasks:- name: add user for oldboy01
user: name={{ item.name }} uid={{ item.uid }} shell={{ item.shell }}
loop:- { name: 'oldboy01', uid: '5001', shell: '/sbin/nologin' }
- { name: 'oldboy02', uid: '5002', shell: '/sbin/bash' }
- { name: 'oldboy03', uid: '5003', shell: '/bin/bash' }
- name: add user for oldboy01
https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html
- hosts: 172.16.1.31
-
剧本标签功能设置方法
设置标记任务:
-
name: 06:boot rsync server
service: name=rsyncd state=started enabled=yes
tags: tag06执行标记的任务:
ansible-playbook -i /etc/ansible/hosts.bak01 -t tag06 rsync_auto.yaml
跳过标记的任务
ansible-playbook -i /etc/ansible/hosts.bak01 --skip-tag tag06 rsync_auto.yaml
-
剧本忽略错误设置方法
- hosts: 172.16.1.31
tasks:- name: install software
shell: yum install -y htop - name: create user
shell: useradd oldboy01
ignore_errors: yes - name: create /data
shell: mkdir /data
提示: 由于ansible剧本执行具有串行执行特定, 可以将预期中错误进行忽略, 继续执行后续任务信息
- name: install software
- hosts: 172.16.1.31
-
剧本执行加速设置方法
- hosts: 172.16.1.41
gathering_facts: no
tasks:- name: umount /mnt
mount: path=/mnt state=unmounted
说明: 取消管理端主机收集被管理主机信息功能, 表示剧本中判断功能失效
- name: umount /mnt
- hosts: 172.16.1.41
-
剧本信息输出设置方法
[root@oldboy-m01 /etc/ansible/playbook]# vim test_输出功能.yaml- hosts: 172.16.1.41
tasks:- name: mount nfs dir
mount: src=172.16.1.31:/data fstype=nfs path=/mnt state=mounted - name: check
shell: df -h|grep mnt
register: oldboy - name: display mount info
debug: msg={{ oldboy.stdout_lines }}
- name: mount nfs dir
- hosts: 172.16.1.41
-
剧本信息触发功能说明
-
hosts: 172.16.1.31
tasks:- name: push file
copy: src=/etc/ansible/file/exports dest=/etc/
notify: oldboy
handlers:
- name: oldboy
service: name=nfs state=restarted
说明: 定义一个任务, 只有执行时,才会执行触发器中的任务
定义一个任务, 没有执行时,不会执行触发器中的任务
- name: push file
-
-
利用剧本扩展功能编写剧本:
编写NFS服务一键化部署剧本:
第一个历程: nfs部署流程:
服务端:
01. 安装软件程序 rpcbind nfs-utils
02. 编写配置文件
03. 创建存储目录 目录需要进行授权
04. 启动程序服务 rpcbind nfs
客户端:
01. 安装软件程序
02. 远程挂载操作
03. 检查确认挂载
第二个历程: 编写剧本文件
- hosts: all
tasks:
- name: 01.install software
yum: name={{ item }} state=installed
loop:
- rpcbind
- nfs-utils
- name: 02.push conf file
copy: src=/etc/ansible/conf/exports dest=/etc
notify:
- restart_server
- restart_mount
- name: 03:mkdir dir
file: path=/data state=directory owner=nfsnobody group=nfsnobody
when: ansible_eth1.ipv4.address == "172.16.1.31"
- name: 04:boot server
service: name={{ item }} state=started enabled=yes
loop:
- rpcbind.socket
- nfs
when: ansible_eth1.ipv4.address == "172.16.1.31"
- name: 05:mount dir
mount: src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted
when: ansible_eth1.ipv4.address == "172.16.1.41"
- name: 06:check mount
shell: df -h|grep mnt
register: oldboy
when: ansible_eth1.ipv4.address == "172.16.1.41"
- name: display mount info
debug: msg={{ oldboy.stdout_lines }}
when: ansible_eth1.ipv4.address == "172.16.1.41"
handlers:
- name: restart_server
service: name=nfs state=reloaded
when: ansible_eth1.ipv4.address == "172.16.1.31"
- name: restart_mount
mount: path={{ item.path }} state={{ item.state }}
loop:
- { path: '/mnt', state: 'unmounted' }
- { path: '/mnt', state: 'mounted' }
when: ansible_eth1.ipv4.address == "172.16.1.41"
-
剧本整合功能说明
- 利用整合参数将多个剧本整合
方法一: include 将多个剧本进行整合
- include: rsync_auto.yaml
- include: nfs_auto.yaml
方法二: import_playbook 将多个剧本进行整合
- import_playbook: rsync_auto.yaml
- import_playbook: nfs_auto.yaml
- 利用角色功能叫剧本整合 (规范)
第一个历程: 在 role角色目录中创建角色信息
mkdir rsync_server
mkdir rsync_client
mkdir nfs
第二个历程: 在不同角色目录中创建子目录
mkdir {nfs,rsync_server,rsync_client}/{vars,tasks,templates,handlers,files}vars: 定义变量信息文件
tasks: 定义详细任务信息
templates: 定义模板文件信息 --> 调用var/main.yaml 变量(分发文件 需要使用template模块)
handlers: 定义触发器信息
files: 定义需要分发文件vars目录: 编写文件信息
方法一: 将所有任务信息汇总到一个main文件中
vim tasks/main.yaml- name: 01: install
yum: xxx - name: 02: copy
copy:
方法二: 编写多个不同任务文件, 将多个任务文件整合到main文件中
vim tasks/main.yaml- include_tasks: yum.ymal
- include_tasks: copy.yaml
files: 保存服务程序分发文件信息
ll files/
total 4
-rw-r--r-- 1 root root 30 Oct 20 16:31 exportshandlers: 保存触发器配置信息
cat handlers/main.yaml
- name: restart_server
service: name=nfs state=reloaded
when: ansible_eth1.ipv4.address == "172.16.1.31" - name: restart_mount
mount: path={{ item.path }} state={{ item.state }}
loop:- { path: '/mnt', state: 'unmounted' }
- { path: '/mnt', state: 'mounted' }
when: ansible_eth1.ipv4.address == "172.16.1.41"
- 利用整合参数将多个剧本整合
目录结构信息:
[root@oldboy-m01 /etc/ansible/roles]# tree
.
├── hosts
├── nfs
│?? ├── files
│?? │?? └── exports
│?? ├── handlers
│?? │?? └── main.yaml
│?? ├── tasks
│?? │?? ├── copy.yaml
│?? │?? ├── main.yaml
│?? │?? └── yum.yaml
│?? ├── templates
│?? └── vars
├── rsync_client
│?? ├── files
│?? ├── handlers
│?? ├── tasks
│?? ├── templates
│?? └── vars
├── rsync_server
│?? ├── files
│?? │?? └── rsyncd.conf
│?? ├── handlers
│?? ├── tasks
│?? │?? └── main.yaml
│?? ├── templates
│?? └── vars
│?? └── main.yaml
└── site.yaml
角色信息汇总文件
# cat site.yaml
- hosts: rsync_server
roles:
- rsync_server
- hosts: all
roles:
- nfs
image.png
- 网站服务访问原理过程
- 用户输入域名地址信息
- 会完成域名解析过程 www.baidu.com --> 39.xx.xx.xx
- 建立三次握手
- 发送请求信息 HTTP协议请求
- 回复响应信息 HTTP协议响应
- 所有回复信息会利用浏览器进行解析
- 断开四次挥手
image.png
HTTP协议包含信息: 超文本传输协议
HTTP请求报文:
请求行: 请求方法 请求数据 协议版本
eg: 请求行信息
GET / HTTP/1.1
* 请求方法:
get: 获得网站数据信息(页面代码 图片信息 视频 音频) 用户获得网站资源
post: 提交网站数据信息(登录 注册 发送图片) 用户提到网站资源
* 请求数据:
/ -- 没有指定要的数据信息 网站会自动给你回复一个首页文件信息 index.html
/img/bd.png -- 想要网站服务器上面 img/bd.png图片
* 协议版本:
1.0 TCP连接建立(TCP短链接)
A用户 --- B用户 视频聊天
说了一句话 回复 关闭视频
建立视频聊天
说了一句话 回复 关闭视频
建立视频
总结: 一次连接 发送一次请求
1.1 TCP连接建立(TCP长链接)
A用户 --- B用户 视频聊天
第一件事 回复
第二件事 回复
第三件事 回复
断开会话
总结: 一次连接 发送多个请求
2.0
请求头:
> User-Agent: curl/7.29.0 --- 访问者客户端信息
> Host: www.baidu.com --- 请求不同网站页面
www.baidu.com
news.baidu.com
map.baidu.com
> Accept: */* --- 显示网站特殊功能 压缩 加密
空行:
请求主体:
get 方法没有请求主体
post 方法拥有请求主体
HTTP响应报文:
起始行: 协议信息 状态码信息 状态码描述信息
eg: 举例
HTTP/1.1 200 OK
状态码: 告知访问结果信息
200: 访问成功
301 Moved Permanently: 永久跳转 将域名改写
302 : 临时跳转 将域名改写
响应头:
空行:
响应主体: 网页源代码信息
image.png
网友评论