DevOps:建造開發維運的跨界之橋(二)- 什麼是 DevOps

延續前文,這一系列的文章是將我之前在 C.C. Agile #37 分享的簡報《DevOps: 建造開發維運的跨界之橋》轉換成文章的形式,一方面讓簡報內容能更完整地被分享,另一方面也讓我有地方可以補充一些後續又吸收到的新內容。 本文繼續來談談到底 “What is DevOps”,關於「什麼是 DevOps」目前我看到最多的標準答案是「這個問題目前沒有標準答案。」(2016/9/3 補充更多內容) 於是你就會看到有人開玩笑說「你問十個軟體、資訊領域的專家,什麼是 DevOps,那你會得到十個不一樣的答案。」(來自葉秉哲的演講「Docker 對傳統 DevOps 工具鏈的衝擊」) 而目前的情況也似乎就是如此,你可以在 wiki 上找到 DevOps 的條目,你可以在 Gartner 的報告中看到 DevOps 的相關趨勢,你也能找到各廠商宣稱自己的產品是 DevOps 必備的工具。  但若仔細比較它們對於 “What is DevOps ?” 的描述,你只會得到許多十分類似但卻有些不同的答案。於是又有另一個玩笑出現了「DevOps 是一種 92 共識,認真你就輸了」。  我個人最近在看 DevOps 的新聞與文章,發現了一個現象,早期談 DevOps 的文章,當談到什麼是 DevOps 時,都會直接給一個答案 DevOps 就是 ooxx ⋯⋯;但現在的文章則比較模糊一點,不再那麼斬釘截鐵,甚至有看到文章直接補一句「關於什麼是 DevOps,目前還有許多爭議⋯⋯各家都有自己的意見與詮釋⋯⋯ 」。 所以我才會開玩笑的說「什麼是 DevOps」,標準答案就是「這個問題目前沒有標準答案。」 但各家的定義依然值得我們參考,例如前面提到 Gartner,他們的定義即是 “Gartner defines DevOps as a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach....

August 14, 2016 · Cheng Wei Chen

在 AWS - Elastic Benstalk 上運行 Laravel 5.1

續前兩篇試過了 GCP、Azure 之後,繼續我的測試之旅,這次的對象是 AWS 的 Elastic Benstalk。 AWS 的文件與參考資料本來就是爆炸多,隨手就能找到一篇《Deploying a Laravel Application to Elastic Beanstalk》 (謎之音:所以你又要偷懶不寫文了?) 不過 AWS 的中文文件目前只有簡中版,所以這篇文應該還是有一點價值啦! (謎之音:想充版面就說一聲,找一堆藉口。) 預備 Laravel 5.1 程式碼 老樣子,就直接用 composer create-project 建一個乾淨的 Laravel 5.1 來試試。 composer create-project --prefer-dist laravel/laravel trylaravel "5.1.*" 同時先把這一份 code 打包成 zip 壓縮檔,請參考 AWS 官方教學《Deploying a Laravel Application to Elastic Beanstalk》的作法。 cd trylaravel zip ../laravel-default.zip -r * .[^.]* 也就是打包成 zip 檔時,不要多那一層資料夾,直接把 code 打包。 而且注意噢,我們是連同 vendor、.env 這些檔案全都一起打包在 zip 中了。 (你也可以打包一個不含 .env 的 zip 檔,後面也有機會用到。)...

August 4, 2016 · Cheng Wei Chen

在 Azure - App Services (Web Apps) 上運行 Laravel 5.1

