建立 PHPConf 2016 自動化與持續整合實作工作坊 的實作環境 (Azure)

這次受邀擔任 PHPConf 2016 的工作坊講師,負責一場「自動化與持續整合」的實作工作坊,除了有事先預備了 Local VM 提供參與者事先安裝設置之外,要特別感謝微軟贊助本工作坊,每位學員都會擁有一組 Azure Pass 一個月內有限額的 Azure 試用,讓學員可以直接在 Azure 上建立工作坊的實作環境。 此文即是紀錄在 Azure 上要如何建立實作環境。 (2017/8/5 註記:此文的一些資訊已經過期,你也知道工具是會不斷更新的。) 環境描述 再重複一次我們會需要用到下面四種 Server: CI Server:這次工作坊會以 GitLab 作為主要的 CI Server。 CI Worker:即是 GitLab Runner。 Web Server:標準的 Nginx + Php-fpm,而且要開放可以 SSH Login。 Selenium Server:測試案例中會用到 Selenium。 在 Azure 上,其實有各種方式可以組合出實作環境,但既然我們有 Azure 免費試用,當然可以選一種相對簡單,但又很奢侈的建置方式,即是「建立多台 VM 並安裝好 Docker,讓每台 VM 都只用 Docker 建立 1~2 種 Service。」 如此一來由多台 VM 各自負擔工作,不用擔心資源不足,也不用煩惱 IP 的問題。 所以讓我們再次感謝微軟的大力贊助! 不過我想 Azure 專家們應該會跳出來說,Azure 明明就有很多好作法,所以我只好維持一樣的回答,此文不是 Azure 教學文啊,只是想用最簡單的方式建構出本次工作坊的實作環境,就請專家們睜一隻眼閉一隻眼嘍。 當然,你也可以開一台超大超強的 VM,然後和上一篇文章的 Local VM 一樣,在一個 VM 內用 Container 提供多種服務的方式建置環境,做起來也不難,但這就留給有心人自己去嘗試了。...

October 28, 2016 · Cheng Wei Chen

建立 PHPConf 2016 自動化與持續整合實作工作坊 的實作環境 (Local VM)

這次受邀擔任 PHPConf 2016 的工作坊講師,負責一場「自動化與持續整合」的實作工作坊,因為希望工作坊的過程中能將網路與實作環境的問題減少到最少,所以事先預備了 Local VM 提供參與者事先安裝設置。 此文即是紀錄這個 Loacl VM 是如何建立的。 (2017/8/5 註記:此文的一些資訊已經過期,你也知道工具是會不斷更新的。) 環境描述 因為考慮到不是每個人都會有頂規的電腦設備,同時也為了方便設置,因此在 Local VM 的規劃上,不打算實際建立多台 VM,而是以單一 VM 並在其中透過多個 docker container 的方式來模擬多 VM 的情況。 我們會需要用到下面四個 Server: CI Server:這次工作坊會以 GitLab 作為主要的 CI Server。 CI Worker:即是 GitLab Runner。 Web Server:標準的 Nginx + Php-fpm,而且要開放可以 SSH Login。 Selenium Server:測試案例中會用到 Selenium。 基於以上四項都要放在同一台 虛擬 VM 裡,並用多個 Container 來實現,在經過實驗之後建議運行此 VM 的電腦或筆電(host機)至少需要: 超過 2GB 的記憶體。因為 GitLab 與 Selenium 都滿吃 Ram,因此分配給 VM 的 Ram 至少要 2GB, 預留 10 ~ 20 GB 硬碟空間。因為運行 Docker 環境其實也滿吃硬碟空間的,硬碟空間能留越多是越好啦! VM 與 host 機將對映幾個 port 分別是 80、2222、10122、10180 為了簡化環境建置的難度,作為此 VM 的 OS 我們即選用 ubuntu 14....

October 28, 2016 · Cheng Wei Chen

iThome Container Summit 2016 Day 2 簡易筆記心得

延續上一篇 iThome Container Summit 2016 Day 1 簡易筆記心得,當然繼續補完 Day 2 的內容。 首先再貼一次 iThome 建立的線上聊天區及共筆區,講者簡報也開始陸續提供下載了。 Gitter 線上聊天區 共筆區 Container Summit 官網下載簡報 2016.10.14 補充:Container Summit 官方已釋出錄影 Keynote: Docker 集群編排方案 這場是由真正來自 Docker 公司的講者陳東洛(去年加入的)為大家分享「Docker 集群編排方案」。說真的我一開始也不知道這個中文「編排」所指的是?聽了一段之後才知道是指很難翻譯成中文的 “Orchestration”。 本場的重點即是 Docker 的 Container Orchestration,所以在開場講者先快速的說明了一些背景因素,像是這幾年的軟體開發架構變化,與 Docker 解決了哪些問題及沒解決哪些問題。由此點出為何 Docker 也要推出他們家的 Container Orchestration 工具。 其中我覺得說得很好的一點是「Orchestration 並不是一個新的議題」,在沒有 Docker 之前就已有 Orchestration 需求,只是既有的 Orchestration 工具並不是這麼適合 Docker (Container),畢竟 Docker 也不過是這幾年才出現並熱門。也因此 Docker 當然要做自己的 Orchestration 工具,而且其實 Docker 一直有從開源社群、用戶那得到回饋,也一直有在研究 Orchestration 這方面。 接著就進入正題 Docker 的 Orchestration 工具,這可用 Docker 1....

September 24, 2016 · Cheng Wei Chen

iThome Container Summit 2016 Day 1 簡易筆記心得

今天參加了 iThome 舉辦的 Container Summit 2016,以下是 Day 1 的簡易心得筆記。 iThome 這次也有建立線上聊天區及共筆區,簡報也開始陸續提供下載了。 Gitter 線上聊天區 共筆區 Container Summit 官網下載簡報 2016.10.14 補充:Container Summit 官方已釋出錄影 Keynote: The Kubernetes API & Next Generation Automation Tools 又是來自 Google 的 Ian Matthew Lewis,今年到底見過這位講者幾次呢?我想至少有三次以上吧。當然這次依然是講 k8s 的相關主題,前半場依然有些 k8s 的基礎介紹,像是 k8s 到底幫你解決了建立 Container Cluster 需要處理哪些麻煩的細節。 雖然說是基礎但卻是不得不介紹的內容,因為必須要先理解 k8s 的基本運作及 k8s 的 controller 是如何運作,接著才能理解後半場有關 k8s API 及 Custom Controllers 的 DEMO。 再看講師 後半 DEMO 時,一開始有些閃神(這就是一邊偷看共筆與聊天的缺點),沒搞懂為何忽然開始寫 Go,接著才理解這邊可是火力展示!DEMO 與前面的說明相呼應,讓你理解 k8s API 及 controller。 G 社的講師向來都是不開放簡報下載與錄影,所以閃神沒仔細聽的部分就沒辦法補課,有些可惜,但總之因為 k8s API 讓我對於 k8s 的好感又加了數分。...

September 22, 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