天天看點

Linux Ansible平台測試報告

作者:我有我彩

網絡測試

現在可以進行網絡上的測試,其網絡的測試也很容易,就是将各個主機進行ping通就可以了。首先在安裝了Ansible軟體的虛拟機對192.168.30.101/24,192.168.30.102/24和192.168.30.103/24進行ping通。

Linux Ansible平台測試報告

圖 4.1‑1 ping 192.168.30.101

Linux Ansible平台測試報告

圖 4.1‑2 ping 192.168.30.102

Linux Ansible平台測試報告

圖 4.1‑3 ping 192.168.30.103

這樣就說明192.168.30.7/24可以ping通192.168.30.101/24,192.168.30.102/24和192.168.30.103/24網段。其餘的192.168.30.101/24,192.168.30.102/24和192.168.30.103/24的網段,兩兩ping通就可以了。我的網絡測試均是成功的。這裡就不做研究;至此網絡測試的環節就完成了。

模拟測試

  1. 模拟1:使用Playbook完成基礎操作,對192.168.30.101-192.168.30.102進行增加新檔案,建立新使用者,安裝httpd服務,發送簡單的html檔案,啟動httpd服務。
  • 建立一個file.yml檔案。編輯以下内容,并且進行驗證。
Linux Ansible平台測試報告

圖 4.2‑1 cat file.yml

Linux Ansible平台測試報告

圖 4.2‑2 ansible-playbook file.yml

  • 可以先使用ansible-playbook -C file.yml進行驗證,該指令不需要對目标主機進行傳送指令,Ansible自己先對指令進行一遍執行,若有報錯,就可以對.yml檔案進行修改。
Linux Ansible平台測試報告

圖 4.2‑3 ansible-playbook -C file.yml

  • 驗證過程:
  1. 建立新檔案
Linux Ansible平台測試報告

圖 4.2‑4建立新檔案

  1. 建立新使用者
Linux Ansible平台測試報告

圖 4.2‑5 建立新使用者

  1. 檢查httpd服務是否安裝成功,可以檢查其端口,預設是80端口,
Linux Ansible平台測試報告

圖 4.2‑6 檢查80端口

在其中,還傳送了index.html檔案,檢查如下,這也可以說明httpd服務已經啟動了:

Linux Ansible平台測試報告

圖 4.2‑7 驗證80端口

  1. 模拟2:Ansible實作Template管理Nginx,這裡主要做的是Nginx根據主機的CPU個數進行配置設定,這樣可以有效的提高效率。

Nginx是一個輕量級的Web伺服器/反向代理伺服器以及電子郵件代理伺服器,其特點是占有的記憶體少,并發的能力強,在實際操作中Nginx的并發能力在同類型的網頁伺服器中表現較好,是一款Apache伺服器不錯的替代品。現在時網際網路上非常流行,中國大陸使用Nginx網站使用者就有:百度,京東,騰訊,淘寶,網易等等。可見其Nginx的實力之強大。

  • 首先要在Ansible伺服器端安裝Nginx服務

第一步:添加Nginx存儲庫,使用的指令是:yum install epel-release;

Linux Ansible平台測試報告

圖 4.2‑8 yum install epel-release

第二步:安裝Nginx,使用的指令是:yum install nginx。

Linux Ansible平台測試報告

圖 4.2‑9 yum install nginx

第三步:啟動Nginx,指令是:systemctl start nginx,如果想要在系統啟動的時候,Nginx就啟動的話,指令是:systemctl enable nginx

第四步:驗證nginx是否啟動成功,指令是ps -ef | grep nginx,也可以打開虛拟機浏覽器輸入:IP位址:80

Linux Ansible平台測試報告

圖 4.2‑10 ps -ef | grep nginx

Linux Ansible平台測試報告

圖 4.2‑11 浏覽器打開

  • 為了測試實驗,我将192.168.30.101主機的CPU改為2,192.168.30.102主機的CPU改為4,後續的操作。我希望配置檔案傳過去的時候,可以根據CPU的個數,自動生成相應的配置檔案。是以需要模闆Template。

編輯一個playbook。内容如下并且進行這個playbook以及複制nginx的配置到建立的檔案/ansible/templatees/nginx.conf.j2并且修改該檔案:

Linux Ansible平台測試報告

圖 ‑12 修改/ansible/templatees/nginx.conf.j2

Linux Ansible平台測試報告

圖 ‑13 cat testtempl.yml

Linux Ansible平台測試報告

圖 4.2‑14 ansible-playbook testtempl.yml

驗證(由于與Httpd服務公用一個端口80,是以他們是一種互斥的關系,是以要把Httpd服務停掉,指令有ansible websrvs -m service -a 'name=httpd state=stopped' ;ansible websrvs -m shell -a ‘rpm -q nginx’;ansible websrvs -m shell -a ‘ss -ntpl’; ansible websrvs -m shell -a ‘ps -aux | grep nginx’):

Linux Ansible平台測試報告

圖 4.2‑15 ansible websrvs -m shell -a ‘rpm -q nginx’

Linux Ansible平台測試報告

圖 4.2‑16 ansible websrvs -m shell -a ‘ss -ntpl’

Linux Ansible平台測試報告

圖 4.2‑17 ansible websrvs -m shell -a ‘ps -aux | grep nginx’

Linux Ansible平台測試報告

