SlideShare a Scribd company logo
Cheng Wei Chen @ Agile Tour Taipei 2017Photo by Daniel McCullough on Unsplash
Ansible & GitLab
CI / CD Workshop 101
Cheng Wei Chen 陳 正瑋
DevOps Engineer @ 得寬科技
http://chengweichen.com
2013
100 % Laravel
JetBrains
( )
PHP/Laravel
http://www.laravel-dojo.com
現場不進行詳細的操作步驟
詳細步驟請參閱部落格文章
https://goo.gl/ZHKiyb
在開始之前...
你讀完了嗎?
你讀完了嗎?
沒讀完也很正常啦
在開始動手之前,
你需要多想一想。
code build test release deploy operateplan
Continuous Integration
Continuous Delivery
目標
Continuous Deployment
CIcommit dev stagingtest
testprod deploy
environment
dev
staging
prod
local
commit
code build test release deploy operateplan
Continuous Integration
Continuous Delivery
今天的案例
Continuous Deployment
CI staging
testprod deploy
environment
staging
prod
commit build
stg-deploy test
unit test
prod-deploy
今天的案例
prod-remove
該選用哪些工具?
使用的工具
‧Ansible
‧Docker CE
‧GitLab.com
Your
Computer
Server
Free
Free
Free
環境說明
你的電腦
DEMO
code
GitLab
.com
Public
Runner
Cloud
Web
Server
Your
Runner
container
FreeFree
環境說明
你的電腦
DEMO
code
GitLab
.com
Public
Runner
Cloud
Web
Server
Your
Runner
container
FreeFree
FreeFree
GitLab CI 運作狀況
GitLab
.com
Public
Runner
Your
Runner
Docker
container
CI
Jobs
該從何處開始著手?
code build test release deploy operateplan
Automation
從痛點、小處著手
Automation
Deploy
從痛點、小處著手
stagingdev test test production
staging test production
Project-1
Project-2
production Project-3
x10
x5
x3
build
stg-deploy test
unit test
prod-deploy
今天的案例為例
prod-remove
.gitlab-ci.yml
build
Stage: Build
build-test
build-release
Stage: Build
build-test
Stage: Build
build-release
Stage: Build
build-release
Stage: Build
Ansible: upload_artifacts.yml
build
Stage: Build
build-test
build-release
Artifacts (test)
Artifacts (release)
Artifacts Repository (release)
Artifacts Repository (release)
Think
: https://unsplash.com/photos/hANqC3_kTqU
‧什麼是 Artifacts?
‧為何需要 Artifacts?
‧以及 Artifacts Repository?
延伸思考
延伸思考
‧為何要在 Build 時,同步進行
兩個 Jobs,一次就將測試與
Production 兩種環境的
Artifacts 給建立?
‧有沒有更好的做法?
延伸思考
‧在建立給 Production 使用的
Artifacts 時,還有哪些不必要
的檔案可以刪除,並不需要一
起放進 Artifacts Repository?
‧將 Ansible Playbook 與程式碼一起
送進同一個 Project Repository?
‧自動化腳本應該如何存放?存放於
何處?
‧該如何讓 CI Runner 可以順利取得
自動化腳本呢?
延伸思考
build unit test
Stage: unit-test
build-test
build-release
phpunit
Stage: unit-test
phpunit
Think
: https://unsplash.com/photos/hANqC3_kTqU
‧自動化測試?
‧What、When、How?
‧特別的測試組態該如何載入?
延伸思考
build unit test
Stage: stg-deploy
build-test
build-release
phpunit
stg-deploy
Stage: stg-deploy
stg-deploy
Ansible: auto-deploy.yml
Ansible: auto-deploy.yml
變數傳遞
Project
Ansible
Playbook
Your
Runner
Secret variable
Think
: https://unsplash.com/photos/hANqC3_kTqU
延伸思考
‧Deploy 應該執行哪些動作?
‧Deploy 的自動化腳本應該如何
設計?
‧Server 該如何與腳本配合?
延伸思考
‧續上,你規劃的自動 Deploy
流程可以反覆的 Re-eploy 嗎?
‧當自動 Deploy 失敗時該如何
處理?
延伸思考
‧Token、Key、inventory 或其
他 CI Job 需要的機敏資料應該
怎麼管理?並傳遞給 Runner?
延伸思考
‧Zero downtime deploy?
‧DB、Files、Storages?
延伸思考
build unit test
Stage: stg-test
build-test
build-release
phpunit
stg-deploy stg-test
stg
server
stg
server
Stage: stg-test
test
‧Staging 環境應該要與
Production 環境多相像?
延伸思考
延伸思考
‧在 Staging 環境中應該要執行
哪些自動化測試?
‧除了測試程式碼,還有哪些東
西需要驗證?
延伸思考
‧如何收集並回報測試的結果?
‧測試環境是否需要監控?
延伸思考
build unit test
Stage: prod-deploy
build-test
build-release
phpunit
stg-deploy stg-test
stg
server
stg
server
prod-deploy
Stage: test
test
prod-deploy
Think
: https://unsplash.com/photos/hANqC3_kTqU
‧Deploy 至 Staging 與
Production 的差異有哪些?
延伸思考
延伸思考
‧同一個 Deploy 自動化腳本如
何才能適用在不同的環境?
‧再一次,Zero downtime
deploy?
‧同樣 Files、Storages?
‧DB Migration?
延伸思考
‧如何驗證 Deploy 確實成功?
延伸思考
‧如何 Rollback?
延伸思考
‧如何管理不同 Branch 不同
Pipeline?
‧哪些 Job 可以共用?
延伸思考
build unit test
Stage: prod-deploy
build-test
build-release
phpunit
stg-deploy stg-test
stg
server
stg
server
prod-deploy
prod-remove
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Summary
code build test release deploy operateplan
Continuous Integration
Continuous Delivery
目標
Continuous Deployment
CIcommit dev stagingtest
testprod deploy
environment
dev
staging
prod
local
: https://unsplash.com/photos/Fixg8KipOg8
Trigger ScriptsInterface ServiceFlow
注意每個環節
因為坑,比你想像的多
Oooops
需要的資源(人力、工時),
也比你想像的多
需要的評估關鍵,
也同樣比你想像的多
code build test release deploy operateplan
Automation
從痛點、小處著手
Automation
•
•
•
•
•
思考並評估
好書非讀不可
CD
https://www.infoq.com/articles/Continuous-Delivery-Maturity-Model
好書非讀不可
https://landing.google.com/sre/book.html
• Operator-triggered manual action
• Operator-written, system-specific automation
• Externally maintained generic automation
• Internally maintained, system-specific automation
• Autonomous systems that need no human
intervention
自動化的演進
https://landing.google.com/sre/book.html
反覆評估、持續改善
Photo by Sweet Ice Cream Photography on Unsplash
迭代
工商服務
https://devopstw.club
尋求志工、贊助
: https://pixabay.com/en/building-joy-planning-plans-1080592/ , https://pixabay.com/en/baby-hand-dad-200760/
尋求講者及講題
: https://www.pexels.com/photo/man-person-suit-united-states-of-america-2281/
http://fb.sre.tw
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Photo by Clark Tibbs on Unsplash
Thank You

