精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

超實用:小團隊如何從零搭建一個自動化運維體系?

運維 系統運維 自動化
行業內各巨頭的自動化運維架構都各種功能,各種酷炫,讓人可望不可及。

行業內各巨頭的自動化運維架構都各種功能,各種酷炫,讓人可望不可及。

如下圖,現在行業內各巨頭自動化運維架構的最終樣子大家都知道了,但是如何根據自己團隊當前的情況一步步向這個目標演進?

筆者所在團隊,三個半開發,要維護幾十臺云機器,部署了十來個應用,這些應用 90% 都是遺留系統。

應用系統的編譯打包基本在程序員自己的電腦上。分支管理也清一色的 dev 分支開發,測試通過后,再合并到 master 分支。

生產環境的應用配置要登錄上具體的機器看才知道,更不用說配置中心及配置版本化了。對了,連基本的機器級別的基礎監控都沒有。

我平時的工作是 50% 業務開發,50% 運維。面對這么多問題,我就想,如何在低成本情況下實現自動化運維。

本文就是總結我在這方面一些經驗和實踐,希望對讀者有幫助。

別說話,先上監控和告警

事情有輕重緩急,監控和告警是我覺得一開始就要做的,即使業務開發被拖慢。只有知道了當前的情況,你才好做下一步計劃。

現在市面上監控系統很多:Zabbix、Open-Falcon、Prometheus,但是最終我選擇了 Prometheus。

原因有如下幾點:

  • 它是拉模式的。
  • 它方便使用文本方式來配置,有利于配置版本化。
  • 插件多,想要監控什么,基本都會有現成的插件。

以上三者,我基本都要重新學,我為什么不學一個 Google SRE 書上推薦的呢?

之前我們已經介紹過,人少機器多,所以安裝 Prometheus 的過程也必須要自動化,同時版本化。我使用的是 Ansible + Git 實現。

最終樣子如下:

這里需要簡單介紹一下:

  • Prometheus Server 負責監控數據收集和存儲。
  • Prometheus Alert manager 負責根據告警規則進行告警,可集成很多告警通道。
  • node-exporter[1] 的作用就是從機器讀取指標,然后暴露一個 http 服務,Prometheus 就是從這個服務中收集監控指標。當然 Prometheus 官方還有各種各樣的 exporter。

使用 Ansible 作為部署工具的一個好處是太多現成的 role 了,安裝 Prometheus 時,我使用的是現成的:prometheus-ansble[2]。

有了監控數據后,我們就可以對數據進行可視化,Grafana 和 Prometheus 集成得非常好,所以我們又部署了 Grafana:

在 Grafana 上查看 nodex-exporter 收集的數據的效果圖大概如下: 

可是,我們不可能 24 小時盯著屏幕看 CPU 負載有沒有超吧?這時候就要上告警了,Promehtues 默認集成了 N 多告警渠道,可惜沒有集成釘釘。

但也沒有關系,有好心的同學開源了釘釘集成 Prometheus 告警的組件:prometheus-webhook-dingtalk[3]。

接著,我們告警也上了:

完成以上工作后,我們基礎監控的架子就完成了,這為我們后期上 Redis 監控、JVM 監控等更上層的監控做好了準備。

配置版本化要從娃娃抓起

在搭建監控系統的過程中,我們已經將配置抽離出來,放到一個單獨的代碼倉庫進行管理。以后所有部署,我們都會將配置和部署邏輯分離。

關于如何使用 Ansible 進行配置管理,可以參考這篇文章:How to Manage Multistage Environments with Ansible[4] 。

我們就是使用這種方式來組織環境變量的。

  1. ├── environments/         # Parent directory for our environment-specific directories 
  2. │   │ 
  3. │   ├── dev/              # Contains all files specific to the dev environment 
  4. │   │   ├── group_vars/   # dev specific group_vars files 
  5. │   │   │   ├── all 
  6. │   │   │   ├── db 
  7. │   │   │   └── web 
  8. │   │   └── hosts         # Contains only the hosts in the dev environment 
  9. │   │ 
  10. │   ├── prod/             # Contains all files specific to the prod environment 
  11. │   │   ├── group_vars/   # prod specific group_vars files 
  12. │   │   │   ├── all 
  13. │   │   │   ├── db 
  14. │   │   │   └── web 
  15. │   │   └── hosts         # Contains only the hosts in the prod environment 
  16. │   │ 
  17. │   └── stage/            # Contains all files specific to the stage environment 
  18. │       ├── group_vars/   # stage specific group_vars files 
  19. │       │   ├── all 
  20. │       │   ├── db 
  21. │       │   └── web 
  22. │       └── hosts         # Contains only the hosts in the stage environment 
  23. │ 

