linux運維自動化腳本
1. linux培訓完之後,能從事什麼工作
學習linux後可以做linux服務開發、linux內核開發、雲計算等工作。想學習linux推薦選擇【達內教育】。
1、Linux運維工程師:Linux運維對一個公司非常重要。
2、Linux內核開發:是比較具有難度的工作崗位,在手機公司最常見,工資待遇非常不錯,知識單一化,但是操作系統硬體更新非常快,操作理論更高一些。
3、雲計算:【雲計算】在目前市場上是Linux學習之後從業比較受歡迎的工作,也是比較實用的技術之一,對大數據以及人工智慧有著很大的支撐作用,相對於人員從業薪資待遇非常高,同時技術基礎要求也是高標准。
4、自動化運維:因為python技術的興起,讓自動化運維廣泛運用起來。要求運維人員對開發的掌握程度較高。也是目前的高薪崗位之一。感興趣的話點擊此處,免費學習一下
想了解更多有關linux從事工作的相關信息,推薦咨詢【達內教育】。秉承「名師出高徒、高徒拿高薪」的教學理念,是達內公司確保教學質量的重要環節。作為美國上市職業教育公司,誠信經營,拒絕虛假宣傳是該機構集團的經營理念。該機構在學員報名之前完全公開所有授課講師的授課安排及背景資料,並與學員簽訂《指定授課講師承諾書》,確保學員利益。達內IT培訓機構,試聽名額限時搶購。
2. 程序員應知應會之自動化運維那些事兒
對於一個開發人員來講,可能運維並不是自己的職責所在。但是作為一名開發人員,卻不能不了解自動化運維的整個流程。因為對於一個信息系統而言,開發和運維本質是一體的,尤其對於一些小公司來講,可能運維人員本身就是開發人員抽空兼任的。
而自動化運維,本質上是介於開發和運維之間的,是運維和開發的交集,甚至很多時候都要寫不少代碼。因此,任何一個開發人員,都需要有自動化運維的相關知識。
一個了解好的開發人員,即使自己不做運維相關的工作,也能夠知道自己在將項目交付給運維人員的時候,哪些東西是重要的,那些是必須配置的等等。然而在實際工作中,往往開發人員會給運維人員留下一些坑,一些只有他自己知道,而運維人員不知道的東西。導致運維人員自己試了很多次發現不行的時候,找到開發人員,開發人員研究了一下才會告訴他,在某某環境中必須用哪個埠之類的。這樣不僅白白浪費了運維人員的時間,也增加了很多溝通的工作量。
反過來也是如此,一些現場的問題如果運維人員不能現場給出問題的定位。對於開發人員來講是非常難以復現的。比如之前有某家企業,運維人員在客戶現場發現問題。費了很大力氣從客氣的內網裡面把日誌導出來,發給開發人員,結果開發人員仔細研究了日誌之後,發現是網不通的問題。開發人員顯然是不可能知道為啥網不通的,搞不好是壓根沒連網線。
所以今天我們來聊一聊,對於一個程序員來講,需要了解的自動化運維的那些事。
一、自動化運維的概念
隨著信息時代的持續發展,初期的幾台伺服器已經發展成為了龐大的數據中心,單靠人工已經無法滿足在技術、業務、管理等方面的要求。一個運維人員手工配置幾台伺服器還可能。配置幾百上千台伺服器那就累死了,還容易出錯。那麼就需要對運維工作進行標准化、自動化、架構優化、過程優化等。從面降低運維服務成本。其中,自動化最開始作為代替人工操作為出發點的訴求被廣泛研究和應用。
所謂自 動化運維,即在最少的人工干預下,結合運用腳本與第三方工具,保證業務系統7*24小時高效穩定運行 。這是所有業務系統運維的終極目標。
按照運維的發展成熟度來看, 運維大致可分為三個階段 :
(1)依靠純手工,重復地進行軟體的部署與運維;
(2)通過編寫腳本,方便地進行軟體的部署與運維;
(3)藉助第三方工具,高效地進行軟體的部署與運維;
二、自動化運維需要解決的問題
自動化運維通常來講,需要解決以下幾個問題: 自動部署配置、風險事前預警、故障事中解決、和故障事後管理 。
三、自動化運維的常用工具
自動化運維常用的工具包括以下幾種:
1、Ansible
ansible是基於Python開發的自動化運維工具,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
ansible具有如下一些特性:
(1)模塊化:調用特定的模塊,完成特殊的任務。
(2)Paramiko(python對ssh的實現),PyYaml,jinja2(模塊語言)三個關鍵模塊。
(3)支持自定義模塊,可使用任何編程語言寫模塊。
(4)基於python語言實現。
(5)部署簡單,基於python和SSH(默認已安裝),agentless,無需代理不依賴KPI(無需SSL)。
(6)安全,基於OpenSSH
(7)冪等性:一個任務執行一次和執行n遍效果一樣,不因重復執行帶來意外情況。
(8)支持playbook編排任務,YAML格式,編排任務,支持豐富的數據結構。
(9)較強大的多層解決方案role。
2、Chef
Chef是一個功能強大的自動化工具,可以部署,修復和更新以及管理伺服器和應用程序到任何環境。
Chef 主要分為三個部分 Chef Server、Workstation 以及 Chef Client。用戶在 Workstation 上編寫 Cookbook。然後,通過 knife 命令上傳到 Chef Server。最後,在 Chef Client 上面實施安裝和部署工作。所以,對於 Cookbook 地編寫在整個自動化部署中起到了重要的作用。
Chef Server 包含所有配置數據,並存儲描述Chef-Client中每個Nodes的Recipe,Cookbook和元數據。配置詳細信息通過Chef-Client提供給Nodes。所做的任何更改都必須通過Chef Server進行部署。在推送更改之前,它通過使用授權密鑰來驗證Nodes和Workstations是否與伺服器配對,然後允許Workstations和Nodes之間進行通信。
Workstations 用於與Chef-server進行交互,還用於與Chef-nodes進行交互。它還用於創建Cookbook。Workstations是所有交互發生的地方,在這里創建,測試和部署Cookbook,並在Workstations中測試代碼。
Chef命令行工具 是創建,測試和部署Cookbook的地方,並通過此策略將其上載到Chef Server。
Knife 用於與ChefNodes進行交互。
Test Kitchen 用於驗證Chef代碼
Chef-Repo 是一個通過Chef命令行工具在其中創建,測試和維護Cookbook的存儲庫。
Nodes 由Chef管理,每個Nodes通過在其上安裝Chef-Client進行配置。 ChefNodes 是一台機器,例如物理雲,雲主機等。
Chef-Client 負責注冊和認證Nodes,構建Nodes對象以及配置Nodes。Chef-Client在每個Nodes上本地運行以配置該Nodes。
Cookbook 是Chef 框架的重要基礎功能之一。在 Chef Server 對目標機器做安裝部署的時候,是通過 Runlist。而 Runlist 裡面又包含了一個一個具體的 Cookbook,所以,最終對一個目標機器的部署任務就落到了 Cookbook 上。而對於 Cookbook 來說,其中包含了多個組件,我們可以將 Cookbook 簡單地理解成一個容器或者可以理解為一個包,裡麵包含了 recipes、files、templates、libraries、metadata 等信息。這些信息用於配置我們的目標機器。
3、Puppet
puppet是一種Linux、Unix平台的集中配置管理系統,所謂配置管理系統,就是管理其裡面諸如文件、用戶、進程、軟體包等資源。它可以運行在一台伺服器端,每個客戶端通過SSL證書連接到服務端,得到本機器的配置列表,然後根據列表來完成配置工作,所以如果硬體性能比較高,維護管理上千上萬台機器是非常輕松的,前提是客戶端的配置、伺服器路徑、軟體需要保持一致。
客戶端Puppet會調用本地facter,facter探測出該主機的常用變數,例如主機名、內存大小、IP地址等。然後Puppetd把這些信息發送到Puppet服務端;
Puppet服務端檢測到客戶端的主機名,然後會檢測manifest中對應的node配置,並對這段內容進行解析,facter發送過來的信息可以作為變數進行處理;
Puppet伺服器匹配Puppet客戶端相關聯的代碼才能進行解析,其他的代碼不解析,解析分為幾個過程,首先是語法檢查,然後會生成一個中間的偽代碼,之後再把偽代碼發給Puppet客戶端;
Puppet客戶端接收到偽代碼之後就會執行,執行完後會將執行的結果發送給Puppet伺服器;
Puppet服務端再把客戶端的執行結果寫入日誌。
4、Saltstack
SaltStack是基於python開發的一套C/S自動化運維工具。部署輕松,擴展性好,很容易管理上萬台伺服器,速度夠快。與伺服器之間的交流,以毫秒為單位。SaltStack提供了一個動態基礎設施通信匯流排用於編排,遠程執行、配置管理等等。它的底層使用ZeroMQ消息隊列pub/sub方式通信,使用SSL證書簽發的方式進行認證管理,傳輸採用AES加密。
在saltstack架構中伺服器端叫Master,客戶端叫Minion。
在Master和Minion端都是以守護進程的模式運行,一直監聽配置文件裡面定義的ret_port(接受minion請求)和publish_port(發布消息)的埠。當Minion運行時會自動連接到配置文件裡面定義的Master地址ret_port埠進行連接認證。
saltstack除了傳統的C/S架構外,其實還有一種叫做masterless的架構,其不需要單獨安裝一台 master 伺服器,只需要在每台機器上安裝 Minion端,然後採用本機只負責對本機的配置管理機制服務的模式。
saltstack提供如下一些功能:
(1)遠程執行:(批量執行命令)在master上執行命令時,會在所有的minion上執行。
(2)配置管理/狀態管理 :(描述想到達到的狀態,saltstack就會去執行)
(3)雲管理(cloud):用於管理雲主機
(4)事件驅動:被動執行,當達到某個值會自動觸發
這四種自動化運維工具的比較如下,現在主流的基本上ansible和saltstack用的多一些:
3. linux運維工程師的主要工作是什麼
一般從企業入門到中級Linux運維工程師的工作大致有:挑選IDC機房及帶寬、購買物理伺服器或雲服務、購買及使用CDN服務、搭建部署程序開發及用戶的訪問系統環境(例如:網站運行環境)、對數據進行備份及恢復、處理網站運行中的各種故障(例如:硬體故障、軟體故障、服務故障、數據損壞及丟失等)、對網站的故障進行監控、解決網站運行的潛在安全問題、開發自動化腳本程序提高工作效率、規劃網站架構、程序發布流程和規范,制定運維工作制度和規范、配合開發人員部署及調試產品研發需要的測試環境、代碼發布等工作需求,公司如果較小可能還會兼職網管、網路工程師、資料庫管理員、安全工程師、技術支持等職責。
涉及到的Linux平台上的運維工具有:Linux系統,Linux基礎命令,Nginx,Apache,MySQL,PHP,Tomcat,Lvs,Keepalived,SSH,Ansible,Rsync,NFS,Inotify,Sersync,Drbd,PPTP,Open***,NTP,Kickstart/Cobbler,KVM,OpenStack,Docker,Mongodb,Redis,Memcached,Iptables,SVN,GIT,Jenkins,網路基礎,Shell/Python開發基礎等,除此之外還可能涉及到交換機、路由器、存儲、安全、開發等知識。
運維工程師還包括一些低端的崗位,例如:網路管理員、監控運維、IDC運維,值班運維,其中後三個低端崗位是沒前途的崗位。
總的來說:Linux初中級運維工程師更多的是使用工具軟體的階段,屬於運維的初級階段,在一線城市互聯網公司的薪資一般在8000-15000/月。
職業發展方向:Linux運維架構師、資料庫工程師、運維開發工程師、運維經理、運維總監
Linux初中級運維工程師應用軟體階段。
4. 運維工程師需要掌握什麼技能
運維工程師需要掌握的技能:
1、首先是主機、網路及操作系統基本知識。在出現問題時,懂得在各個網路位置抓包,來確認故障設備或線路,會使用Linux的tcpmp抓包或者ethreal、sniffer、Wireshark等抓包軟體,會在網路設備上配置鏡像,將關心的流量抓出來進行分析。
2、懂開發,能實現自動化運維。比如使用Shell、Python、Perl等腳本語言做一些自動化運行腳本、診斷故障的腳本,使用這些腳本可以提升工作效率,將重復性的簡單工作交給腳本程序處理,也可以通過這些腳本判斷故障發生的位置和原因,高效的運維將不再需要人工去逐個字元地去輸入各種命令。
3、未來雲計算與大數據勢必成為整個互聯網行業的支撐。所有雲計算運維工程師以及大數據工程師的作用就越來與明顯,同時雲計算以及大數據相關高端人才的需求量也會越來越大。