繼上一篇將 Laravel 部署在 GCP - App Engine,這次要來試用 Azure 的 App Service - Web Apps。  Azure 目前文件增加的速度頗快,所以官方其實已經有一篇《建立、設定和部署 PHP Web 應用應式至 Azure》而且文章很潮的就是用 Laravel 作為範例。 (謎之音:所以你其實也不用寫文了?反正別人已經寫好了。) 不過因為 azure-cli 有改版,所以上面那篇官方教學少寫了一件事,因為個人覺得頗雷,所以我決定先賣個關子,這樣我這篇文似乎還是有點用處,只是不知道能存活多久就是了。 申請試用 目前 Azure 一樣有 Free Trial,提供 30 天內有 NT$6,300 的額度讓你試用,當然與 GCP 相同,在試用方案期間 Azure 對於資源上限會有所限制,所以你一樣沒辦法在試用期建立某些巨大的架構,但若只是要試試 Azure 的各種服務則是綽綽有餘。  試用 Azure 目前比較麻煩有兩件事: 需要 Microsoft 帳號,如果沒有就去註冊一個吧。 需要輸入信用卡資料,沒有信用卡,那就去銀行辦卡吧。 安裝 Azure-cli 操作過程中(可能)需要用到 Azure-cli,請事先安裝完畢,可以參考 MS 官方文件,但如果跟我一樣不想在本機上安裝一堆東西,那上面的 MS 文件中也有提到,MS 作出了 Docker Image - azure-cli 可以直接取用。 這個 Docker Image - azure-cli 內含 curl、git、vim 當然還有 azure-cli,算是一個簡單乾淨的環境,如果覺得還缺了什麼,它是以 debian:jessie 當作 baseimage,所以想要自己補安裝其他軟體也不困難,可以自己動手 build 一個你所需的版本。...

July 28, 2016 · Cheng Wei Chen

在 Google Cloud Platform - App Engine 上運行 Laravel 5.1

觀望 Google Cloud Platform(以下都用縮寫 GCP)好一段時間了,也曾報名參加過好幾次他們的活動,並去參加了 101 的教學,但遲遲沒有正式開啟試用,這次有個機會需要試用 GCP 的 App Engine,擇日不如撞日於是就有了以下的一點經驗分享,究竟要如何在 GCP - App Engine 上部署 Laravel 5.1 的專案,對於 GCP 與 Laravel 有興趣者再往下看吧。 (但我可以先說一個小感想,如果是 Laravel 專案,可能還是別用 App Engine 吧,因為不見得有比較輕鬆,若非用不可,那建議最好評估一下優缺點,判斷這是否是適合你的最佳方案。) 申請GCP免費帳號 若申請 GCP 免費試用,你將可以在 60 天內擁有 $300 額度隨便你用。在免費試用期間不需填寫信用卡資訊,因此絕對安全不用擔心被意外扣款。 申請方式很簡單,登入你的 Google 帳號,接著進入 GCP - Free trial 網頁,用力地將 TRY IT FREE 按下去就對了。 接著基本上就是同意、下一步、下一步的流程,最後你的 Google 帳號就會與 GCP 的 Console 綁定,之後就能用此 Google 帳號快速登入了。(如果有任何疑慮,請自己看清楚每一頁的內容。) 免費試用畢竟還是有一些資源上限的限制,所以如果你想要在免費期間測試一些超大的架構,要先做好碰壁的心理準備,因為像是 compute engine 就有限制機器能建立的最高等級。 建立首個 Project GCP 與 AWS 在使用上有個很不一樣的地方,GCP 預設會以 Project 來區分資源。假設你實際上有好幾個專案要上線,那你便可以依據專案數量,替每個專案分別建立一個 GCP 的 Project。...

July 25, 2016 · Cheng Wei Chen

ansible-container 搶先用之踩雷之旅