現階段,我們所有的配置都以文本的方式存儲,將來要切換成使用 Consul 做配置中心,也非常的方便,因為 Ansible 2.0 以上的版本已經原生集成了Consul:consul_module[5]。

Tips:Ansible 的配置變量是有層次的,這為我們的配置管理提供了非常大的靈活性。

Jenkins 化:將打包交給 Jenkins

我們要將所有項目的打包工作交給 Jenkins。當然,現實中我們是先將一些項目放到 Jenkins 上打包,然后逐步將項目放上 Jenkins。

首先我們要有 Jenkins,搭建 Jenkins 同樣有現成的 Ansible 腳本:ansible-role-jenkins[6]。

注意了,在網上看到的大多文章告訴你 Jenkins 都是需要手工安裝插件的,而我們使用的這個 ansible-role-jenkins 實現了自動安裝插件,你只需要加一個配置變量 jenkins_plugins 就可以了。

官方例子如下:

  1. --- 
  2. - hosts: all 
  3.   vars: 
  4.     jenkins_plugins: 
  5.       - blueocean 
  6.       - ghprb 
  7.       - greenballs 
  8.       - workflow-aggregator 
  9.     jenkins_plugin_timeout: 120 
  10.   pre_tasks: 
  11.     - include_tasks: java-8.yml 
  12.   roles: 
  13.     - geerlingguy.java 
  14.     - ansible-role-jenkins 

搭建好 Jenkins 后,就要集成 Gitlab 了。我們原來就有 Gitlab ,所以不需要重新搭建。

最終 Jenkins 搭建成以下這個樣子:

關于 Jenkins master 與 Jenkins agent 的連接方式,由于網絡環境各不相同,網上也有很多種方式,大家自行選擇適合的方式。

現在我們需要告訴 Jenkins 如何對我們的業務代碼進行編譯打包,有兩種方法:

界面上設置

  • 使用 Jenkinsfile:類似于 Dockerfile 的一種文本文件,具體介紹:Using a Jenkinsfile[7]
  • 我毫不猶豫地選擇了第二種,因為一是利于版本化;二是靈活。

