LPI DevOps Tools Engineer 證照介紹 (2)

在開始之前,我想先說明一下這三十天可能的進行方式:

  1. 我自己不是一個有實務經驗的 DevOps 人員,對於接下來要介紹的這些工具,雖然有一些曾使用過,但也還沒到熟悉的程度,因此與其說是工具的介紹教學或實務的經驗分享,更不如說是且戰且走的學習記錄,摸索試驗的過程分享。
  2. 這類的學習記錄或技術分享,對比原始程式碼或是官方文件,都算是二三手的資訊,即使資料來源都是官方文件,多多少少還是會有誤「譯」或誤「義」的狀況,尤其當自身語文能力或是技術能力不足時,這樣的錯誤更是會經常發生。關於這點,我的想法是,在有疑慮的地方,我會寫明這裡「可能」是這樣。雖然會盡量確保自己所寫的內容是正確的,但在三十天的挑戰過程中,難免會有時間不夠以致於胡亂發文的狀況,這點還請有機會看到這系列文章的夥伴多多見諒。
  3. 我自己覺得 IT 人還挺自虐的,新的技術一直推陳出新,很多時候並不是因為工作得用到而去學習它們,而是興趣使然,或是想給自己一個挑戰,又或者只是覺得自己應該要會。然而因為工作上用不到,所以學了之後很快就忘記了,然後等之後真的要用到時,一切又要重頭開始。因此在這種狀況下,我覺得學習的重點不是在學到很深很細,記得很多指令,而是知道有這個工具存在,它是為了解決什麼問題而發展出來的,大致上的原理概念是什麼,大概有那些功能可以用,然後最重要的一點,是把這些要點在自己的知識庫中記錄下來,如果可以加上自己的思考脈絡就更好。如果只是要知道工具怎麼用、指令怎麼下,網路上已經有很多詳盡的教學文件了,自己的學習記錄,和其他人的網路教學文件,最大的差異,在於自我學習會有自己思路發展的過程。把這些思考過程也記錄下來,當下次有機會要用到時,就可以順著自己的思考脈絡,很快地在知識庫中取出,而不必每次都重頭來過。這表示我接下來的分享,可能會有很多自己的碎碎念,也請大家多多包涵。

接下來回到今天的主題,工具介紹的部分。LPI 網站對於此認證有另一份指引文件 (Exam Guide) http://www.lpi.org/sites/default/files/LPI_DevOps_Exam_Guide.pdf,在指引文件中列出了一份工具清單如下:

I am comfortable using the following tools:

  • Git
  • Jenkins
  • Docker
  • Docker Swarm
  • Kubernetes
  • Vagrant
  • Cloud-init
  • Packer
  • Ansible
  • Prometheus
  • ELK Stack

這裡列了 11 項工具,對照昨天應試目標能力中提及的工具,有些並不在這份清單中,但我們還是先以這裡提到的工具為主,其中有些是我第一次看到。首先我們先來看一下這些工具到底是幹什麼的。

  • Git – 這個大家應該都很熟悉了,分散式版本管理工具的王者。
  • Jenkins – CI/CD pipeline 常用的工具,Jenkins 的官網是這麼描述它的:Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software
    它是一個提供「自動化」的伺服器,可以用來自動化諸如建置、測試、交付、部署等功能。所謂的自動化,應該是指當達到某些條件時會自動觸發去做某些事的過程。
  • Docker – 這個大家應該也很熟悉,最近很火紅的虛擬化容器工具。
  • Docker Swarm – Docker 叢集管理,我想它應該不算是一個獨立的工具,而已經被整合到 Docker 的功能之中。Docker 官網對 Swarm 的定義是 a cluster of one or more Docker Engines running in swarm mode,也就是說在 Docker 容器跑起來時,可以指定它是否要以 swarm 模式執行,若以 swarm 模式執行,這一個或一群 Docker 容器就可以稱為 Swarm,而 Docker swarm 可視作管理 swarm 的相關指令集合。
  • Kubernetes – Google 發展出來的容器管理工具,用於自動部署或擴展。官網上的說明,Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery。它將一個應用程式所用到的容器組織成易於管理的邏輯單位。它是「容器」管理工具,而不只是針對 Docker,也就是說可以管理其他的 container runtime,不過 Docker 還是大宗就是了。
  • Vagrant – 官網的說明 Vagrant is a tool for building and managing virtual machine environments in a single workflow. Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team. Vagrant 能在單一的工作流程中打造及管理虛擬機器環境,提供易於設定、可重製且可攜的工作環境。它是一個虛擬機器的管理工具,讓你可以依設定檔快速地建立虛擬機器。
  • Cloud-init – 由官網上的說明直翻,Cloud-init 是用來客製化雲端實例的工具。Cloud images are operating system templates and every instance starts out as an identical clone of every other instance. It is the user data that gives every cloud instance its personality and cloud-init is the tool that applies user data to your instances automatically. 我覺得這個描述不是很清楚噢,但之前沒有用過這個工具,所以之後再來研究吧。
  • Packer – 和 Vagrant 一樣都是 HashiCorp 這家公司所開發的產品,用來建造虛擬機器所需的映象檔,支援多種平台,如 Amazon EC2、VMWare、VirtualBox 等等。之前也沒用過,所以也是以後再研究。
  • Ansible – 官網上的介紹,Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs. 它是一個自動化的引擎,提供各種自動化的功能。簡單地說,它是利用設定檔達到在多台機器完成相同工作的自動化工具。而在目的機器上不需要另外安裝 agent,可透過 SSH 直接完成,也讓它成為很受歡迎的自動化工具。
  • Prometheus – 系統狀態監控及警示的工具。
  • ELK Stack – 現在叫作 Elastic Stack 了,主要包含三種工具,Elasticsearch、Logstash 及 Kibana,這個組合堆疊最主要是用來集中不同機器的 log、進行剖析 (parsing) 、編製索引用以搜尋,並提供儀表板等 Web 介面以方便使用者利用。

