- 綜合架構(gòu)知識概述說明
- 劇本編寫擴展說明
- 劇本整合功能說明
方法一: 編寫整合劇本信息
方法二: 編寫劇本角色信息 ??? - 網(wǎng)站服務(wù)概念原理
- 網(wǎng)站服務(wù)資源信息
- 網(wǎng)站服務(wù)度量方法
- 網(wǎng)站服務(wù)軟件程序 nginx
- 網(wǎng)站服務(wù)軟件介紹 nginx
- 網(wǎng)站服務(wù)軟件部署
方法一: yum安裝
方法二: 編譯安裝 - 網(wǎng)站服務(wù)配置參數(shù)
- 綜合架構(gòu)課程回顧:
- 遠程服務(wù)配置文件說明
- 批量管理服務(wù)概念說明
- 批量管理服務(wù)部署過程
a 掌握主機清單配置方法 5種
b 掌握批量管理模塊使用
ping command shell script file copy fetch yum service user cron mount
c 掌握劇本編寫過程方法
3點注意: 縮進(空格) 字典(冒號) 列表(短橫線)
劇本語法檢查: ansible-playbook --syntax-check
劇本執(zhí)行過程: ansible-playbook 劇本文件
-
批量管理服務(wù)劇本擴展編寫
劇本變量信息設(shè)置方法 OK
劇本判斷功能設(shè)置方法 OK
劇本循環(huán)功能設(shè)置方法 OK
劇本標簽功能設(shè)置方法 OK 便于調(diào)試劇本
劇本忽略錯誤設(shè)置方法 OK
劇本執(zhí)行加速設(shè)置方法
劇本信息輸出設(shè)置方法
劇本觸發(fā)功能設(shè)置方法
-
劇本變量信息設(shè)置方法
方法一: 在劇本中設(shè)置變量 其次加載- 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
方法二: 在主機清單中設(shè)置變量 最后加載
單獨給某一個主機設(shè)置變量
172.16.1.31 dir_info=/oldboy
批量給多個主機設(shè)置變量
[oldboy]
172.16.1.31
172.16.1.32
172.16.1.33
[oldboy:vars]
dir_info=/oldboy方法三: 在劇本執(zhí)行命令參數(shù)中設(shè)置變量 優(yōu)先加載
ansible-playbook -e dir_info=/oldboy test_變量功能.yaml - hosts: 172.16.1.31
-
劇本判斷功能設(shè)置方法
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: 僅顯示磁盤設(shè)備信息来屠。
ansible_distribution: 顯示是什么系統(tǒng)捧挺,例:centos,suse等民镜。
ansible_distribution_major_version: 顯示是系統(tǒng)主版本。
ansible_distribution_version: 僅顯示系統(tǒng)版本。
ansible_machine: 顯示系統(tǒng)類型,例:32位刁笙,還是64位。
ansible_eth0: 僅顯示eth0的信息谦趣。
ansible_hostname: 僅顯示主機名疲吸。
ansible_kernel: 僅顯示內(nèi)核版本。
ansible_lvm: 顯示lvm相關(guān)信息前鹅。
ansible_memtotal_mb: 顯示系統(tǒng)總內(nèi)存摘悴。
ansible_memfree_mb: 顯示可用系統(tǒng)內(nèi)存。
ansible_memory_mb: 詳細顯示內(nèi)存情況舰绘。
ansible_swaptotal_mb: 顯示總的swap內(nèi)存烦租。
ansible_swapfree_mb: 顯示swap內(nèi)存的可用內(nèi)存。
ansible_mounts: 顯示系統(tǒng)磁盤掛載情況除盏。
ansible_processor: 顯示cpu個數(shù)(具體顯示每個cpu的型號)叉橱。
ansible_processor_vcpus: 顯示cpu個數(shù)(只顯示總的個數(shù))。 - hosts: all
-
劇本循環(huán)功能設(shè)置方法
劇本循環(huán)參數(shù): with_items loop簡單循環(huán)書寫方式:
- hosts: 172.16.1.31
tasks:- name: add user for oldboy01
user: name={{ item }}
loop:- oldboy01
- oldboy02
- oldboy03
- name: add user for oldboy01
負載循環(huán)書寫方式:
- 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
劇本標簽功能設(shè)置方法
設(shè)置標記任務(wù):
-
name: 06:boot rsync server
service: name=rsyncd state=started enabled=yes
tags: tag06執(zhí)行標記的任務(wù):
ansible-playbook -i /etc/ansible/hosts.bak01 -t tag06 rsync_auto.yaml
跳過標記的任務(wù)
ansible-playbook -i /etc/ansible/hosts.bak01 --skip-tag tag06 rsync_auto.yaml
-
劇本忽略錯誤設(shè)置方法
- 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劇本執(zhí)行具有串行執(zhí)行特定, 可以將預期中錯誤進行忽略, 繼續(xù)執(zhí)行后續(xù)任務(wù)信息
- name: install software
- hosts: 172.16.1.31
-
劇本執(zhí)行加速設(shè)置方法
- 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
-
劇本信息輸出設(shè)置方法
[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
-
劇本信息觸發(fā)功能說明
-
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
說明: 定義一個任務(wù), 只有執(zhí)行時,才會執(zhí)行觸發(fā)器中的任務(wù)
定義一個任務(wù), 沒有執(zhí)行時,不會執(zhí)行觸發(fā)器中的任務(wù)
- name: push file
-
利用劇本擴展功能編寫劇本:
編寫NFS服務(wù)一鍵化部署劇本:
第一個歷程: nfs部署流程:
服務(wù)端:
01. 安裝軟件程序 rpcbind nfs-utils
02. 編寫配置文件
03. 創(chuàng)建存儲目錄 目錄需要進行授權(quán)
04. 啟動程序服務(wù) 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"
-
劇本整合功能說明
- 利用整合參數(shù)將多個劇本整合
方法一: include 將多個劇本進行整合
- include: rsync_auto.yaml
- include: nfs_auto.yaml
方法二: import_playbook 將多個劇本進行整合
- import_playbook: rsync_auto.yaml
- import_playbook: nfs_auto.yaml
- 利用角色功能叫劇本整合 (規(guī)范)
第一個歷程: 在 role角色目錄中創(chuàng)建角色信息
mkdir rsync_server
mkdir rsync_client
mkdir nfs
第二個歷程: 在不同角色目錄中創(chuàng)建子目錄
mkdir {nfs,rsync_server,rsync_client}/{vars,tasks,templates,handlers,files}vars: 定義變量信息文件
tasks: 定義詳細任務(wù)信息
templates: 定義模板文件信息 --> 調(diào)用var/main.yaml 變量(分發(fā)文件 需要使用template模塊)
handlers: 定義觸發(fā)器信息
files: 定義需要分發(fā)文件vars目錄: 編寫文件信息
方法一: 將所有任務(wù)信息匯總到一個main文件中
vim tasks/main.yaml- name: 01: install
yum: xxx - name: 02: copy
copy:
方法二: 編寫多個不同任務(wù)文件, 將多個任務(wù)文件整合到main文件中
vim tasks/main.yaml- include_tasks: yum.ymal
- include_tasks: copy.yaml
files: 保存服務(wù)程序分發(fā)文件信息
ll files/
total 4
-rw-r--r-- 1 root root 30 Oct 20 16:31 exportshandlers: 保存觸發(fā)器配置信息
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"
- 利用整合參數(shù)將多個劇本整合
目錄結(jié)構(gòu)信息:
[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
- 網(wǎng)站服務(wù)訪問原理過程
- 用戶輸入域名地址信息
- 會完成域名解析過程 www.baidu.com --> 39.xx.xx.xx
- 建立三次握手
- 發(fā)送請求信息 HTTP協(xié)議請求
- 回復響應(yīng)信息 HTTP協(xié)議響應(yīng)
- 所有回復信息會利用瀏覽器進行解析
- 斷開四次揮手
HTTP協(xié)議包含信息: 超文本傳輸協(xié)議
HTTP請求報文:
請求行: 請求方法 請求數(shù)據(jù) 協(xié)議版本
eg: 請求行信息
GET / HTTP/1.1
* 請求方法:
get: 獲得網(wǎng)站數(shù)據(jù)信息(頁面代碼 圖片信息 視頻 音頻) 用戶獲得網(wǎng)站資源
post: 提交網(wǎng)站數(shù)據(jù)信息(登錄 注冊 發(fā)送圖片) 用戶提到網(wǎng)站資源
* 請求數(shù)據(jù):
/ -- 沒有指定要的數(shù)據(jù)信息 網(wǎng)站會自動給你回復一個首頁文件信息 index.html
/img/bd.png -- 想要網(wǎng)站服務(wù)器上面 img/bd.png圖片
* 協(xié)議版本:
1.0 TCP連接建立(TCP短鏈接)
A用戶 --- B用戶 視頻聊天
說了一句話 回復 關(guān)閉視頻
建立視頻聊天
說了一句話 回復 關(guān)閉視頻
建立視頻
總結(jié): 一次連接 發(fā)送一次請求
1.1 TCP連接建立(TCP長鏈接)
A用戶 --- B用戶 視頻聊天
第一件事 回復
第二件事 回復
第三件事 回復
斷開會話
總結(jié): 一次連接 發(fā)送多個請求
2.0
請求頭:
> User-Agent: curl/7.29.0 --- 訪問者客戶端信息
> Host: www.baidu.com --- 請求不同網(wǎng)站頁面
www.baidu.com
news.baidu.com
map.baidu.com
> Accept: */* --- 顯示網(wǎng)站特殊功能 壓縮 加密
空行:
請求主體:
get 方法沒有請求主體
post 方法擁有請求主體
HTTP響應(yīng)報文:
起始行: 協(xié)議信息 狀態(tài)碼信息 狀態(tài)碼描述信息
eg: 舉例
HTTP/1.1 200 OK
狀態(tài)碼: 告知訪問結(jié)果信息
200: 訪問成功
301 Moved Permanently: 永久跳轉(zhuǎn) 將域名改寫
302 : 臨時跳轉(zhuǎn) 將域名改寫
響應(yīng)頭:
空行:
響應(yīng)主體: 網(wǎng)頁源代碼信息