運維自動化發展歷程及技術應用python
早期一個公司須要花費大量的技術人員和資源來搭建本身須要的一切,好比networking,storage,servers,virtualization,OS,Middleware,Runtime,Date,Applicationlinux
下一個階段硬件基本架構經過購買,其餘的本身搭建,這樣就節省了不少資源的消耗,這就是IAASgit
以後是PAAS階段,操做軟件,開發環境也經過購買web
最後就是所有購買,直接使用,如今大部分軟件都是這樣的,這就是SAASvim
雲計算運維工程師核心職能安全
平臺架構組建:負責參與並審覈架構設計的合理性和可運維性,搭建運維平臺技術架構,經過開源解決方案,以確保在產品發佈以後能高效穩定的運行,保障並不斷提高服務的可用性,確保用戶數據安全,提高用戶體驗。架構
平常運營保障:負責用運維技術或者運維平臺確保產品能夠高效的發佈上線,負責保障產品7*24小時穩定運行,對出現的問題快速定位並解決,平常工做中不斷優化系統構架和部署的合理性,提高系統服務的穩定性。併發
性能效率優化:用自動化工具或平臺提高軟件在研發週期中的工做效率,不斷優化系統架構,提高部署效率,優化資源利用率支持產品的不斷迭代,須要不斷的進行架構優化調整,以確保整個產品可以在功能不斷豐富和複雜的條件下,同時保持高可用性。運維
linux運維工程師職能劃分ssh
開發,bug修復,更新數據(開發)
測試用例,性能評測,條件構造(測試)
review,提交代碼,打包(上線準備)
配置修改,預發部署,發佈驗收(預上線)
環境準備,上線部署,配置修改,添加監控(上線)
ansible
ansible是ansible的核心程序
Host Lnventory記錄了每個由ansible管理的主機信息,包括ssh端口,root密碼帳號,ip地址等等
Playbooks是yaml的格式文件,多個任務定義在一個文件中,使用時能夠統一調度,playbooks就是用來定義哪些主機須要調用哪些模塊來完成
Core Modules:ansible執行任何管理任務都不是有ansible本身完成,而是由核心模塊完成,ansible管理主機以前,先調用core modules中的模塊,而後指明管理Host Lnventory中的主機,來完成管理主機
Custom Modules是自定義模塊,完成ansible核心模塊沒法完成的功能,此模塊支持任何語言編寫
Connection Plugins是鏈接插件,ansible和host通訊使用
Ansible的優勢:
ansible安裝:
ansible配置客戶端
免密登陸:
server: ssh-keygen
scp id_rsa.pub root@192.168.254.25:/root/.ssh/authorized_keys
也能夠用參數的方式:
vim /etc/ansible/hosts
ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=root
ansible是一款開源的自動化運維軟件,底層是用python編寫,核心模塊paramiko,jinja2和yaml。
ansible經常使用命令
-f forks:啓動併發線程數
-m model_name:要使用的模塊
-a args:特有的參數
playbooks
yaml介紹
yaml是一個可讀性高的用來表達資料序列的格式,yaml參考了其餘多種語言,包括:xml,c語言,python,perl以及電子郵件格式RFC2822等,ClarkEvans在2001年在首次發表了這種語言。
ansible hoc模式:
ansible的默認併發輸是5臺,若是想修改併發數能夠使用-f
查看ansible是否能夠管理客戶端:ansible test -m ping (test)是配置文件中配置的組名
查看支持的模塊:ansible-doc -l
查看模塊的用法:ansible-doc -s MODEL_NAME
查看客戶端信息:ansible -m setup
copy文件到client端:ansible IP -m copy -a 「src=/root/git_test/code/txt dext=/root/test」 (也能夠加入屬主owner,屬組group,權限mode等)
建立test用戶:ansible IP -m user -a "name= test state=present"
刪除test用戶:ansible IP -m user -a "name= test state=absent"
yum安裝:ansible IP -m yum -a "name=epel-release state=latest"
中止httpd服務:ansible IP -m service -a "name=httpd state=stopped enabled=no"
運行腳本:ansible IP -m script -a "/tmp/test.sh"
查看時間:ansible IP -m command -a "date"
ansible出了使用hoc命令行模式之外,還能夠使用playbooks和roles的模式調用,下面咱們來看一下怎麼使用
playbooks
簡單示例:
變量的使用:三種方式
1.第一種:
第二種:
編輯/etc/ansible/hosts文件
[testhosts:vars]
file=httpd.conf
packages=tree
第三種:
執行playbook文件時給予變量--extra-vars
ansible-playbook test.yaml --extra-vars "touch_file=test.txt"
註冊變量的使用:把上一次的輸出結果做爲value賦予給變量的key
迭代的使用:
觸發器的使用:
模板的使用:
roles
roles的做用是減小代碼的複寫
經過這個樹狀圖能看出來,roles使用至關於將playbook的功能以文件的形式模塊化,當我想使用的時候,直接在site.yaml中調用,這是否是和咱們使用內置函數有點類似啊
讓咱們看一下具體的寫法:和以前的playbook寫法有一些區別
site.yaml:
tasks/main.yaml
files:存放文件
handlers:觸發器
template:模板拷貝