Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
古早味、新感受:改造老
牌企業進入自動化時代
-- We can do it.
scott.liao @ Mr. 沙先生
<shazi7804@gmail.com>
104 資訊科技 工程副理
DevOps, AWS and more …
• Blog: Mr. 沙先生
• Gitbook: Puppet 從入門就放棄
• Github: @shazi7804
• iT 鐵人賽第九屆:
Ops 的轉職之路 ...
Puppet x 104
What’s Puppet
組態 x IaC x 自動化
vs. vs.
Why Puppet
容易被測試
模組多到暴
完整的信任機制
隨便狗一下都有
Github 也在用阿
AWS 都支援了你說呢
技術長說的*
於是 104 開始了一場
DevOps 革命
How To ….
想離職了
幹嘛要 DevOps
Who care
Who cares
嗯,要加 s
問題
決策者
執行者技術能力
問題
決策者
執行者技術能力
技術長說的*
問題
決策者
執行者技術能力
技術長說的*
覺得有幫助
問題
決策者
執行者技術能力
技術長說的*
覺得有幫助教育訓練
簡單、有感 大範圍擴張 更完整的佈署
1 2 3
PLANNING
簡單、有感 大範圍擴張 更完整的佈署
1 2 3
PLANNING
• Users, Groups
• SNMP
• Hostname
• Motd
• Profile
• NTP
• Backup
簡單、有感 大範圍擴張 更完整的佈署
1 2 3
PLANNING
• Users, Groups
• SNMP
• Hostname
• Motd
• Profile
• NTP
• Backup
• Apache / Tomcat / Ja...
簡單、有感 大範圍擴張 更完整的佈署
1 2 3
PLANNING
• Users, Groups
• SNMP
• Hostname
• Motd
• Profile
• NTP
• Backup
• Apache / Tomcat / Ja...
Manifest
node ^www.104.com.tw$ {
# manage basic configuration
package { 'ntp': ensure => present }
# manage users and grou...
Coding
Module
• 程式碼重複利用
• 引用簡單
class basic {
package { 'ntp': ensure => present }
}
class users {
group { 'devopsdays': en...
Coding
Role and Profile
• 複雜的環境
• 皆以模組為基底
class role::web {
include profile::basic
include profile::users
include profile:...
基於 CronJob 的分散式概念
Sync of puppet
runinterval (default)
Sync of puppet
fqdn_rand
# When reboot after sync puppet
@reboot /opt/puppetlabs/bin/puppet agent –t
# Generates random ti...
沒有 CI / CD 怎麼叫 IaC
IaC with Puppet
CI / CD
• 版本控管
• 自動化測試
• 自動化佈署
• 透過 hiera 管理環境參數
• 模組化管理
|-- Gemfile
|-- Puppetfile
|-- Rakefile
|-- autos...
IaC with Puppet
Module manage
• Framework
• r10k
• librarian-puppet
• Module provider
• Puppetlabs
• voxpupuli (Github)
• ...
IaC with Puppet
Test Framework
• rspec-puppet (unit test)
• puppet-lint (coding style)
• puppetlabs_spec_helper (module te...
什麼軟體盤點?
就用 facter 就好啦!
Facter and Dashboard
Node PuppetDB Dashboard
• Dashboard
• Puppet Enterprise
• Puppetboard
• Grafana with prometheus_repor...
Puppet in 104 Corp
727
Populatio
n
118401
Resource
1Y7M
Time
10
Module
We can do it.
Thank You
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
Prochain SlideShare
Chargement dans…5
×

DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代

21 年的老牌企業 + 全手動維運 + 千台機器
一段歷經一年多的辛酸歷程,將擁有千斤重技術債的系統改造成全自動化的架構,用 Puppet 解決多語言環境自動佈署,

  • Identifiez-vous pour voir les commentaires

DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代

  1. 1. 古早味、新感受:改造老 牌企業進入自動化時代 -- We can do it. scott.liao @ Mr. 沙先生 <shazi7804@gmail.com>
  2. 2. 104 資訊科技 工程副理 DevOps, AWS and more … • Blog: Mr. 沙先生 • Gitbook: Puppet 從入門就放棄 • Github: @shazi7804 • iT 鐵人賽第九屆: Ops 的轉職之路 - Puppet 從入門就放棄
  3. 3. Puppet x 104
  4. 4. What’s Puppet
  5. 5. 組態 x IaC x 自動化
  6. 6. vs. vs.
  7. 7. Why Puppet
  8. 8. 容易被測試 模組多到暴 完整的信任機制 隨便狗一下都有 Github 也在用阿 AWS 都支援了你說呢
  9. 9. 技術長說的*
  10. 10. 於是 104 開始了一場 DevOps 革命
  11. 11. How To ….
  12. 12. 想離職了
  13. 13. 幹嘛要 DevOps
  14. 14. Who care
  15. 15. Who cares 嗯,要加 s
  16. 16. 問題 決策者 執行者技術能力
  17. 17. 問題 決策者 執行者技術能力 技術長說的*
  18. 18. 問題 決策者 執行者技術能力 技術長說的* 覺得有幫助
  19. 19. 問題 決策者 執行者技術能力 技術長說的* 覺得有幫助教育訓練
  20. 20. 簡單、有感 大範圍擴張 更完整的佈署 1 2 3 PLANNING
  21. 21. 簡單、有感 大範圍擴張 更完整的佈署 1 2 3 PLANNING • Users, Groups • SNMP • Hostname • Motd • Profile • NTP • Backup
  22. 22. 簡單、有感 大範圍擴張 更完整的佈署 1 2 3 PLANNING • Users, Groups • SNMP • Hostname • Motd • Profile • NTP • Backup • Apache / Tomcat / Java • Apache / PHP • Nginx / NodeJS • Nginx / PHP • Nginx / Python
  23. 23. 簡單、有感 大範圍擴張 更完整的佈署 1 2 3 PLANNING • Users, Groups • SNMP • Hostname • Motd • Profile • NTP • Backup • Apache / Tomcat / Java • Apache / PHP • Nginx / NodeJS • Nginx / PHP • Nginx / Python • 少數類型 • 即將被淘汰的 • All Server
  24. 24. Manifest node ^www.104.com.tw$ { # manage basic configuration package { 'ntp': ensure => present } # manage users and groups group { 'devopsdays': ensure => present } user { 'scott.liao': ensure => present, comment => ’DevOpsDays Taipei 2018 speaker', home => '/104corp/scott.liao', groups => 'devopsdays', } # manage application package { 'apache2': ensure => present } package { 'php7.0': ensure => present } } • 主要程式碼 • 相當於 Ansible 的 playbook • Puppet 自有宣告式語言 Coding
  25. 25. Coding Module • 程式碼重複利用 • 引用簡單 class basic { package { 'ntp': ensure => present } } class users { group { 'devopsdays': ensure => present } user { 'scott.liao': ensure => present, comment => 'DevOpsDays Taipei 2018 speaker', home => '/104corp/scott.liao', groups => 'devopsdays', } } class web { package { 'apache2': ensure => present } package { 'php7.0': ensure => present } }
  26. 26. Coding Role and Profile • 複雜的環境 • 皆以模組為基底 class role::web { include profile::basic include profile::users include profile::web } class profile::basic { … } class profile::users { … } class profile::web { … } node ^www.104.com.tw$ { include role::web }
  27. 27. 基於 CronJob 的分散式概念
  28. 28. Sync of puppet runinterval (default)
  29. 29. Sync of puppet fqdn_rand # When reboot after sync puppet @reboot /opt/puppetlabs/bin/puppet agent –t # Generates random time of sync puppet 2,12,22,32,42,52 * * * * sleep 12; /opt/puppetlabs/bin/puppet agent –t • Hash with fqdn • random and limit
  30. 30. 沒有 CI / CD 怎麼叫 IaC
  31. 31. IaC with Puppet CI / CD • 版本控管 • 自動化測試 • 自動化佈署 • 透過 hiera 管理環境參數 • 模組化管理 |-- Gemfile |-- Puppetfile |-- Rakefile |-- autosign.conf |-- data |-- environments |-- dev |-- production |-- hiera.yaml |-- private |-- profile |-- role |-- spec # module manage # node auto sign # hiera data # manifests # hiera config # private module # profile # role # test case
  32. 32. IaC with Puppet Module manage • Framework • r10k • librarian-puppet • Module provider • Puppetlabs • voxpupuli (Github) • official
  33. 33. IaC with Puppet Test Framework • rspec-puppet (unit test) • puppet-lint (coding style) • puppetlabs_spec_helper (module testing) • beaker-rspec (acceptance test)
  34. 34. 什麼軟體盤點? 就用 facter 就好啦!
  35. 35. Facter and Dashboard Node PuppetDB Dashboard • Dashboard • Puppet Enterprise • Puppetboard • Grafana with prometheus_reporter • Custom from Puppetdb
  36. 36. Puppet in 104 Corp 727 Populatio n 118401 Resource 1Y7M Time 10 Module
  37. 37. We can do it.
  38. 38. Thank You

×