-
课程知识回顾部分
- 部署ansible软件程序
a 部署SSH基于秘钥连接
b 安装部署ansible软件 - 配置ansible主机清单
5种配置方式 直接配置IP地址 主机组 配置变量 嵌入式 匹配方式([1:100]) - ansible利用模块管理主机
- ansible剧本编写方法
剧本组成部分: 角色信息 hosts 任务 tasks 触发器信息 handlers
剧本编写规范: 缩进 列表 字典
剧本编写扩展:
a 变量设置方法 3种 编写剧本实现修改主机名称和IP地址
b 剧本判断功能 when setup 判断方式 == != or and
when: (ansible_eth0.ipv4.address == ["10.0.0.41","10.0.0.31"])
c 剧本循环功能 with_items/loop
d 剧本调试功能
忽略错误功能 标签功能 提升剧本执行效率
e 剧本信息注册
f 剧本触发功能 notify: 多个调用触发器 - 剧本整合方法 import_playbook:
- 部署ansible软件程序
-
ansible剧本角色功能配置说明
角色功能有什么用:- 让剧本配置更加规范
- 可以让剧本信息简化
- 可以在汇总剧本中看到主机信息
如何配置角色功能:
第一个历程: 配置好主机清单
vim /etc/ansible/roles/hosts
[rsync_server]
172.16.1.41[rsync_client]
172.16.1.31
172.16.1.7[nfs_server]
172.16.1.31[nfs_client]
172.16.1.41
172.16.1.7第二个历程: 创建角色目录
mkdir /etc/ansible/roles/rsync
mkdir /etc/ansible/roles/rsync/{tasks,files,vars,handlers,templates}
tasks: 目录中定义任务的剧本信息
files: 保存要分发文件信息
vars: 目录保存定义变量剧本文件
handlers: 目录中保存触发器剧本信息
templates: 目录中保存模板文件(jinja2) ???ansible-galaxy init nginx --- 创建角色目录路径信息
第三个历程: 配置角色目录中剧本信息
-
编写tasks/main.yml
编写方式一: 直接编写任务信息- name: install software
yum: name=rsync state=installed - name: push file info
copy: src={{ file_dir }}/{{ item.src }} dest={{ conf_dir }} mode={{ item.mode }}
notify:- rsync_restart
- rsync_port
- rsync_port_info
with_items: - {src: 'rsyncd.conf', mode: '644'}
- {src: 'rsync.password', mode: '600'}
when: ansible_eth0.ipv4.address == "10.0.0.41"
- name: create user
user: name=rsync shell=/sbin/nologin create_home=no
when: ansible_eth0.ipv4.address == "10.0.0.41" - name: create backup dir
file: path=/backup state=directory owner=rsync group=rsync
...省略信息...
编写方式二: 将一个完整的剧本拆分成多个剧本
cat copy_file.yml
- name: push file info
copy: src={{ file_dir }}/{{ item.src }} dest={{ conf_dir }} mode={{ item.mode }}
notify:- rsync_restart
- rsync_port
- rsync_port_info
with_items: - {src: 'rsyncd.conf', mode: '644'}
- {src: 'rsync.password', mode: '600'}
cat install_rsync.yml
- name: install software
yum: name=rsync state=installed
进行多个任务剧本整合:
vim main.yml- include_tasks: install_rsync.yml
- include_tasks: copy_file.yml
- name: install software
2) 保存files/文件信息
[root@m01 files]# ll
总用量 8
-rw-r--r-- 1 root root 409 8月 26 19:00 rsyncd.conf
-rw-r--r-- 1 root root 23 8月 26 18:23 rsync.password
3) 配置vars/main.yml
# cat ../vars/main.yml
conf_dir: /etc/
file_dir: /ansible_playbook/file
4) 配置handlers/main.yml
[root@m01 files]# cat ../handlers/main.yml
- name: rsync_restart
service: name=rsyncd state=restarted
- name: rsync_port
shell: netstat -lntup|grep rsync
register: rsync_port
- name: rsync_port_info
debug: msg={{ rsync_port.stdout_lines }}
第四个步骤: 调取角色信息
[root@m01 ansible]# cat roles/site.yml
- hosts: rsync_server,rsync_client
roles:
- rsync
第五个步骤: 执行角色汇总剧本
ansible-playbook /etc/ansible/roles/site.yml -i /etc/ansible/roles/hosts
补充: templates目录作用:
放置存储模板文件
第一个历程: 修改配置文件 变成 模板文件
vim rsyncd.conf
port = {{ prot }}
第二个历程: 需要将模板文件移动到templates/目录中
mv rsync/files/rsyncd.conf rsync/templates/
第三个历程: 修改复制数据的模块
copy 复制文件数据 == '' 所见即所得
template 复制文件数据 == "" 可以解析{{}}调取变量信息
-
用户访问网站原理过程
- 进行域名解析过程 DNS解析原理(本地查询 递归查询 迭代查询(A记录))
- 和网站服务建立连接 三次握手过程
- 发送HTTP请求信息 HTTP请求报文
- 发送HTTP响应信息 HTTP响应报文
- 和网站服务断开连接 四次挥手过程
HTTP协议是什么? 超文本传输协议
HTTP请求报文结构信息:
请求行:GET / HTTP/1.1
1) 请求方法 GET(获得 客户端 -- 从 -- 服务端获得页面数据信息 ) POST(提交 客户端 -- 发送数据 --- 服务端)
2) 请求内容 请求网站资源信息(页面文件 图片 视频 音频) 没有具体只需求会默认请求首页文件(index.html)
3) 请求使用的协议 HTTP/1.0 HTTP/1.1 HTTP/2.0
TCP长链接: HTTP/1.1 一次链接,可以发送多个请求
TCP短链接: HTTP/1.0 一次链接,可以发送一次请求
请求头:
Hosts: www.oldboyedu.com --- 指定显示什么网站页面 www bbs blog 主机记录信息
User-Agent: curl/7.29.0 --- 根据用户访问客户端信息不同,可以显示不同的页面
空行:
请求主体: get方法没有请求主体 post方法具有请求主体???HTTP响应报文结构信息:
起始行:
HTTP/1.1 302 Found- 协议信息
- 响应状态码信息
响应头:
空行:
响应主体:
-
课程知识总结:
- ansible剧本角色功能配置
- 用户访问网站原理过程
- HTTP协议报文结构
请求报文: 请求行(请求方法 请求内容 协议-TCP长连接/端连接) 请求头(Hosts UA) 空行 请求主体 post方法有
响应报文: 起始行(状态码信息 304 401)