More Related Content

PDF
GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做
PDF
跟著 geerlingguy 大神
一起測試 Ansible Roles
PDF
My DevOps Tour 0.1
PDF
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
PDF
iThome Serverless All-Star 開場
PDF
困境與轉型:一個小型開發團隊的 DevOps 學習之旅
PDF
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
PDF
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做
跟著 geerlingguy 大神
一起測試 Ansible Roles
My DevOps Tour 0.1
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
iThome Serverless All-Star 開場
困境與轉型:一個小型開發團隊的 DevOps 學習之旅
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)

What's hot (20)

PDF
以自動化先行的 DevOps 實踐經驗分享
PPTX
Agile / Scrum
PDF
Continuous Delivery - 敏捷開發的最後一哩路
PDF
Is it really easy for companies to import Ansible automation
PDF
從 DevOps 到 ChatOps:War Room、Bots 與 Automation
PDF
Effective DevOps (Agile Tour HsinChu 2017)
PPTX
用Octopus deploy做自動部署 - 快速上手
PDF
Dev ops 簡介
PDF
CICD Workshop 20180922
PDF
Continuous Delivery Workshop with Ansible x GitLab CI
PDF
運用 Docker 整合 Laravel 提升團隊開發效率
PDF
DevOpsDays Taipei 2017 Farewell
PDF
How to integrate GitLab CICD into B2B service
PPTX
Go 語言基礎簡介
PPTX
20170905 dev ops in hiiir
PDF
My DevOps Tour 2.3
PDF
為瞬間巨量做好準備 20180726
PDF
DevOps核心理念和實踐
PDF
Testing in Production, Deploy on Fridays
PDF
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
以自動化先行的 DevOps 實踐經驗分享
Agile / Scrum
Continuous Delivery - 敏捷開發的最後一哩路
Is it really easy for companies to import Ansible automation
從 DevOps 到 ChatOps:War Room、Bots 與 Automation
Effective DevOps (Agile Tour HsinChu 2017)
用Octopus deploy做自動部署 - 快速上手
Dev ops 簡介
CICD Workshop 20180922
Continuous Delivery Workshop with Ansible x GitLab CI
運用 Docker 整合 Laravel 提升團隊開發效率
DevOpsDays Taipei 2017 Farewell
How to integrate GitLab CICD into B2B service
Go 語言基礎簡介
20170905 dev ops in hiiir
My DevOps Tour 2.3
為瞬間巨量做好準備 20180726
DevOps核心理念和實踐
Testing in Production, Deploy on Fridays
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
Ad

