# 企業導入 Ansible 自動化真的容易嗎 @ DevOpsDays Taipei 2019
Ansible 是個簡單易用的 Infrastructure as Code 組態設定工具,在雲端盛行的現代,許多企業都想藉由導入自動化工具好 DevOps 起來。好工具一個人用是一回事,但一個團隊、一間企業一起用又是另一回事。
本次凍仁將從導入 Ansible 開始,述說兩年來的自動化組態實踐心得。
※ 圖片來來源:https://unsplash.com/photos/FyD3OWBuXnY企業導入 Ansible ⾃自動化真的容易易嗎[ [email protected] ~ ] $ cat .profile# Author: 凍仁翔 (Chu-Siang Lai)# Email: [email protected]# Blog: https://note.drx.tw# Date: 2019-10-17
View Slide
凍仁翔2• 美商普維軟體⼯工程師• Ansible Taiwan 社群組織者• DevOps Taiwan 志⼯工• 台灣敏捷協會成員@chusiang_lai
DevOpsDays Taipei 2019312:10 – 13:30 Break13:30 – 14:10LINE SRE Practice from Observability Viewpoint 洪立遠如何利利⽤用遙測⾯面板來來改善品質 蘇義傑企業導入 Ansible ⾃自動化真的容易易嗎 凍仁翔14:10 – 14:20 Break
※ 圖片來來源:https://unsplash.com/photos/FyD3OWBuXnY企業導入 Ansible ⾃自動化真的容易易嗎[ [email protected] ~ ] $ cat .profile# Author: 凍仁翔 (Chu-Siang Lai)# Email: [email protected]# Blog: https://note.drx.tw# Date: 2019-10-17難,但值得
OutlineAnsible1. Ansible 是什什麼2. 從 1 到 20 的⾃自動化3. 得到什什麼技藝4. 回顧AutoCraftRetro
6Ansible Auto Craft Retro61. Ansible 是什什麼
7https://www.ansible.com
8https://github.com/chusiang/automate-with-ansible
9Ansible 取名⾃自Answerable,在⼩小說 《安德的遊戲》中代表著虛構的超光速即時通訊裝置。» http://bit.ly/33pjmno2013 年年的電影海海報 - https://goo.gl/4xftZT
10https://youtu.be/8wwJd7WUtko
指揮官思維Commander Thinking11
指揮官性格 (ENTJ)1. 坦率、果斷、隨時承擔領導職責。2. 能迅速看到不合邏輯和低效的產品策略略,透過建立並部署綜合系統,解決組織架構問題。3. 消息靈通,知識淵博,樂於擴展知識並傳授給他⼈人。12» ENTJ | 維基百科 - https://zh.wikipedia.org/wiki/ENTJ
13開始⽤用 Ansible就該像指揮官 思考整體部署
14Ansible Auto Craft Retro142. 從 1 到 20 的⾃自動化
15新兵報到前置作業減少例例外⼯工作 Infra標準化設計 Playbooks整體架構完成 1stPlaybooks串串 Playbooks 和 CI打造 CD stage招募 2ndAnsibler重寫 2nd.Playbooks2019.092017.03幫其他團隊寫 Playbooks加入 Unit Test⽤用 Docker重構 Unit Test招募 3rdAnsibler⾃自動化歷程圖已有 CI 和Build stage
16CustomerGit server DevelopmentGitLab CI BuildTest(Docker)Deploy(Auto.)Release ModulesEngineerStagingProd. Release SQANowManualManual
17新兵報到前置作業減少例例外⼯工作 Infra標準化2019.092017.031. 學習架構流程已有 CI 和Build stage
18CustomerGit server DevelopmentGitLab CI BuildDeploy(Manual)Release ModulesEngineerStagingProd. Release SQAⅠManualManual
缺乏⾃自動化部署技能19招兵買⾺馬⾃自⾏行行培養慢 快
20第 1 位被徵招的Ansibler 在此
前置作業21Pair Programming寫⽂文件慢 快
※ 圖片來來源:https://unsplash.com/photos/hLUTRzcVkqg 22計畫外⼯工作 / 救火
減少例例外⼯工作1. 記錄每次的變更更⼯工作,並從過往學習。2. Pair System Administration。3. 事先於每⽇日站立會議詢問變更更影響範圍。4. 僅於上版⽇日變更更 Staging、Production。23
24新兵報到前置作業減少例例外⼯工作 Infra標準化設計 Playbooks整體架構完成 1stPlaybooks串串 Playbooks 和 CI打造 CD stage2019.092017.03已有 CI 和Build stage2. 打造 CD pipeline
ManualManualⅡ25CustomerGit server DevelopmentGitLab CI BuildDeploy(Auto.)Release ModulesEngineerStagingProd. Release SQA> Add "Deploy" stage.
_____________________________/ DevOps ⼈人⼀一定要 \\ 知道的持續交付技巧 /-----------------------------\\ ^__^\ (oo)\_______(__)\ )\/\||----w ||| ||[ [email protected] ~ ]$ cat .profile# Author: 凍仁翔 / [email protected]# Blog: http://note.drx.tw# Modified: 2018-01-13 14:00# Reference: http://s.drx.tw/cdws5th
27新兵報到前置作業減少例例外⼯工作 Infra標準化設計 Playbooks整體架構完成 1stPlaybooks串串 Playbooks 和 CI打造 CD stage2019.092017.03加入 Unit Test已有 CI 和Build stage3. 加入 Unit Test
ManualManualⅢ28CustomerGit server DevelopmentGitLab CI BuildDeploy(Auto.)Test(VM)Release ModulesEngineerStagingProd. Release SQA> Add "Unit Test" stage.
同事:「Unit Test 在多台 HA 架構下,會打架。」29凍仁:「那就建台專⾨門跑 Unit Test 的 VM 吧!」4. ⽀支援 HA 架構
ManualManualⅣ30CustomerGit server DevelopmentGitLab CI BuildTest(VM)Deploy(Auto.)Release ModulesEngineerStagingProd. Release SQA> Switch "Deploy" and "Test" stage.
31新兵報到前置作業減少例例外⼯工作 Infra標準化設計 Playbooks整體架構完成 1stPlaybooks串串 Playbooks 和 CI打造 CD stage招募 2ndAnsibler重寫 2nd.Playbooks2019.092017.03幫其他團隊寫 Playbooks加入 Unit Test⽤用 Docker重構 Unit Test已有 CI 和Build stage5. 重構 Unit Test 架構
ManualManualⅤ32CustomerGit server DevelopmentGitLab CI BuildTest(Docker)Deploy(Auto.)Release ModulesEngineerStagingProd. Release SQA> Refactor "Unit Test" stage via Docker.
33新兵報到前置作業減少例例外⼯工作 Infra標準化設計 Playbooks整體架構完成 3rdPlaybooks串串 Playbooks 和 CI打造 CD stage招募 2ndAnsibler重寫 2nd.Playbooks2019.092017.03幫其他團隊寫 Playbooks⽤用 Docker重構 Unit Test⽤用 Docker重構 Unit Test招募 3rdAnsibler6. 如果可以重來來已有 CI 和Build stage
即早交付,即早發揮價值1. Ansible playbooks:• 1st → 2nd:8 個⽉月。• 2nd → 3rd:? 個⽉月。2. Unit Test• VM → Docker:24 個⽉月。34技術問題vs.策略略問題
35Ansible Auto Craft Retro353. 得到什什麼技藝
起⼿手式1. 最明確的部署流程。2. 最常重複的操作。3. 最易易出錯的地⽅方。36鬆綁瓶頸點
37組態設定⼯工具 = 槓桿解AnsibleSaltStack ChefPuppet
[ [email protected] ~ ] $ cat .profile# Author: 凍仁翔 (Chu-Siang Lai)# Email: [email protected]# Blog: https://note.drx.tw# Date: 2018-12-15# Reference: http://s.drx.tw/dpse__________________________< 系統⼯工程師的 DevOps 實踐之道 >--------------------------\\
業務專案待辦量量IT 內部專案⼯工作量量Ansible組態新需求⼿手動 組態捨本逐末R1新⼯工作B2⼿手動協作⼒力力39B3PlaybooksR4協作⼒力力降低
–《第五項修練》「將注意⼒力力集中在根本解。但如果問題急迫,由於根本解的效果受時間滯延影響,在進⾏行行根本解的過程中,可暫時使⽤用症狀狀解來來換取時間。」40捨本逐末Ansible 組態⼿手動組態
業務專案待辦量量IT 內部專案⼯工作量量計畫外⼯工作發⽣生率變更更⼯工作 品質新需求⼿手動 組態預演變更更成本飲鴆⽌止渴 3R1新⼯工作B2⼿手動R3害怕變更更Ansible組態41
業務專案待辦量量IT 內部專案⼯工作量量⼯工作完成量量 變更更⼯工作 品質新需求⼿手動 組態⼈人為 失誤率飲鴆⽌止渴 2R1新⼯工作B2⼿手動R3重蹈覆徹從過往學習42
業務專案待辦量量IT 內部專案⼯工作量量計畫外⼯工作發⽣生率變更更⼯工作 品質新需求加班時數⼈人為 失誤率飲鴆⽌止渴 1R1新⼯工作B2加班R3品質下降43
–《第五項修練》「眼光凝聚在長期焦點。如果可能的話,完全摒除那種短期對策。除非短期對策只是⽤用來來換取時間,以尋求更更妥善的長期解決⽅方案。」44飲鴆⽌止渴Ansible 組態⼿手動組態、加班
業務專案待辦量量IT 內部專案⼯工作量量Ansible組態新需求成長上限R1新⼯工作協作⼒力力45B2PlaybooksR3共享組態⼿手動組態加班時數⼯工作完成量量
–《第五項修練》「不要去推動『增強 -- 成長 -- 環路路』,應該要除去 (或減弱) 限制的來來源。」46成長上限Ansible 組態 ーー 協作⼒力力⼿手動組態、加班、⼯工作完成量量
為什什麼⾃自動化1. 寫出漂亮⼜又可⽤用的 Ansible Playbooks。2. 提⾼高團隊產能。3. 降低計畫外⼯工作發⽣生率。47
– Chu-Siang Lai「⾃自動化無法直接減少計畫外⼯工作,我們應時常於安全環境預演變更更,減少浪費。」48
49Ansible Auto Craft Retro494. 回顧
50開始⽤用 Ansible就該像指揮官 思考整體部署
51新兵報到前置作業減少例例外⼯工作 Infra標準化設計 Playbooks整體架構完成 1stPlaybooks串串 Playbooks 和 CI打造 CD stage招募 2ndAnsibler重寫 2nd.Playbooks2019.092017.03幫其他團隊寫 Playbooks加入 Unit Test⽤用 Docker重構 Unit Test招募 3rdAnsibler⾃自動化歷程圖已有 CI 和Build stage
52組態設定⼯工具 = 槓桿解AnsibleSaltStack ChefPuppet
53業務專案待辦量量IT 內部專案⼯工作量量計劃外⼯工作發⽣生頻率變更更⼯工作 品質新需求加班時數⼈人為 失誤率⼿手動 組態協作⼒力力Pair System Admin]記錄變更更從過往學習Ansible組態預演組態 變更更成本]學習架 構流程撰寫 Ansible PlaybooksZabbix監控系統掌握度便便利利貼架構牆⼯工作完成量量CLD
54# — ⾃自我成長 ——————————# — DevOps ——————————
「只要你有耐⼼心,先專注在流程改善上,隨後⼀一段時間,品質會上升,成本也會上升;但不久之後,你便便發覺有些成本快速下降;數年年之內,成本⼤大幅下滑,兩兩者兼得。」55– 彼得.聖吉,《第五項修練》
Q & A56http://bit.ly/32v3G1C
【萍⽔水相逢.tw @ 彩虹市集】 10/26 (六) 12:00 ~ 18:00 臺灣同志⼤大遊⾏行行 (台北市府前)
https://t.me/devopstwhttps://www.facebook.com/groups/DevOpsTaiwan/https://devopstw.club/DevOps Taiwan58
Ansible Taiwanhttps://t.me/ansible_twhttps://github.com/ansible-twhttp://ansible.tw59
https://www.facebook.com/groups/agile.kaohsiung/https://www.facebook.com/AgileTourHsinchu/https://www.facebook.com/groups/AgileNeihu/http://fb.me/AgileCommunity.tw60
61[ [email protected] ~ ] $ cat .profile# Author: 凍仁翔 (Chu-Siang Lai)# Email: [email protected]# Blog: https://note.drx.tw# Date: 2019-10-17END