用ansible自動化搭建web、sql伺服器、lvs排程器
一、伺服器角色
二、部署ansible
1、ansible簡介
ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。
ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。主要包括:
(1)、連線外掛connection plugins:負責和被監控端實現通訊;
(2)、host inventory:指定操作的主機,是一個配置檔案裡面定義監控的主機;
(3)、各種模組核心模組、command模組、自定義模組;
(4)、藉助於外掛完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性執行多個任務。
2、ansible的優點
簡單易用,學習門檻低、問題少、安裝快、執行快,可進行批量命令和模組擴充套件,操作完全依賴 SSH 而不需要安裝 agent。Ansible 結合 Docker、Mesos、Puppet、Vagrant、Git 等系統可以構建出非常好的自動化運維平臺。
3、ansible的缺點
簡單的設計從而導致沒有依賴管理功能,另外當被管理的伺服器達到一定數量時,執行效率會大大降低。
4、安裝過程
ansible的安裝包需從網際網路上下載,即使用網際網路yum源。
第一步,連結網址http://mirrors.163.com,點選右側的centos幫助,下載centos6這個連結指向的檔案,把下載的檔案拷貝到/etc/yum.repos.d/目錄下;
第二步,使用EPLE的yum源安裝,語句為rpm -ivh epel-release-latest-6.noarch.rpm,然後查詢當前目錄下所有以rpm結尾的檔案,並複製到/root/docs/ansible_rpm/下,語句為:
find -name '*rpm' -exec cp {} /root/docs/ansible_rpm/
第三步,在在聯網的情況下,執行語句vim /etc/yum.conf,修改其中的配置檔案keepcache=1,儲存退出。然後執行下面的語句:
yum install -y ansible
安裝的同時,RPM包也已下載到/var/yum目錄下;
第四步,使用語句ansible --version檢視是否安裝成功,如果出現版本資訊則安裝成功。如果出現問題,則執行以下語句(需要rpm包):
yum install -y python-markupsafe
rpm -e ansible
rpm -ivh ansible*rpm
第五步,如果希望以後可以更加方便的安裝,則可以將這些rpm包拷貝到自己建立的yum源中,用
createrepo .
建立一個索引,這樣只要在/etc/yum.repo.d/下的repo檔案中加入這個目錄,這樣就可以直接用yum語句安裝、刪除ansible包了。
5、建立工作目錄
在需要的目錄下建立目錄ansible:
mkdir ansible
6、編寫配置檔案ansible.cfg
使用cd命令轉到ansible目錄下,vim配置檔案ansible.cfg,內容如下:
[defaults]
inventory = hosts # 定義被管理主機的檔案
remote_user = root # ssh到遠端主機的使用者
編寫完成後,儲存並退出。7、編寫主機清單檔案hosts
vim主機清單檔案hosts,即把被管理的伺服器填入hosts檔案中,併為其分組(一般寫主機名不寫ip地址),如:
[webservers]
yzy.bilibili.com
ljm.bilibili.com
[dbservers]
ccc.bilibili.com
[lvs]
twh.bilibili.com
8、利用ansible語句檢查配置檔案是否編寫成功
執行臨時命令ad-hoc,格式為:ansible主機 -m 模組 -a '選項',如:
ansible all -a 'id root'
該語句的意思為檢視所有主機的root使用者的id,如果沒有指定模組則預設使用shell模組;
下面再來舉個例子,如何分別列出hosts中webservers組的主機資訊:
ansible all --list-hosts
如何列出所有組的主機資訊:
ansible all --list-hosts
三、部署資料庫伺服器
1、mysql的簡介
MySQL 是一個關係型資料庫,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS (Relational Database ManagementSystem,關係資料庫管理系統) 應用軟體之一。MySQL 是一種關聯資料庫管理系統,關聯資料庫將資料儲存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。MySQL 所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。MySQL 軟體採用了雙授權政策(本詞條"授權政策"),它分為社群版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。由於其社群版的效能卓越,搭配 PHP ,Linux和 Apache 可組成良好的開發環境,經過多年的web技術發展,在業內被廣泛使用的一種web伺服器解決方案之一,稱之為LAMP。
2、ansible-playbook配置思路
ansible配合使用mysql_db、mysql_user在客戶端建立資料庫、建立使用者及配置主從。
3、mysql的優點
1.使用C和C++編寫,並使用了多種編譯器進行測試,保證原始碼的可移植性;
2.支援AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種作業系統;
3.為多種程式語言提供了API。這些程式語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等;
4.支援多執行緒,充分利用CPU資源;
5.優化的SQL查詢演算法,有效地提高查詢速度
6.既能夠作為一個單獨的應用程式應用在客戶端伺服器網路環境中,也能夠作為一個庫而嵌入到其他的軟體中;
7.提供多語言支援,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作資料表名和資料列名;
8.提供TCP/IP、ODBC和JDBC等多種資料庫連線途徑;
9.提供用於管理、檢查、優化資料庫操作的管理工具;
10.支援大型的資料庫。可以處理擁有上千萬條記錄的大型資料庫;
11.支援多種儲存引擎。
4、伺服器授權遠端主機訪問
本地需要管理遠端的一批伺服器,主要執行以下任務:
(1) 將本地的檔案複製到遠端所有伺服器;
(2)需要在遠端伺服器中執行一個個命令;
使用copy模組,可以將本地檔案一鍵複製到遠端伺服器; -a後跟上引數,引數中指定本地檔案和遠端路徑;
ansible通過ssh登入到遠端伺服器後,並不執行.bash_profile來設定使用者自定義的環境變數;如果我們需要管理的目標伺服器的路徑不同,就不能直接寫絕對路徑,也不能寫變數替換的路徑;
比如:針對伺服器A的目標複製路徑為 /opt/app/user1/bin ,伺服器B的目標複製路徑為/opt/app/user2/bin; 這兩個路徑在各自的伺服器中的路徑變數都設定為$bin; 但在copy模組中,我們不能直接使用dest = $bin/; 路徑設定一般放在.bashrc /.bash_profile檔案,但ansible模組登入後並不載入這兩個檔案;
解決方法: 針對這種情況,可以將dest路徑設定為~/,都複製到使用者目錄,後續再通過遠端指令碼處理;
需要在遠端執行一個個命令來管理遠端伺服器;
遠端執行命令的模組有command、shell、scripts、以及raw模組;
command模組為ansible預設模組,不指定-m引數時,使用的就是command模組; comand模組比較簡單,常見的命令都可以使用,但其命令的執行不是通過shell執行的,所以,像這些 "<",">", "|", and "&"操作都不可以,當然,也就不支援管道;示例:顯示遠端路徑:
缺點:不支援管道,就沒法批量執行命令;
使用shell模組,在遠端命令通過/bin/sh來執行;所以,我們在終端輸入的各種命令方式,都可以使用; 但是我們自己定義在.bashrc/.bash_profile中的環境變數shell模組由於沒有載入,所以無法識別;如果需要使用自定義的環境變數,就需要在最開始,執行載入自定義指令碼的語句;
5、部署mysql
如何通過ansible部署mysql呢?上面我們已經部署好ansible了,以下便是通過ansible部署mysql並起服務的介紹:
#我們都遵循裝包-配置-起服務的規則,那麼我們在寫指令碼的時候應該注意什麼呢?開頭的格式以’---’開行,第二行開始寫指令碼內容,整個指令碼的名字,對應使用的hosts主機名,以及整個指令碼要執行的任務有什麼都要一一明細,如果不清楚步驟,那麼通過ansible部署mysql的過程中就會遇到很多問題,比如檔案目錄找到,裝包過程中丟包,對應的專用模組不對應,多一個空格或者少一個分號等等。
#首先明確裝包裝什麼包,包之間有什麼依賴關係,有什麼優點等等。
第一步,利用裝包特有的專屬模組yum和item迴圈語句,item迴圈語句with_items:裡面有要安裝的所有包,state則表示要安裝軟體的版本轉態。present和latest都表示最新版;
第二步,進行服務的配置:這裡用到了 mysql_db:和mysql_user:板塊來進行資料庫的搭建和使用者的建立管理,密碼是:12345,對使用者進行授權處理,在這裡,我們對此資料庫進行任何人可以訪問,授權處理為:priv: 'yzybbs.*:ALL,GRANT',注意到這裡我的hosts:’%’,這個%的意思是允許其人任何使用者遠端連線管理此資料庫,並對此有執行許可權;
第三步,啟動mysql服務,就簡單的寫一個server板塊,啟動服務即可,啟動服務了,但是我得判斷mysql服務有沒有啟動成功,一般,如果mysql服務沒有啟動成功,可以通過檢視錯誤日誌的方式,日誌預設路徑/var/log/mysqld.log。
ansible-playbook程式碼如下:(3-deploy-mysql.yml)
---
- name: deploy mysql
hosts: dbservice
tasks:
- name: install pkgs
yum:
name: "{{ item }}"
state: present
with_items:
- mysql
- mysql-server
- MySQL-python
- name: start service
service:
name: mysqld
state: started
enabled: true
- name: Create a new database
mysql_db:
name: yzybbs
state: present
- name: create a new user
mysql_user:
name: yzy
host: '%'
password: 12345
priv: 'yzybbs.*:ALL,GRANT'
state: present
四、部署web伺服器
1、通過ansible安裝、起服務
以下是對web伺服器進行,安裝、配置、起服務的程式碼:(1-deploy-web.yml)---
- name: deploy web
hosts: webservice
tasks:
- name: install pkgs
yum:
name: "{{item}}"
state: present
with_items:
- httpd
- php
- php-mysql
- name: config
copy:
src: /root/B1_yzy/file/httpd.conf
dest: /etc/httpd/conf/httpd.conf
owner: root
group: root
mode: 0644
- name: start service
service:
name: httpd
state: started
enabled: true
第一行必須是以'---'開頭,第二行開始寫內容。'- name'是說明playbook的名字,起名字一定要清晰易懂,一個playbook可以有多個名字,即多個play(劇本);'hosts'的意思是所要執行命令的主機名所在的資料夾,一般使用主機名而不是ip地址,主機名可以有多個;'tasks'即該playbook所要執行的任務,一個play可以有多個tasks,本程式碼中可以看出一共有3個tasks(三個任務名'name')。
第一個任務是安裝apache(httpd、php、php-mysql)。這裡利用yum專有模組和item陣列對多臺主機的安裝,item是陣列,with_item是陣列內容,state則表示要安裝軟體的版本轉態。present和latest都表示最新版;第二個任務是拷貝檔案'copy'。src表示原始檔的路徑,dest則是需要拷貝檔案的主機名的路徑,owner和group分別表示擁有對該原始檔所有許可權的使用者和所屬組,mode表示賦予所拷貝檔案主機的許可權;第三個任務是起服務。利用service專有模組對httpd開啟服務,state表示對httpd的狀態為開啟,enabled表示一個判斷命令,即service是否開啟,true表示“是”。
2、將Discuz安裝到web1上
以下是將Discuz.zip拷貝到web1(即ljm.bilibili.com)上並解壓的程式碼:(2-install-discuz.yml)
---
- name: deploy ljm
hosts: ljm.bilibili.com
tasks:
- name: copy and unzip
unarchive:
src: /root/B1_yzy/file/Discuz.zip
dest: /var/yzy_web/
owner: apache
group: apache
本次操作的主機名是ljm.bilibili.com,利用unarchive的ansible專有模組對Discuz.zip的拷貝和解壓縮,將本機的/root/B1_yzy/file/Discuz.zip壓縮檔案拷貝到ljm.bilibili.com主機的/var/yzy_web/下,許可權所屬的使用者和組是apache。
3、將web1上的discuz拷貝到web2上
以下是將web1上的Discuz拷貝到web2(即yzy.bilibili.com)上程式碼:(4-deploy-otherweb.yml)
---
- name: synchronize bbs from ljm
hosts: ljm.bilibili.com
tasks:
- name: install rsync
yum:
name: rsync
state: present
- name: zip
shell:
cd /var/yzy_web/;
zip -r -q -o bbs.zip bbs
- name: pull bbs
synchronize:
src: /var/yzy_web/bbs.zip
dest: /root/B1_yzy/file/
mode: pull
- name: remove zip file
shell:
cd /var/yzy_web/;
rm -f bbs.zip;
- name: copy bbs to yzy
hosts: yzy.bilibili.com
tasks:
- name: copy bbs
unarchive:
src: /root/B1_yzy/file/bbs.zip
dest: /var/yzy_web
owner: root
group: root
該程式碼中有2個play:
第一個任務,將Discuz中的bbs資料夾壓縮並備份到web2上,第一個任務是安裝rsync,rsync是linux系統下的資料映象備份工具。使用快速增量備份工具Remote Sync可以遠端同步,支援本地複製,或者與其他SSH、rsync主機同步。present表示安裝最新版本;
第二個任務,將Discuz中的bbs資料夾壓縮的shell指令碼,路徑是/var/yzy_web/;第三個任務則是利用ansible中的synchronize專有模組將本機的原始檔bbs.zip備份到另一臺遠端主機上的/root/B1_yzy/file/下,許可權是pull;
第三個任務,先cd到/var/yzy_web/路徑下然後將bbs.zip刪除。第二個play任務是將遠端主機上/var/yzy_web/路徑下的bbs.zip拷貝到web2主機上。利用ansible中的unarchive專有模組將遠端主機上的/root/B1_yzy/file/bbs.zip壓縮包拷貝到web2主機上的/var/yzy_web路徑下並解壓縮然後自動刪除,許可權所屬的使用者和組都為root。
4、拷貝跳轉路徑檔案
以下是將Discuz論壇html跳轉檔案拷貝到webservice主機上的程式碼(5-index-jump.yml)---
- name: let web jump
hosts: webservice
tasks:
- name: copy html
copy:
src: /root/B1_yzy/file/index.html
dest: /var/yzy_web/
owner: root
group: root
mode: 0644
這是跳轉檔案的檔案內容:
<head>
<meta http-equiv="refresh" content="0;url=bbs">
</head>
hosts是webservice組中的主機,即web1和web2。任務是利用ansible中的copy專有模組將遠端主機上的/root/B1_yzy/file/index.html檔案拷貝到webservice組中的主機的/var/yzy_web/路徑下,許可權所屬的使用者和組都為root,許可權是0644。
五、部署lvs排程器
1、LVS排程器
LVS是Linux Virtual Server的簡寫,意即Linux虛擬伺服器,是一個虛擬的伺服器集群系統。本專案在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟體專案之一。2、LVS特
可伸縮網路服務的幾種結構,它們都需要一個前端的負載排程器(或者多個進行主從備份)。我們先分析實現虛擬網路服務的主要技術,指出IP負載均衡技術是在負載排程器的實現技術中效率最高的。在已有的IP負載均衡技術中,主要有通過網路地址轉換(Network AddressTranslation)將一組伺服器構成一個高效能的、高可用的虛擬伺服器,我們稱之為VS/NAT技術(Virtual Server via Network Address Translation)。在分析VS/NAT的缺點和網路服務的非對稱性的基礎上,我們提出了通過IP隧道實現虛擬伺服器的方法VS/TUN (Virtual Server via IPTunneling),和通過直接路由實現虛擬伺服器的方法VS/DR(Virtual Server via Direct Routing),它們可以極大地提高系統的伸縮性。VS/NAT、VS/TUN和VS/DR技術是LVS叢集中實現的三種IP負載均衡技術。
3、工作模式
工作模式有四種:nat / tun / dr / fullna
4、工作特點
客戶端不再直接訪問後臺應用伺服器(real server),而是訪問lvs排程器,排程器再根據它的排程演算法將使用者請求轉發到real server。DR模式real server迴應客戶端,不用將回應傳送到排程器。
5、排程演算法
排程演算法有10種,常用的是rr輪詢/wrr加權輪詢/lc最少連線/wlc加權最少連線,其他還有基於區域性的最少連線lblc/帶複製的基於區域性的最少連線lblcr/源地址雜湊sh/目標地址雜湊dh/期望的最短延遲sed/最少佇列排程nq
6、LVS優點
(1) 開源,免費;
(2)在網上能找到一些相關技術資源;
(3)具有軟體負載均衡的一些優點。
7、LVS缺點
(1)最核心的就是沒有可靠的支援服務,沒有人對其結果負責;
(2)功能比較簡單,支援複雜應用的負載均衡能力較差,如演算法較少等;
(3)開啟隧道方式需重編譯核心;
(4)配置複雜;
(5)主要應用於LINUX,目前沒有專門用於WINDOWS的版本,不過可以通過配置,使windows成為LVS叢集中的real server(win2003、win2008中)。8、lvs部署安裝
(1) 安裝ipvsadm
yum -y install ipvsadm
檢查安裝:
ipvsadm -v
(2)在lvs排程器的物理網絡卡上配置vip
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:1
vim ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
IPADDR=172.16.100.8
ONBOOT=yes
啟動網絡卡:
ifup eth0:0
(3)在web伺服器的本地環回介面lo上配置vip
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=172.16.100.8
NETMASK=255.255.255.255
NETWORK=192.168.16.240
BROADCAST=192.168.16.240
ONBOOT=yes
NAME=lo:0
啟動本地環回介面lo:
ifup lo:0
(4)修改web伺服器的核心引數,以便客戶端傳送的請求,只有排程器迴應,注意,兩臺web伺服器都要配置
sysctl -a | grep arp_ig
echo 'net.ipv4.conf.all.arp_ignore = 1'>> /etc/sysctl.conf
cho 'net.ipv4.conf.lo.arp_ignore = 1'>> /etc/sysctl.conf
echo 'net.ipv4.conf.all.arp_announce = 2'>> /etc/sysctl.conf
echo 'net.ipv4.conf.lo.arp_announce = 2'>> /etc/sysctl.conf
sysctl -p
(5)在lvs排程器上配置規則
ipvsadm -A -t 192.168.16.240:80 -s wrr
ipvsadm -a -t 192.168.16.240:80 -r192.168.16.254 -g -w 2
ipvsadm -a -t 192.168.16.240:80 -r192.168.16.249
ipvsadm -Ln
(6) 儲存規則
service ipvsadm save
而用ansible-playbook怎麼辦呢
先部署lvs伺服器:(6-deploy-lvs.yml)
---
- name: deploy lvs
hosts: lvs
tasks:
- name: install ipvsadm
yum:
name: ipvsadm
state: present
- name: copy vip
copy:
src: /root/B1_yzy/file/ifcfg-eth0:0
dest: /etc/sysconfig/network-scripts/
owner: root
group: root
mode: 0644
- name: deploy vip
shell:
ifup eth0:0
ipvsadm -A -t 172.16.100.8:80 -s wlc;
ipvsadm -a -t 172.16.100.8:80 -r 172.16.100.2;
ipvsadm -a -t 172.16.100.8:80 -r 172.16.100.5;
service ipvsadm save
再部署web,ansible程式碼如下:(7-deploy-webvip.yml)
---
- name: deploy web vip
hosts: webservice
tasks:
- name: copy vip
copy:
src: /root/B1_yzy/file/ifcfg-lo:0
dest: /etc/sysconfig/network-scripts/
owner: root
group: root
mode: 0644
- name: deploy vip
shell:
ifup lo:0;
echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf;
echo 'net.ipv4.conf.lo.arp_ignore = 1' >> /etc/sysctl.conf;
echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf;
echo 'net.ipv4.conf.lo.arp_announce = 2' >> /etc/sysctl.conf;
sysctl -p;
六、配置DNS伺服器
1、DNS域名解析系統
DNS(Domain Name System,域名系統),全球資訊網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。通過域名,最終得到該域名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議執行在UDP協議之上,使用埠號53。在RFC文件中RFC 2181對DNS有規範說明,RFC 2136對DNS的動態更新進行說明,RFC 2308對DNS查詢的反向快取進行說明。2、DNS功能
每個IP地址都可以有一個主機名,主機名由一個或多個字串組成,字串之間用小數點隔開。有了主機名,就不要死記硬背每臺IP裝置的IP地址,只要記住相對直觀有意義的主機名就行了。這就是DNS協議的功能。
主機名到IP地址的對映有兩種方式:
1)靜態對映,每臺裝置上都配置主機到IP地址的對映,各裝置獨立維護自己的對映表,而且只供本裝置使用;
2)動態對映,建立一套域名解析系統(DNS),只在專門的DNS伺服器上配置主機到IP地址的對映,網路上需要使用主機名通訊的裝置,首先需要到DNS伺服器查詢主機所對應的IP地址。
通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。在解析域名時,可以首先採用靜態域名解析的方法,如果靜態域名解析不成功,再採用動態域名解析的方法。可以將一些常用的域名放入靜態域名解析表中,這樣可以大大提高域名解析效率。3、DNS查詢
若想跟蹤一個FQDN名的解析過程,在LinuxShell下輸入dig www +trace,返回的結果包括從根域開始的遞迴或迭代過程,一直到權威域名伺服器。
GeniePro DNS 應對DNS劫持和DNS快取中毒攻擊的關鍵性機制:一致性檢查
每個Geniepro節點將自身的DNS記錄傳送給工作組內其他節點請求一致性檢查;
每個Geniepro節點將自身的記錄與收到的記錄進行比較;
每個Geniepro工作組的通訊協調節點將獲得的DNS記錄更新發送給其他組的通訊協調節點請求一致性檢查;
每個Genipro工作組的通訊協調節點向上一級DNS伺服器請求更新記錄並與收到的其他通訊協調節點的記錄進行比較。4、DNS安全
(1) 針對域名系統的惡意攻擊:DDOS攻擊造成域名解析癱瘓。
(2) 域名劫持:修改註冊資訊、劫持解析結果。
(3) 國家性質的域名系統安全事件:“.ly”域名癱瘓、“.af”域名的域名管理權變更。
(4) 系統上執行的DNS服務存在漏洞,導致被黑客獲取許可權,從而篡改DNS資訊。
(5) DNS設定不當,導致洩漏一些敏感資訊。提供給黑客進一步攻擊提供有力資訊。5、DNS配置
先配置/etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 172.16.100.6; };
// listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes;
forwarders { 10.0.0.1; };
dnssec-enable no;
dnssec-validation no;
/* Path to ISC DLV key */
//bindkeys-file "/etc/named.iscdlv.key";
//managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "bilibili.com" IN {
type master;
file "bi.com.ndb";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
在配置/var/named下的檔案,名為:www.bilibili.com
$TTL 60
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS @
@ IN A 127.0.0.1
www IN A 172.16.100.8
七、編寫shell指令碼完成遠端主機的一鍵配置
其實這一塊能內容很簡單,編輯一個簡單的shell指令碼,分別完成,web建立前和建立後的所有步驟
第一個指令碼為:
#!/bin/bash
ansible-playbook playbooks/1-deploy-web.yml
ansible-playbook playbooks/2-install-discuz.yml
ansible-playbook playbooks/3-deploy-mysql.yml
在第一個指令碼執行完畢後,開啟瀏覽器,輸入http://172.16.100.2/bbs,完成安裝,其中資料庫主機為:172.16.100.7,資料庫名為:yzybbs,使用者為:yzy,密碼為12345,管理員密碼隨機設取
如圖:
第二個指令碼為:
#!/bin/bash
ansible-playbook playbooks/4-deploy-otherweb.yml
ansible-playbook playbooks/5-index-jump.yml
ansible-playbook playbooks/6-deploy-lvs.yml
ansible-playbook playbooks/7-deploy-webvip.yml
最後作品:
(域名是隨機選取的,如有侵權請聯絡作者)