Similar to Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017) (8)

PDF
Continuous integration
PDF
把玩 Jenkins CI
PDF
Continuous Delivery with Ansible x GitLab CI
PDF
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
PDF
Bitbucket pipeline CI
PDF
Continuous Delivery with Ansible x GitLab CI (2e)
PPTX
Jenkins x GitLab CI
PPTX
Git基礎介紹
Continuous integration
把玩 Jenkins CI
Continuous Delivery with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Bitbucket pipeline CI
Continuous Delivery with Ansible x GitLab CI (2e)
Jenkins x GitLab CI
Git基礎介紹
Ad

More from Chen Cheng-Wei (20)

PDF
GitOps is IaC done right
PDF
From DevOps to GitOps with GitLab
PDF
Become a GitLab Hero
PDF
和艦長一起玩轉 GitLab & GitLab Workflow
PDF
SRE 讀書會:導讀《持續交付》第15章 - 持續交付管理
PDF
DevOpsDays Taiepi 2018 - Farewell 閉幕
PDF
SRE 讀書會 - 導讀:第 31 章
PDF
SRE 讀書會 - 導讀:第 30 章
PDF
CI/CD、自動化,你還沒準備好(GCPUG.TW Meetup #34)
PDF
Ignite talks
PDF
CI、CD、Automation你還沒準備好!?(Agile Tour Kaohsiung 2017)
PDF
SRE 讀書會 - 導讀:第一章
PDF
DevOpsDays Taipei 2017 Opening Talk
PDF
Effective DevOps:一場文化與技術的轉型運動
PDF
Ignite talks - 自動化的關鍵
PDF
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
PDF
提到 DevOps 到底在談些什麼玩意兒?
PDF
PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
PDF
快快樂樂打造自動化開發環境
PDF
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
GitOps is IaC done right
From DevOps to GitOps with GitLab
Become a GitLab Hero
和艦長一起玩轉 GitLab & GitLab Workflow
SRE 讀書會:導讀《持續交付》第15章 - 持續交付管理
DevOpsDays Taiepi 2018 - Farewell 閉幕
SRE 讀書會 - 導讀:第 31 章
SRE 讀書會 - 導讀:第 30 章
CI/CD、自動化,你還沒準備好(GCPUG.TW Meetup #34)
Ignite talks
CI、CD、Automation你還沒準備好!?(Agile Tour Kaohsiung 2017)
SRE 讀書會 - 導讀:第一章
DevOpsDays Taipei 2017 Opening Talk
Effective DevOps:一場文化與技術的轉型運動
Ignite talks - 自動化的關鍵
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
提到 DevOps 到底在談些什麼玩意兒?
PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
快快樂樂打造自動化開發環境
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)

Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)