Jenkinsfile 類似這樣:

  1. pipeline { 
  2.     agent any 
  3.     stages { 
  4.         stage('Build') { 
  5.             steps { 
  6.                 sh './gradlew clean build' 
  7.                 archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true 
  8.             } 
  9.         } 
  10.     } 

那么 Jenkinsfile 放哪里呢?答案是和業務代碼放在一起,類似這樣每個工程各自管理自己的 Jenkinsfile:

這時,我們就可以在 Jenkins 上創建一個 pipleline Job了。關于分支管理,我們人少,所以,建議所有項目統一在 master 分支進行開發并發布。

讓 Jenkins 幫助我們執行 Ansible

之前我們都是在程序員的電腦執行 Ansible 的,現在我們要把這項工作交給 Jenkins。

具體操作:

  • 在 Jenkins 安裝 Ansible 插件[8]
  • 在 Jenkinsfile 中執行
  1. withCredentials([sshUserPrivateKey(keyFileVariable:"deploy_private",credentialsId:"deploy"),file(credentialsId: 'vault_password', variable: 'vault_password')]) { 
  2.              ansiblePlaybook vaultCredentialsId: 'vault_password', inventory: "environments/prod", playbook: "playbook.yaml"
  3.              extraVars:[ 
  4.                ansible_ssh_private_key_file: [value: "${deploy_private}", hidden: true], 
  5.                build_number: [value: "${params.build_number}", hidden: false
  6.              ] 

這里需要解釋下:

  • ansiblePlaybook 是 Jenkins ansible 插件提供的 pipeline 語法,類似手工執行:ansible-playbook 。
  • withCredentials 是 Credentials Binding[9] 插件的語法,用于引用一些敏感信息,比如執行 Ansible 時需要的 ssh key 及 Ansible Vault 密碼。
  • 一些敏感配置變量,我們使用 Ansible Vault[10] 技術加密。

Ansible 腳本應該放哪?

我們已經知道各個項目各自負責自己的自動化構建,所以 Jenkinfile 就放到各自項目中。

那項目的部署呢?同樣的道理,我們覺得也應該由各個項目自行負責,所以我們的每個要進行部署的項目下都會有一個 Ansible 目錄,用于存放 Ansible 腳本。

類似這樣:

但是,怎么用呢?我們會在打包階段將 Ansible 目錄進行 zip 打包,到真正部署時,再解壓執行里面的 playbook。

快速為所有的項目生成 Ansible 腳本及Jenkinsfile

上面,我們將一個項目進行 Jenkins 化和 Ansible 化,但是我們還有很多項目需要進行同樣的動作。

考慮到這是體力活,而且以后我們還會經常做這樣事,所以我決定使用 cookiecutter[11] 技術自動生成 Jenkinsfile 及 Ansible 腳本,創建一個項目,像這樣:

小結

總結下來,我們小團隊的自動化運維實施的順序大概為:

  • 上基礎監控
  • 上 Gitlab
  • 上 Jenkins,并集成 Gitlab
  • 使用 Jenkins 實現自動編譯打包
  • 使用 Jenkins 執行 Ansible

以上只是一個架子,基于這個“架子”,就可以向那些大廠高大上的架構進行演進了,比如:

  • CMDB 的建設:我們使用 ansible-cmdb[12] 根據 inventory 自動生成當前所有機器的情況。
  • 發布管理:Jenkins 上可以對發布的每個階段進行定制。藍綠發布等發布方式可以通過修改 Ansible 腳本和 Inventory 實現。
  • 自動擴縮容:通過配置 Prometheus 告警規則,調用相應 webhook 就可以實現。
  • ChatOps:ChatOps 實戰[13]。

以上就是我關于自動化運維的一些實踐,但是還在演進的路上,希望能與大家交流。

相關鏈接:

  • [1]https://github.com/prometheus/node_exporter
  • [2]https://github.com/ernestas-poskus/ansible-prometheus
  • [3]https://github.com/timonwong/prometheus-webhook-dingtalk
  • [4]https://www.digitalocean.com/community/tutorials/how-to-manage-multistage-environments-with-ansible
  • [5]http://docs.ansible.com/ansible/latest/modules/consul_module.html
  • [6]https://github.com/geerlingguy/ansible-role-jenkins
  • [7]https://jenkins.io/doc/book/pipeline/jenkinsfile/
  • [8]https://wiki.jenkins.io/display/JENKINS/Ansible+Plugin
  • [9]https://jenkins.io/doc/pipeline/steps/credentials-binding/
  • [10]http://docs.ansible.com/ansible/2.5/user_guide/vault.html
  • [11]https://github.com/audreyr/cookiecutter
  • [12]https://github.com/fboender/ansible-cmdb
  • [13]https://showme.codes/2017-10-08/chatops-in-action/

責任編輯:武曉燕 來源: showme.codes
相關推薦

2018-12-10 08:10:39

2020-11-06 08:43:21

AIOps運維DevOps

2020-09-17 12:50:21

MySQL數據庫SQL

2018-06-23 07:31:05

2012-10-22 14:54:48

2014-08-04 10:10:35

IT運維自動化運維

2018-04-10 09:49:17

IT運維人員京東運維體系

2024-06-11 10:41:14

2017-10-13 13:14:35

互聯網

2022-07-29 14:39:17

Ansible運維工具

2017-03-22 16:31:30

Linux運維自動化ansible

2012-11-20 17:22:57

2015-10-08 10:55:23

云服務自動化運維 ANSIBLE

2013-04-16 14:55:21

自動化運維Puppet實戰

2018-07-26 13:50:37

IT架構運維

2014-09-22 11:24:18

運維

2020-04-30 15:00:17

運維Ansible自動化

2020-10-20 10:46:10

DevOps運維體系

2021-11-19 10:55:03

GitOps運維自動化

2017-12-03 15:48:12

點贊
收藏

51CTO技術棧公眾號

在线观看视频一区二区欧美日韩| 国产成人av片| 嘿嘿视频在线观看| 色女人在线视频| 成人网18免费网站| 91在线视频播放| 不卡中文字幕av| 欧美牲交a欧美牲交aⅴ免费下载| 国产哺乳奶水91在线播放| 精品国产一区二区三区| 午夜精品久久久| 成人3d动漫一区二区三区91| 色撸撸在线视频| 欧美momandson| av在线免费不卡| 高清欧美性猛交| 岛国精品一区二区三区| 97caopor国产在线视频| 老司机免费视频一区二区三区| 亚洲热线99精品视频| 亚洲人成无码网站久久99热国产 | 国产黄色美女视频| 亚洲永久视频| 亚洲黄色在线看| 成人性生活视频免费看| 国产高清在线| 麻豆精品久久精品色综合| 欧美激情一区二区三区在线视频观看| 成人免费播放视频| 色婷婷视频在线观看| 中文字幕乱码日本亚洲一区二区| 国产精品十八以下禁看| gv天堂gv无码男同在线观看| 澳门成人av| 午夜视频久久久久久| 黄色网zhan| 国产91视频在线| 麻豆国产欧美日韩综合精品二区| 欧美怡春院一区二区三区| 久久精品国产亚洲av久| 欧美日韩免费观看视频| 国产精品视频线看| 91亚洲国产成人久久精品网站| 小泽玛利亚一区二区免费| 免费一区二区三区在线视频| 亚洲欧美一区二区三区国产精品| 97视频中文字幕| 波多野结衣国产| 精品一区在线| 欧美日韩黄色影视| 成人免费a级片| 亚洲欧美日本在线观看| 日韩高清一区二区| 美女久久久久久久久久久| 涩视频在线观看| 无人区乱码一区二区三区| 亚洲国产va精品久久久不卡综合| 你懂的网址一区二区三区| 影音先锋国产资源| 黑丝一区二区三区| 亚洲天堂成人在线| 右手影院亚洲欧美| 亚洲精品一区av| 午夜精品久久久久久久久久| 亚洲理论电影在线观看| 黄色电影免费在线看| 国产九色精品成人porny| 78色国产精品| 日本美女黄色一级片| 波多野结衣一区二区三区免费视频| 欧美一区二区三区视频免费播放 | 日韩另类在线| 亚洲国产一二三| 亚洲人成77777| 欧美熟妇交换久久久久久分类| 久久一区中文字幕| 久99九色视频在线观看| 91网站免费入口| 欧洲激情综合| 久久久国产视频| 久久久视频6r| 全国精品免费看| 日韩亚洲电影在线| 91极品视频在线观看| 超级白嫩亚洲国产第一| 国产精品美女一区二区三区| 一本色道久久综合亚洲精品婷婷 | 国产精品久久久亚洲| 一二三区在线播放| 国产91精品一区二区麻豆亚洲| 国产精品xxxxx| 亚洲国产成人精品激情在线| 一区二区电影在线观看| 中文字幕最新精品| 男生草女生视频| 秋霞欧美视频| 欧美二区在线播放| 少妇人妻丰满做爰xxx| 精品免费在线| 久久久精品在线观看| 国产无码精品在线播放| 91精品啪在线观看国产18| 一区二区成人精品| 亚洲精品国产91| 五月天久久777| 日韩在线精品视频| 无码人妻精品一区二区中文| 国产精品传媒精东影业在线| 久久久久中文字幕| 一级黄色片在线播放| 日本欧美一区二区三区| 日本一区二区在线播放| 午夜精品三级久久久有码| 麻豆一区二区三区| 久久精品久久精品国产大片| 日本黄色三级视频| 国产精品久久久久久亚洲毛片| 亚洲精品久久久久久久蜜桃臀| 黄色精品视频| 欧美日韩黄视频| 国产精品一区二区入口九绯色| 国产主播性色av福利精品一区| 日韩免费电影一区| 亚洲女则毛耸耸bbw| 成人在线国产| 久久久久久久999| 国产精品无码久久久久成人app| 麻豆91精品视频| 久久久精彩视频| 国产第一页在线| 欧美色视频日本版| 黄色三级视频片| 欧美黄色网络| 日韩欧美国产一区二区三区| 亚洲色图欧美色| 日韩电影在线观看网站| 久久综合狠狠综合久久综青草| 色爱综合区网| 555夜色666亚洲国产免| 少妇极品熟妇人妻无码| 久久国产中文字幕| 欧美成人激情在线| 国产又粗又黄视频| 国产精品久久久久三级| 亚洲第一狼人区| 日韩欧美一区二区三区免费看| 人九九综合九九宗合| 亚洲中文字幕一区二区| 国产欧美一区二区精品性| 中文精品视频一区二区在线观看| 中文字幕中文字幕在线十八区 | 天天色棕合合合合合合合| 2023国产精品视频| 在线视频福利一区| 亚洲天堂1区| 中文字幕日韩精品在线观看| 艳妇乳肉豪妇荡乳av无码福利| 国内精品在线播放| 久久伦理网站| 亚洲天堂电影| 日韩欧美亚洲一区二区| 精品一区在线观看视频| 国产高清精品在线| 天堂精品视频| 波多野结衣视频一区二区| 亚洲精品wwwww| 国产精品男女视频| 国产剧情一区在线| 久久亚洲国产成人精品无码区| 99久热这里只有精品视频免费观看| 欧美高跟鞋交xxxxhd| 日韩在线一区二区三区四区| 亚洲国产美女搞黄色| 女人被狂躁c到高潮| 久久综合九色| 在线观看视频黄色| 欧美日韩在线精品一区二区三区激情综合| 亚洲免费成人av电影| 波多野结衣喷潮| 日韩综合一区二区| 伊人情人网综合| 一区二区三区在线免费看| 在线观看欧美视频| 国产又爽又黄又嫩又猛又粗| 亚洲最快最全在线视频| 欧美成人乱码一二三四区免费| 99精品国产九九国产精品| 欧美裸体xxxx极品少妇| 香蕉av一区二区三区| 欧美日韩在线不卡| 久久精品国产亚洲av麻豆| 日本三级亚洲精品| 亚洲色婷婷久久精品av蜜桃| 欧美爱爱视频| 欧美激情videos| 国产精品一区二区婷婷| 91精品国产色综合久久| 久久黄色精品视频| 亚洲天堂av一区| 最新中文字幕视频| 国精品**一区二区三区在线蜜桃 | 福利写真视频网站在线| 一区二区三区久久精品| 亚洲成a人片在线| 亚洲激情一二三区| 手机av在线网站| 888久久久| 久久久久久久久久码影片| 小说区图片区亚洲| 中文精品99久久国产香蕉| 亚洲欧美另类视频| 亚洲一区二区高清| 国产欧美小视频| av电影天堂一区二区在线| 一级做a免费视频| 久久久久国产精品一区二区| 欧美一进一出视频| 日本成人伦理电影| 97视频在线观看免费| 日韩精品视频无播放器在线看 | 91超碰caoporn97人人| 成人免费在线| 日韩欧美在线123| www.久久视频| 国产精品久久777777| 中文字幕一区久久| 久久久久久一区二区| av网站手机在线观看| 在线看片不卡| 伊人情人网综合| 日韩欧美自拍| 色一情一乱一伦一区二区三区 | 黄色网址在线免费看| 欧洲乱码伦视频免费| 欧美精品亚洲| 成人全视频免费观看在线看| 精品久久久91| 性开放的欧美大片| 日韩午夜在线影院| 一级欧美一级日韩| 欧美性xxxxxx少妇| 欧美成欧美va| 91蜜桃免费观看视频| www.亚洲高清| 亚洲私人影院| 福利在线一区二区| 精品不卡视频| 日韩在线第一区| 亚洲精品aⅴ| 91在线精品观看| 日韩免费一级| 成人91免费视频| 国产亚洲精品美女久久| 福利视频一区二区三区| 欧美成人精品一区二区男人小说| 97在线视频免费播放| 久草免费在线视频| 久久精品影视伊人网| 九七电影韩国女主播在线观看| 精品99一区二区三区| 最近中文字幕在线观看| 欧美亚洲动漫精品| 国产一区二区三区三州| 91精品国产综合久久福利软件 | 成人黄色免费短视频| 国产99在线|中文| 国产成人免费| 国产精品丝袜白浆摸在线| 不卡av免费观看| 97色在线视频观看| 我爱我色成人网| 国产精品亚洲视频在线观看| 自拍偷拍欧美日韩| 国产66精品久久久久999小说| 任你躁在线精品免费| 天堂精品一区二区三区| 中文字幕日韩欧美精品高清在线| 国产女主播自拍| 玖玖视频精品| 在线免费黄色小视频| 26uuu色噜噜精品一区二区| 亚洲色图 激情小说| 一区二区三区欧美久久| 国产微拍精品一区| 欧美男同性恋视频网站| 日韩欧美国产另类| 91麻豆精品国产91久久久久| 亚洲精品国产精品国| 亚洲乱码国产乱码精品精天堂| 在线观看完整版免费| 亚洲色图35p| a级毛片免费观看在线| 51久久精品夜色国产麻豆| 欧洲美女精品免费观看视频| 产国精品偷在线| 日本精品黄色| 黄色成人在线看| 日本vs亚洲vs韩国一区三区 | 97超碰青青草| 日韩午夜一区| 日本手机在线视频| 免费欧美日韩国产三级电影| 久久久久免费精品| 国产精品香蕉一区二区三区| 偷拍女澡堂一区二区三区| 亚洲人123区| 奴色虐av一区二区三区| 精品日韩成人av| 国产小视频一区| 日日摸夜夜添一区| 在线观看网站免费入口在线观看国内| 成人在线一区二区| 精品视频免费| 国产深夜男女无套内射| 99国产精品视频免费观看一公开| 黄色手机在线视频| 91香蕉视频污| 久久久久97国产| 欧美日韩激情视频| 日本三级中文字幕| 欧美特黄级在线| 国产福利免费视频| 日韩中文字幕精品视频| 久久99精品久久久久久野外| 人妖精品videosex性欧美| 激情av综合| 蜜桃日韩视频| 亚洲欧洲一区| 欧美激情精品久久久久久小说| 老司机免费视频久久| xxxwww国产| 久久久精品一品道一区| www.com.av| 欧美在线观看视频一区二区三区| 亚洲av成人精品毛片| 久久久久久免费精品| 欧美影院精品| 91精品国产吴梦梦| 国产精品一国产精品k频道56| 天天碰免费视频 | 亚洲精品久久一区二区三区777 | 中文字幕国产精品| 亚洲va中文在线播放免费| 明星裸体视频一区二区| 欧美一级一区| 久久国产柳州莫菁门| 亚洲视频你懂的| 亚洲天堂777| 久久九九国产精品怡红院| 疯狂欧洲av久久成人av电影 | 日本高清久久久| 国产精品嫩草影院com| 91 中文字幕| 不卡av电影在线观看| 亚洲精品观看| 男女私大尺度视频| 91社区在线播放| 波多野结衣电车痴汉| 最近2019年好看中文字幕视频| 黄色精品视频网站| 香蕉视频免费版| 成人毛片视频在线观看| x88av在线| 欧美三级日本三级少妇99| 欧美极品另类| 日韩av手机在线看| 精品国产乱码久久久久久果冻传媒 | 老妇女50岁三级| 亚洲二区在线播放视频| 伊人免费在线| 91精品国产91久久久久青草| 激情综合网址| 粉嫩av蜜桃av蜜臀av| 欧美日韩二区三区| 羞羞网站在线看| 久中文字幕一区| 看片网站欧美日韩| 久久久久无码精品国产| 亚洲欧美日韩国产中文| 曰本一区二区| 亚洲熟妇无码另类久久久| 国产婷婷色一区二区三区| 91国产丝袜播放在线| 国产香蕉一区二区三区在线视频 | 一级黄色大片免费看| 日韩欧美一区视频| 欧美黑人激情| 国产日韩欧美综合精品| 欧美日本中文| 亚洲黄色片免费看| 精品久久久久久久久久久| 性生活视频软件| 日韩免费在线看| 欧美日韩午夜| 美国一级黄色录像| 亚洲国产成人爱av在线播放| a成人v在线| 久在线观看视频| 2欧美一区二区三区在线观看视频| 中文字幕一区二区久久人妻|