接下來我們根據應試目標能力來對應這些工具,順便看看有那些工具是前面列表中沒有提到的。

Topic 701: 軟體工程 Software Engineering

  • 701.1 現代軟體開發 Modern Software Development
    工具:無
  • 701.2 軟體標準元件及平台 Standard Components and Platforms for Software (2)
    工具(平台): OpenStack、OpenShift
  • 701.3 源碼管理 Source Code Management (5)
    工具:Git
  • 701.4 持續整合及交付 Continuous Integration and Continuous Delivery (5)
    工具:Jenkins

Topic 702 – 容器管理 Container Management (16)

  • 702.1 容器使用 Container Usage (7)
    工具:Docker
  • 702.2 容器部署及編配 Container Deployment and Orchestration (5)
    工具:Docker (swarm)、Kubernetes
  • 702.3 容器設施 Container Infrastructure (4)
    工具:Docker

Topic 703 – 機器部署 Machine Deployment (8)

  • 703.1 虛擬機器部署 Virtual Machine Deployment (4)
    工具:Vagrant
  • 703.2 雲端部署 Cloud Deployment (2)
    工具:Cloud-init
  • 703.3 系統咉像檔創建 System Image Creation (2)
    工具:Packer

Topic 704 – 設置管理 Configuration Management (10)

  • 704.1 Ansible (8)
    工具:Ansible
  • 704.2 其他設置管理工具 Other Configuration Management Tools (2)
    工具:Puppet、Chef

Topic 705 – 服務維運 Service Operation (8)

  • 705.1 IT維運及監控 IT Operations and Monitoring (4)
    工具:Prometheus
  • 705.2 Log管理及分析 Log Management and Analysis (4)
    工具:Logstash、Elasticsearch、Kibana

看來除了 OpenStack、OpenShift 這類的平台外,在工具的部分,列表中沒有提到但有可能會考的就是 Puppet 和 Chef,共有 2 題。

大概瞭解考試的範圍和方向後,我們來看一下官方給的幾個例題:

第一題

In the case where the file app.yml contains the following content:

version: “3”
services:
 lb:
   image: haproxy
   ports:
    - “443:443”
 web:
   image: nginx
   deploy:
replicas: 2

Which of the following commands makes Docker process this file?
A. docker exec –compose-file app.yml
B. docker service create –compose-file app.yml
C. docker swarm compose up –compose-file app.yml
D. docker stack deploy myapp –compose-file app.yml
E. docker-compose up –swarm –compose-file app.yml

答案:D

第二題

Which of the following Git subcommands can be used to put a new file existing in a Git repository under version control? (Choose TWO correct answers.)
A. git add
B. git status
C. git version
D. git commit
E. git tag

答案:A、D

第三題

By default, which file in a build context is read by docker build to gather information about the steps required to create a new container image? (Specify the filename only without any path.)

答案:Dockerfile

第四題

Which command included in Kubernetes is the main tool that is used to deploy and manage applications on a Kubernetes cluster? (Specify ONLY the command without any path or parameters.)

答案:kubectl

關於這張證照的介紹就到此為止,明天開始正式進入主題。

Read more

世界越快心越慢

在晚飯後的休息時間,我特別享受在客廳瀏灠youtube上各樣各式創作者的影音作品。很大不同於傳統媒體,節目多是針對大多數族群喜好挑選的,在youtube上我會依心情看無腦的動畫、一些旅拍記錄、新聞時事談論。 尤其在看了大量的Youtube的分享後,我真的感受到會限制我的是我的無知,特別是那些我想都沒想過的實際應用,在學習後大大幫助到我的生活和工作層面。 休息在家時,我喜歡想一些沒做過的菜,動手去設計生活和工作上的解決方案,自己是真的很難閒著沒事做。 如創作文章,陪養新的習慣都能感覺到成長的喜悅,是不同於吃喝玩樂的快樂的。 創作不去限制固定的形式,文字是創作、影像聲音也是創作,記錄生活也是創作,我想留下的就是創造—》實現—》回憶,這樣子的循環過程,在留下的足跡面看到自己一路上的成長、失敗、絕望、重新再來。 雖然大部份的時候去做這些創作也不明白有什麼特別的意義,但不去做也不會留下什麼,所以呀不如反事都去試試看,也許能有不一樣的水花也許有意想不到的結果,投資自己永遠不會是失敗的決定,不是嗎?先問問自己再開始計畫下一步,未來沒人說得準。 像最近看youtube仍大一群人在為DOS開

