波士頓時間2019年5月8日,紅帽峯會進入第二天。
今天在會場跟一些紅帽的新老朋友們聊天,聊到工程師們的兩個特點:
- 工程師們很可愛。開這麼大一個會議,只要給他們一些五顏六色的貼紙和T-shirt收集他們就很開心了。(很像是在用很便宜的玩具打發小朋友們有木有?)
工程師們很純粹。他們當中的很多nerds在傳統的現實世界原本是很難存活的物種,能夠爲他們打造一個環境讓他們專心的發揮自己的才能,其實是很了不起的一件事!
閒話不多說,進入今天的正題。
當天上午的主題演講由紅帽技術總裁Paul Cormier主持,主要是請了一羣工程師們帶着服務器上臺把本次發佈的RHEL8、OpenShift 4都公開演示了一遍,特別是展示了用Satellite去升級系統到RHEL8、用Operators去升級OpenShift上運行的SQL Server實例的過程:升級系統時有各種Ansible的腳本可以選用自動執行、有各種Insights的規則提供自動保護避免搞砸,升級SQL Server可以做到前端用戶無感知,刷新一下頁面看到版本號更新才發現升級已經做完了。
在沒跟服務器打過交道的人看來,這些演示看起來只是點點鼠標、屏幕上幾個數字變了而已,一點兒也不炫酷;但是在識貨的人看來,這些工程師們真的是在炫技!服務器運維的自動化是漫長的工程,將這些經驗凝聚到開源的工具上經歷了大量的探索。這幾場demo背後的工作量其實是非常可觀的。
個人覺得特別有意思的一點是,整個演示不是通過命令行進行的,而是在瀏覽器裏面點點鼠標進行的!而且還專門選用了一臺Windows PC!
要知道,但凡任何一個敢於自稱Linux用戶的人,多少都會使用命令行;並且幾乎每一個Linux用戶,都爲自己能夠掌握更多的命令行而感到自豪。甚至可以這麼說:爲數不少的Linux用戶會因爲鄙視Windows用戶而自豪!
但今天的演示所做的事情其實是在告訴所有人:即使你****不是Linux用戶,即使你不會用命令行,也可以毫無阻礙的管理成百上千臺Linux服務器。
這在開始對我來說簡直難以想象:到底是什麼樣的人會需要這種東西?
世界上真的需要不會用Linux命令行的Linux服務器管理員嗎?
一位叫做Brendan Paget的紅帽工程師解答了我的疑惑。
他說他們在亞太區發展業務的時候,發現了一個日益嚴重的問題:
缺乏會用命令行的專業Linux運維人才。
各個行業都需要更多的Linux服務器,但是找不到人去管理它們,咋辦?所以紅帽想到了一羣人:以前做Windows服務器管理員的那幫人。
他們懂服務器,只是不懂Linux命令行而已。所以把Linux管理的功能做成鼠標點點就能用,這些人就可以來管理Linux服務器啦。
這是其一。另一方面,懂1條Linux命令,和懂100條Linux命令,差別還是很大的。所以把Linux管理的功能做成鼠標點點就能用,就能夠讓那些原本只懂1條Linux命令的人,有機會探索更多的用法,增長知識。
這時,來自RHEL部門的一位女性、紅帽的VP與GM——Stephanie Chiras補充了一句:
“我們希望通過這種方式,讓更多學生們進入到Linux的世界。”
使用命令行的Linux世界,就像是神祕的魔法世界。你對着黑暗的虛空念出一句咒語——一句其他人都不知道的咒語——然後這個黑暗的虛空會蹦出一堆五顏六色的信息迴應你的咒語。這個世界對你的反饋符合你的預期,一切盡在掌握;在這些別人看起來如同天書的五顏六色的信息當中,你找到一些別人看不見的蛛絲馬跡,解決了別人都解決不了的系統問題,那種成就感是難以用言語形容的。
(對於此類體驗,開源界有一個專有名詞來形容:智商炫富。)
使用鼠標的Linux世界,是世俗的、透明的,失去了那種神祕感。如果按下打火機就能得到火焰,那麼造火的魔法師將從神壇跌落,成爲舞臺上的演員吧?
但整個世界收穫的,是人人都可以隨時隨地的擁有自己的火焰。
Brendan Paget所描述的問題,如果你來到紅帽峯會的現場,你會特別有體感:你周圍的絕大部分參會者都是30-40歲以上的男性,年輕人少,女性更少。
Linus Torvalds出生於1969年。1991年創作了Linux的他22歲,正在讀大四。
在中國,今天我們看到活躍在Linux世界的這批工程師們,大多數是在90年代到00年代在大學期間接觸到Linux而進入這個圈子的。那時候的大學生大概也沒有特別多的東西玩,一臺電腦可以玩很長很長的時間。
而在美國,今天活躍在Linux世界的這批工程師們,很多是從更早的Unix世界過來的。
從什麼時候開始,在學校裏面玩Linux的人越來越少了?
90年代的Linux只是玩具,吸引了那麼多年輕人去玩;今天的Linux已經成爲全球商業的基石,年輕人卻不喜歡玩了。
這其實很正常,因爲在今天,比Linux好玩的東西多太多了。
這也很危險,因爲Linux太重要了。
雖然紅帽做出了很多努力吸引年輕人接觸Linux,比如專門爲女中學生打造的CO.LAB項目,但目前看來效果好像不是很明顯。
未來會怎麼樣呢?
還有另外一種可能性。
Brendan Paget在他的分享中有提到一個趨勢:由於有了Insights的自動化分析與Ansible的自動化干預,現在越來越多的RHEL系統故障可以在人類管理員發現之前就被機器自動解決掉。
爲什麼Operators項目會叫做Operators這個名字?我們來看看項目設計者是怎麼說的。
Operators項目始於2016年的CoreOS項目組,後來的OperatorHub.io是該項目的延伸,是由微軟、Google Cloud、AWS與紅帽一起建設的倉庫,專門用來索引工程師們編寫的各個Operator軟件。在該網站的介紹頁面上有這樣一句話:
“The goal of an Operator is to put operational knowledge into software.”
“Operator的目標就是將(人類的)運維知識結晶到軟件當中。”
機器人管理員。
軟件就是機器人。
如果將運維知識粗略分爲系統運維和應用運維,那麼在系統層面(RHEL),Insights是機器人的腦,Ansible是機器人的手。
腦可以做什麼?腦是處理邏輯的引擎,比如這樣:
-
部分Xeon CPU在uptime超過200天后可能出現kernel panic,建議升級內核版本後重啓系統。
-
出現新的Heartbleed漏洞報告,建議立刻更新OpenSSL至最新版本。
-
……
上面的每一條都是Insights裏面的一條“規則”(Rule),這樣的規則現在已經積累了600多條,並且將不斷繼續積累下去。
手可以做什麼?手是執行的工具,比如這樣:
當Insights告訴我要給一臺服務器升級內核版本後重啓系統的時候,在設定好的時間去照做。
再來看應用層面。
Operators可以做什麼?
Operators是手。比如你要在OpenShift/Kubernetes上創建一個Kafka集羣,如果全靠人肉手動操作,需要敲很多命令,花好幾個小時,就算是再喜愛命令行的Linux高手也不會想要做這種事情——他們會寫腳本來做這個事情。曾經,高手們寫好腳本自己用用就結束了,頂多放到Github上分享代碼;現在,寫好的腳本按照operators的規格打包,於是我們有了AMQ Streams operator,後來的人只需要點點鼠標,幾分鐘就創建好了。
目前,大部分operators還只能做最基本的部署操作,智能還談不上。在整個Kubernetes社羣帶着大量開發者向前奔跑的過程中,這可能會是接下來幾年蓬勃發展的一個領域。
Linux的魔法時代即將結束,命令行的英雄們將成爲歷史。即將迎來的,是規模化的時代,是自動化的時代,是機器人管理員的時代,是軟件領域之外的各個領域的人才共同參與創新的時代。
曾經,同時管理上萬臺服務器是互聯網巨頭們的特權。現在,同時調用上萬臺容器成爲每一位開發者手邊的可能性。
講真,管理服務器這個活兒本來就不是適合人類做的事情。年輕人不喜歡Linux命令行,其實也沒什麼關係吧!