Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
infra-auto-2014-10-07
Search
rrreeeyyy
October 07, 2014
Technology
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
infra-auto-2014-10-07
ITインフラ 業務自動化現状確認会
rrreeeyyy
October 07, 2014
More Decks by rrreeeyyy
See All by rrreeeyyy
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
6
1.3k
Reliability in the Age of AI: Engineering for AI Velocity
rrreeeyyy
0
240
Rethinking Incident Response: Context-Aware AI in Practice - Incident Buddy Edition -
rrreeeyyy
0
290
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
3
2.7k
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
360
An Efficient Incident Response Training with AI / SRE NEXT 2024 Sponsor Session
rrreeeyyy
1
6.4k
カンファレンスから見る SRE トレンド 2024 / SRE Trends from Conferences in 2024 #SRE_Findy
rrreeeyyy
4
2.7k
信頼性の育て方 / mackerel-meetup-15
rrreeeyyy
10
3.1k
SRE の歩き方・進め方 / sre-walk-through-procedure
rrreeeyyy
0
9.1k
Other Decks in Technology
See All in Technology
200人の配信コメント、 全部Jevが仕分けます 〜 マサカリガードを作ってみた 〜
katayamatg
1
440
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
560
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
590
Claude Codeから見る、エンジニアの世界の変容とその先
oikon48
7
4.8k
ビジネス部門からPOを迎えての半年間の進歩と課題
zozotech
PRO
0
170
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
4
1.9k
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
260
2026-10-24 JAWS JAWS-UG 茨城 #18 IAM Policy Autopilotってなにさ。terraform planからIAM Policyつくれるの? / What's IAM Policy Autopilot
masasuzu
0
180
"AWSはちょっと苦手"でも大丈夫。AWS Blocks で手軽に作る Flutter のバックエンド #FlutterKaigi
tacck
PRO
0
110
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
Vue で書く 空間コンピューティング、TresJS と WebXR を使ったXR デバイスのフロントエンド開発
hiranuma
0
130
How we choose session proposals
kawaguti
PRO
1
190
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
Marketing to machines
jonoalderson
1
5.9k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
560
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Google's AI Overviews - The New Search
badams
0
1.6k
HDC tutorial
michielstock
2
980
Building an army of robots
kneath
307
47k
How to Talk to Developers About Accessibility
jct
2
600
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
660
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
800
Accessibility Awareness
sabderemane
1
270
Transcript
Itamae ͬͯΈͨ YOSHIKAWA Ryota (@rrreeeyyy) 1 ը૾ͷ͓ण࢘৽॓۠ͷ "Ეؙ" ͱ͍͏͓ళͷͰ͢ɻඒຯ͔ͬͨ͠ !
ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 1
ࣗݾհ 4 ٢ ཽଠ (Twitter: @rrreeeyyy → ) 4 ϋʔτϏʔπ(ձ)ͱ͍͏ձࣾͷ৽ଔͰ͢
4 ͱݴ͍ͭͭۈଓ 4 ͙Β͍ʹͳΓ·͢2 4 ۀͷ @koemu ͞Μͱಉ͡෦ॺͰࣗಈԽΞϨίϨ 4 ͏ MSP ͷۀͰαʔόͷࢹɾཧ 2 ֶੜελοϑͱͯ͠ೖࣾͨ͠ͷ͕ 18 ࡀ (େֶ 1 ੜͷ 10 ݄) ͙Β͍Ͱɺࠓֶ෦Λଔۀ͠·ͨ͠ɻ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 2
OSC 2014 Tokyo Fall ͰΓ·͢ 3 3 ಥવͷએେมࣦྱக͠·ͨ͠ɻΑΖ͓͘͠ئ͍͠·͢ɻۓுͯ͠·͢ɻ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ
(2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 3
͓அΓͱँࡑ ITΠϯϑϥ "ۀ"ࣗಈԽݱঢ়֬ೝձͳͷʹ ۀͰ͍ͬͯΔπʔϧͷΛ͠·ͤΜ 4 ۀͷ @koemu ઌੜʹ͓ͤ͠·ͨ͠(దͰ͢ɻ͢Έ·ͤΜɻ) ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ
(2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 4
Provisioning Tools ͷ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy)
5
Provisioning Tools ݴ͑Δ͔ͳ 4 Chef 4 Ansible 4 Salticid 4
Puppet 4 SaltStack 4 : ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 6
Popular Chef Ansible ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy)
7
I like... Ansible ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy)
8
Why Ansible? - ΤʔδΣϯτϨεʂ - γϯϓϧʂ - ύϫϑϧʂ 5 ύϫϑϧ͋Μ·Γײͨ͜͡ͱແ͍Ͱ͕͢γϯϓϧͰΤʔδΣϯτϨεͳ࡞Γ͖Ͱ͢
ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 9
and Testing tool is... ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota
(@rrreeeyyy) 10
6 Yes, I like. (͓आΓͯ͠·͢ http://serverspec.org/images/logo.png ) ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07)
- YOSHIKAWA Ryota (@rrreeeyyy) 11
Կ͕ى͜Δ͔ 4 Provisioning Tool 4 Ansible (Python) 4 Testing Tool
4 Serverspec (Ruby) ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 12
! 99 ݴޠ͕౷Ұ͞Ε͓ͯΒͣɺvirtualenv, bundler ͷπʔϧΛ֮͑ͨΓ ansible ίϚϯυ bundle exec rake
spec ͷίϚϯυΛ͍֮͑ͯΔ࣌ͷإ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 13
Itamae 7 ը૾ http://bokete.jp/odai/340329 ͔Β͓आΓ͓ͯ͠Γ·͕͢ ͋Γ·ͨ͠Β͝࿈བྷԼ͍͞ɻ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) -
YOSHIKAWA Ryota (@rrreeeyyy) 14
Itamae 4 https://github.com/ryotarai/itamae (@ryot_a_rai) 4 https://speakerdeck.com/ryotarai/itamae-infra-as- code-xian-zhuang-que-ren-hui 4 Infrataster ࡞ͬͯΒͬ͠ΌΔํ
4 ઌिͷ Infra as Code ݱঢ়֬ೝձͰϓϨθϯ͞Εͨ (ׂͱલ͔Β͋ͬͨͷͰউखʹͬͯͨ) ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 15
Կ͕͍͍ͷ 4 ΤʔδΣϯτϨε 4 γϯϓϧ 4 Ruby DSL (not YAML!)
like a Chef 8 4 specinfra(serverspec ͷ core)ͷ্Ͱཱ 4 Ϩγϐ͕ gem ͰཧͰ͖Δ (Berkshelf ཁΒͣ) 8 Not compatible. ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 16
Կ͕͍͍ͷ 4 ႈ 4 --dry-run 4 node attributes json
Ͱཧ 9 4 : 9 yaml Ͱཧ͍ͨ͠ؾ࣋ͪ͋Δ(ग़དྷΔͷ͔ͳʁ) ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 17
ී௨ͷྫ package 'httpd' do action :install end template '/etc/httpd/httpd.conf' do
source 'httpd.conf.erb' variables(maxclients: 256) end itamae execute -j node.json -h 192.168.0.1 -p 22 -u yoshikawa -i ~/.ssh/id_rsa recipe.rb ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 18
࣮ߦྫ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 19
خ͍͠ࣄ 4 Ruby DSL ͕ॻ͖͍͢10 4 ςετͱϓϩϏδϣχϯάͰݴޠ͕ἧ͏ 4 ྫ͑ Rake
λεΫͰ ɹϓϩϏδϣχϯάˠςετ͕Ұؾʹग़དྷΔ 10 ݸਓͷײͰ͢ɻͨ·ͨ· Ruby ͕͖ͳͷͰɻ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 20
࣮ࡍͷྫ(Properties) ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 21
{ "db-01": { "roles": ["common", "db"], "private_key": "~/.ssh/yoshikawa-test_rsa", "ssh_port": 22,
"server_id": 1 }, "web-01": { "roles": ["web", "common"], "domain": "rrreeeyyy.com" } } ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 22
࣮ࡍͷྫ(Rakefile) ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 23
require 'rake' require 'json' require 'rspec/core/rake_task' properties_file = 'properties.json' properties
= JSON.parse(File.read(properties_file)) properties.keys.each do |key| desc "Run provision to #{key}" namespace :itamae do desc "Run itamae to #{key}" task key.split('.')[0] do command = "bundle exec itamae ssh" command << " -h #{key}" command << " -i #{properties[key]['private_key']}" command << " -p #{properties[key]['ssh_port']}" command << " -j #{properties_file}" properties[key]['roles'].each {|role| command << " provision/#{role}/#{role}.rb"} puts command system command end end namespace :serverspec do desc "Run serverspec to #{key}" RSpec::Core::RakeTask.new(key.split('.')[0].to_sym) do |t| ENV['TARGET_HOST'] = key t.pattern = 'spec/{' + properties[key]['roles'].join(',') + '}/*_spec.rb' end end end 11 https://gist.github.com/rrreeeyyy/84efc2907814c56a2b4a ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 24
ݺͼग़͠ํ bundle exec rake itamae:db-01 ࣍ͷΑ͏ʹ͢ΔͱҰؾʹͰ͖Δ bundle exec rake itamae:db-01
serverspec:db-01 ※ ͪΖΜ Rakefile ͰҰؾʹΔλεΫΛఆٛͯ͠Α͍ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 25
࣮ࡍͷྫ(Directoryߏ) ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 26
# ls Gemfile Rakefile provision vendor Gemfile.lock properties.json spec #
cd provision && tree ├── common │ ├── common.rb │ ├── recipes │ │ ├── dstat.rb │ │ └── ntp.rb │ └── templates │ └── ntp.conf.erb ├── db │ ├── db.rb │ ├── recipes │ │ └── mysql.rb │ └── templates │ └── my.cnf.erb : ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 27
# db/db.rb include_recipe "recipes/mysql.rb" include_recipe "..." : # db/recipes/mysql.rb package
'mysql' do action :install end template '/etc/my.cnf' do action :create source '../templates/my.cnf.erb' variables(host: ENV['TARGET_HOST'], server_id: node[ENV['TARGET_HOST']]['server_id']) end ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 28
͕࣌ؒ͋ΕσϞ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 29
·ͱΊ 4 Itamae ͬͯΈͯͨ 4 RubyDSLɾAgentlessɾSimpleɾlight... Ͱྑ͍πʔϧ 4 Itamae ͱ
Serverspec ΛҰؾʹ࣮ߦ͢ΔΓํ 4 Itamae ͷσΟϨΫτϦߏྫΛհ ITΠϯϑϥ ۀࣗಈԽݱঢ়֬ೝձ (2014/10/07) - YOSHIKAWA Ryota (@rrreeeyyy) 30