By Phillips Hsieh

知識管理的三個步驟:一小時學會把知識運用到生活上

摘錄瓦基「閱讀前哨站」文章作為自己學習知識管理的內容 Part1「篩選資訊」 如何從海量資訊中篩選出啟發性、實用性和相關性的精華,讓你在學習過程中不再迷失方向。 1. 實用性 2. 啟發性 Part2「提高理解」 如何通過譬喻法和應用法,將抽象的知識與日常生活和工作緊密結合,建立更深刻的理解。 1. 應用法 2. 譬喻法 Part3「運用知識」 如何連結既有知識,跟自己感興趣的領域和專案產生關聯,讓你在運用知識的路途上游刃有餘。 1. 跟日常工作專案、人際活動產生連結 # 為什麼要寫日記? * 寫日記是為了忘記,忘卻瑣碎事情,保持專注力 * 寫日記就像在翻譯這個世界,訓練自己的解讀能力 * 不只是透過日記來記錄生活,而是透過日記來發展生活 #如何寫日記? * 不要寫流水帳式的日記,而是寫覆盤式的日記 當我們試著記錄活動和感受之間的關聯,有助於辦認出真正快樂的事 日記的記錄方式要以過程為主,而非結果 * 感恩日記的科學建議,每日感恩的案例

By Phillips Hsieh
2024年 3月30日 14屆美利達環彰化百K

2024年 3月30日 14屆美利達環彰化百K

這是場半小時就被秒報名額滿的經典賽事, 能順利出賽實屬隊友的功勞, 這次的準備工作想試試新買的外胎, 因為是無內胎用的外胎, 特別緊超級難安裝的, 問了其他朋友才知道, 要沾上肥皂水才容易滑入車框。 一早四點起床準備, 五點集合備好咖啡在車上飲用, 約了六點在彰化田尾鄉南鎮國小, 整好裝四人一起出發前往會場。 被排在最後一批出發, 這次的路線會繞行的員林148上139縣道, 其實在早上五點多天就開始有點飄雨, 大伙就開始擔心不會要雨戰吧! 果不其然才出發準備上148爬坡雨勢越來越大, 戴著防風眼鏡的我在身體的熱氣加上雨水冷凝效果下, 鏡面上滿是霧氣肉眼可視距離才剩不到五公尺, 只能緊依前前方的車友幫忙開路, 之後洪大跟上來我立馬請求他幫忙開路, 上了139停下車把防風眼鏡收起來, 反正下雨天又陰天完全用不到太陽眼鏡了。 雨是邊下邊打雷, 大伙都在這條139上一台一台單車好像避電針, 一時有點害怕不然想平時沒做什麼壞事, 真打到自己就是天意了。 下了139雨勢開始變小, 大伙的速度開始有所提昇, 開高鐵列車的時機己成熟, 物色好列車就跟好跟滿。 最後找了一隊似乎整團有固定在練

By Phillips Hsieh
2023 12月9號 美利達單車嘉年華

2023 12月9號 美利達單車嘉年華

第二次參加美利達環南投賽事, 還記得去年第一次參加這美利達環南投, 還特地提前一天跟車友在魚池住了一晚。 這回用上了剛在7月份剛安裝的車頂架, 安裝了二種不同的攜車架, 都樂這邊可以不用拆車輪直上車頂, YAKIMA這邊選了經濟的款式, 折掉前輪利用前叉固定在攜車架上。 約了唯一一位一起參加的朋友, 二人一早四點約見面, 幫朋友帶上了拿鐵咖啡, 開上日月潭在水社碼頭停好車, 騎往向山遊客中心, 路過美麗的日月潭簡直不要太美了拍一張。 抵達會場己是人山人海了, 跟著大伙排隊順便也看網紅也欣賞名車。 出發就先沿著日月潭順時針騎, 騎到玄裝寺很急停下來上一下廁所, 比賽時都會尿都特別的滿, 一方面是比較緊張,一方面是特別興奮。 這時己經跟車友失散了, 只能獨推沿路看有沒有車友可以一起組隊的, 很可惜在山區大家的實力不一只求平安順騎了, 原則就是有補給就停有食物就吃。 下到水里人群再次聚集起來, 光等紅綠燈就是一條車龍。 騎行了一大圈水里再回到131縣道, 這時背後傳來熟悉的聲音叫菲哥, 終於跟車友重新集合接下來就一路邊聊邊騎。 最後來幾張專業攝影師拍攝的照片 回到終點台上

By Phillips Hsieh