圖 4.2‑18 ansible websrvs -m setup | grep cpu

CentOS 6的配置檔案複制到192.168.30.7主機中,CentOS 6執行指令

scp /etc/nginx/nginx.conf

192.168.30.7:/root/ansible/templates/nginx.conf6.j2以及更改名稱:

Linux Ansible平台測試報告

圖 4.2‑19 scp /etc/nginx/nginx.conf 192.168.30.7:/root/ansible/templates/nginx.conf6.j2

Linux Ansible平台測試報告

圖 4.2‑20 更改名稱

根據主機自身的系統,來配置相應的Nginx服務;即CentOS 7系統就執行CentOS 7的相應操作,CentOS 6系統就執行CentOS 6的相應操作。

Linux Ansible平台測試報告

圖 4.2‑21 cat testtempl.yml

Linux Ansible平台測試報告

圖 4.2‑22 ansible-playbook testtempl.yml

  1. 模拟3:實作Roles運維自動化;Roles是Ansilbe自1.2版本引入的新特性,用于階層化、結構化的組織Playbook。Roles能夠根據層次型結構自動裝載變量檔案、Tasks以及Handlers等等。要使用Roles隻需要在Playbook中使用include指令即可。簡單來講,Roles就是通過分别将變量、檔案、任務、模闆以及處理器放置于單獨的目錄中,并且可以是用于建構守護程序等場景中,在複雜場景建議使用Roles,代碼複用度高,例如:變更指定主機或者主機組;命名不規範維護和傳承成本大;某些功能需要多個Playbook,通過includes就可以實作。
  • 首先,第一步在/root/ansible/下建立roles檔案夾。然後再roles檔案夾下建立一些服務名稱的檔案夾;第二步就是以Nginx為例子,在Nginx檔案夾中建立tasks(任務)和templates(模闆)檔案夾,如下。

圖 4.2‑23 tree

第三步就是在tasks中建立并且編輯檔案:

group.yml(- name: create group \n group: name=nginx gid=80),

restart.yml(- name: service restart \n service: name=nginx state=restarted),

start.yml(- name: service start \n service: name= nginx state=started enabled=yes),

templ.yml(- name: copy conf \n template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf),

user.yml(- name: create user \n user: name=nginx group=nginx uid=80 system=yes shell=/sbin/nologin),

yum.yml(- name: install package \n yum: name=nginx),

main.yml(- include: group.yml \n – include: user.yml \n -include: yum.yml \n – include: templ.yml \n – include: start.yml)。

在templates中建立并且編輯檔案nginx.conf.j2(cp /etc/nginx/nginx.conf /root/ansible/roles/nginx/nginx.conf.j2)

Linux Ansible平台測試報告

圖 4.2‑24 vim nginx.conf.j2

第四步就是在/root/ansible/下建立nginx_role.yml并且進行編輯:

Linux Ansible平台測試報告

圖 4.2‑25 cat nginx_role.yml

第五步即執行nginx_role.yml,ansible-playbook nginx_role.yml(原先的操作與該操作有重複,是以我這邊隻是單執行一遍)

Linux Ansible平台測試報告

圖 4.2‑26 ansible-playbook nginx_role.yml

綜合測試

制作一個簡單的企業級Roles,也就是執行這個playbook就可以實作多台主機安裝了httpd服務,以及配置設定相關的操作,在Roles檔案夾下建立app的檔案夾,裡面包含有files,handlers,task,templates;app的tree如下。

Linux Ansible平台測試報告

圖 4.3‑1 tree

Tasks下各個檔案的内容:Files下的vhosts.conf是無内容。

Linux Ansible平台測試報告

圖 4.3‑2 cat copyfile.yml

Linux Ansible平台測試報告

圖 4.3‑3 cat group.yml

Linux Ansible平台測試報告

圖 4.3‑4 cat start.yml

Linux Ansible平台測試報告

圖 4.3‑5 cat templ.yml

Linux Ansible平台測試報告

圖 4.3‑6 cat user.yml

Linux Ansible平台測試報告

圖 4.3‑7 cat yum.yml

Linux Ansible平台測試報告

圖 4.3‑8 cat main.yml

Handlers下檔案内容:

Linux Ansible平台測試報告

圖 4.3‑9 cat main.yml

Templates下檔案内容(拷貝httpd服務配置檔案并修改):

Linux Ansible平台測試報告

圖 4.3‑10 copy http檔案

Linux Ansible平台測試報告

圖 4.3‑11 修改http檔案(1)

Linux Ansible平台測試報告

圖 4.3‑12 修改http檔案(2)

Vars下檔案内容:

Linux Ansible平台測試報告

圖 4.3‑13 cat vars/main.yml

在ansible檔案夾中建立app_roles.yml内容然後執行:

Linux Ansible平台測試報告

圖 4.3‑14 cat app_roles.yml

驗證:

  1. 以CPU個數*10得到的端口号,以及有app程序。

圖 ‑15 node1 ss -ntl

圖 ‑16 node2 ss -ntl

圖 ‑17 app 程序(1)

圖 4.3‑18 app 程序(2)

  1. 複制vhsot.conf檔案至/etc/httpd/conf.d。
Linux Ansible平台測試報告

圖 ‑19 node1複制vhost.conf

Linux Ansible平台測試報告

圖 4.3‑20 node2複制vhost.conf

繼續閱讀