注意!因為 open source 的工具改版的速度非常快速,而本文提到的 ansible-container 更是一個非常新的專案,恐怕不用幾天的時間,本文就會變成過期文章,因此閱讀之前建議先確認一下 ansible-container 目前的最新狀態,避免因為本文而讓你產生誤解。 (謎之音:所以你寫了一篇超短命的文章。) 本文確實已經過期,超短命的! ansible-container 已經更新好幾回合了,現在按官方文件操作就可以正常試用了喔! (再次更新,ansible-container 已經 DEPRECATED 了,原本使用它來 build container 的人,請改用 ansible-bender;如果是使用它來 deploy container 至 K8s,則請改用 Ansible Operators。) Ansible 官方這次更新的 2.1.0.0 版本,其中一個特點就是與 Container 有更好的互動,像官方部落格就特別寫了一篇文《SIX WAYS ANSIBLE MAKES DOCKER-COMPOSE BETTER》來介紹一部分重點。 不僅如此,Ansible 官方其實從五月就悶不吭聲的在 Github 上新建了一個新的工具 ansible-container,目標讓 Ansible 在操控與管理 Container 上能更靈活。 以下就依據目前官方 GitHub 上已釋出的資訊,搶先試用一下 ansible-container。但文章很長,因為記錄了幾個雷,如果你只想要爽爽順順的試用,那可以跳到最後一個段落,我有將最後除雷完後的環境,做一個簡單的記錄。 跳至除雷結果 如果你很有耐心一起除雷,那就繼續往下看吧! 安裝 ansible-container 必須要手動安裝,所以第一步當然是將官方 repo 先 clone 一份回來。 接著是安裝 docker-compose,因為根據官方文件 ansible-container 需要依賴 docker-compose library,因此使用它的前提就是你也必須安裝好 docker-compose。 (但其實不止如此,repo 中還有一個 requirements.txt 請務必閱讀,並將其中所列的 python lib 全都預備齊全為佳,不然可能會踩到雷。)...

June 6, 2016 · Cheng Wei Chen

Synology NAS 的 Docker 兩三事

在之前的文章有稍微提過,目前個人在 Synology NAS 上透過 Docker 架設了許多服務,也算是累積了一些在它上面使用 Docker 的經驗,此文將簡單的記錄一些 Synology NAS 上有關的 Docker 兩三事。 安裝與使用 要在 Synology NAS 上安裝 Docker 非常容易,直接在 Synology DSM 後台的「套件中心」安裝即可。安裝成功即可看到 DSM 中多了 Docker 的 GUI 可以使用。 個人覺得 Synology 做出來的 Docker GUI 其實滿好用的,私心希望他們能將它改寫另外打包成 opensource 釋出。 在 DSM 安裝完 Docker 之後,除了可以透過 GUI 的方式操作 Docker,若你 SSH 登入 NAS,會發現也可以直接在 SSH 中使用 Docker 指令。個人後來要啟動新的 Container 時,幾乎都是直接 SSH 登入,在 command line 中輸入 Docker 指令。 Docker 版本與相關檔案位置 NAS 若是安裝 DSM 5.2,則安裝的 Docker 版本會是 1.6.2。如果最近有升級到 DSM 6....

April 28, 2016 · Cheng Wei Chen

用 Docker 架設 GitLab CI、GitLab Runner

除了 Jenkins 之外,個人排行第二感興趣的 CI Tool 是 GitLab(GitLab CI 在 GitLab 8.0 之後合併至 GitLab CE/EE)。個人目前被 GitLab 所吸引的地方是它的「單純與便捷」,如同有些人說 Jenkins 太囉唆了,Jenkins 在使用上可以設定的細節超級多(雖然你不一定每一項都會用到);相較之下 GitLab 單純且便捷,彷彿只要在程式碼中多加一個 yaml 檔即可設定完所有 CI 流程與動作。 但,真的有這麼簡單嗎? 所以當然要實際架設來玩玩看,才能做出更多的判斷。 2016.11.4 補充,確實就是這麼簡單,GitLab 確實是目前熱門的 CI Tool,功能越趨完整,雖然難免開始肥大化,但是未來發展不容小覷。 另外此文已經有部分過期了,建議各位閱讀之餘,還要對照最新的文件,避免有誤! 用 Docker 架設 GitLab 現在 Docker 如此盛行,要架設服務最簡單的做法就是先上 Docker Hub 搜尋現成的 Docker Image。GitLab 這種熱門專案當然不意外,一定會有現成的 Image 可以直接取用。在社群朋友的推薦之下,即找到下面這個優質的 Docker Image。 https://hub.docker.com/r/sameersbn/gitlab/ 印象中這個 Docker Image 的作者 sameersbn 是 Docker 圈內的大神之一,除了 GitLab 之外,他也做了其他很多優質的 image,大神出品,品質保證,選用他的 image 准沒錯! 大神做出來的 Docker Image 備有非常完整的使用說明,根據 Quick Start 的說明,可以直接使用作者貼心的準備的 docker-compose....

April 4, 2016 · Cheng Wei Chen