Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
職人任せにしないインフラ構築/運用 ~ DevOps時代を生きぬくために ~
Search
株式会社ヌーラボ
PRO
February 05, 2014
Technology
15k
33
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
職人任せにしないインフラ構築/運用 ~ DevOps時代を生きぬくために ~
http://nucon.nulab.co.jp/timetable/#track8
株式会社ヌーラボ
PRO
February 05, 2014
More Decks by 株式会社ヌーラボ
See All by 株式会社ヌーラボ
配布資料_ヌーラボの情シスがおすすめする_問い合わせ対応を削減するBacklog活用術.pdf
nulabinc
PRO
0
41
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
1.6k
Getting Started with Bits Agent Builder: Real-World Use Cases
nulabinc
PRO
0
71
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
360
進化するBits AI SREと私と組織
nulabinc
PRO
4
1k
実践 Datadog MCP Server
nulabinc
PRO
4
910
全社横断PjM⽀援チーム “PEaS”の取り組みと プロジェクトマネジメント でのAI活⽤について
nulabinc
PRO
0
220
Datadog の RBAC のすべて
nulabinc
PRO
4
900
Datadog Live Tokyo 2025登壇資料
nulabinc
PRO
0
210
Other Decks in Technology
See All in Technology
AI・HPC開発を支えるGPU環境の新しい選択肢 液冷GPUシステム「AquSys」の取り組み
gpuunite_official
0
240
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
0
280
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
460
紙 to デジタル
ichien178
0
130
Claude Teamプランの コスト最適化を考える
rfdnxbro
0
690
Rust×eBPFでEDRっぽいものをつくる
sunlife3
2
970
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
4
1.3k
Oracle MCP Servers Explained
thatjeffsmith
1
510
英語が話せなくてもKubeConスタッフに参加した話
yusuke427
2
1.1k
AI時代のデータ基盤を考える問い
pacocat
0
670
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
330
ブラウザで変わるID連携(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
260
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
260
Raft: Consensus for Rubyists
vanstee
141
7.6k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Optimizing for Happiness
mojombo
378
71k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Being A Developer After 40
akosma
91
590k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
440
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Transcript
/6$0/5PNPOBSJ/",".63" ৬ਓͤʹ͠ͳ͍Πϯϑϥߏஙӡ༻ d%FW0QT࣌Λੜ͖͵ͨ͘Ίʹd IUUQXXXqJDLSDPNQIPUPTTUBUVFMJCSUZOQT
ࣗݾհ wதଜ !JLJLLP wຊ+FOLJOTϢʔβձ ! wҰ൪͖ͳυϥΫΤɿυϥΫΤ wϑϩʔϥΑΓϏΞϯΧ
JOψʔϥϘ ! wΞϓϦدΓͷ։ൃऀ wΠϯϑϥํ໘ؔΘΓग़͢ ! w+FOLJOTϏϧυڥͷඋ
ΞδΣϯμ wഎܠ wΠϯϑϥߏஙӡ༻࣌ͷํ wΠϯϑϥͷߏཁૉ w·ͱΊ
ψʔϥϘͷྺ࢙
ͪΐͬͱલ·ͰͷΠϯϑϥମ੍ IUUQXXXqJDLSDPNQIPUPTTUVBSU@TQJWBDL
ͪΐͬͱલ·ͰͷΠϯϑϥମ੍
wΠϯϑϥ୲গਓ wπʔϧϓϥοτϑΥʔϜͷෆ ͪΐͬͱલ·ͰͷΠϯϑϥମ੍ ϊϋ͕ڞ༗͞Εͯͳ͔ͬͨ
IUUQXXXqJDLSDPNQIPUPT[BONBO ࠓͷΠϯϑϥମ੍
ࠓͷΠϯϑϥମ੍
wΞϓϦ։ൃऀΠϯϑϥʹλον wࠓ·ͰͷΠϯϑϥ୲ɺશମվળ ۓٸ࣌ͷোରԠ wπʔϧ܈͕ঃʑʹॆ࣮ ࠓͷΠϯϑϥମ੍ ϊϋΛڞ༗Ͱ͖ΔΑ͏ʹ
υϥΫΤͰྫ͑Δͱ
ύʔςΟʔߏ
ͪΐͬͱલ·ͰͷΠϯϑϥମ੍
εΩϧస
ࠓͷΠϯϑϥମ੍
IUUQXXXqJDLSDPNQIPUPT!/ ϗΠϛΛ͑Δਓ͕૿͑Δͱ ݥ͕ਐΊ͘͢ͳΓ·͢
ΞϓϦΠϯϑϥํ͔Β ʹରॲ͘͢͠ͳΓ·͢ IUUQXXXqJDLSDPNQIPUPTNIYCIE
wഎܠ wΠϯϑϥߏஙӡ༻࣌ͷํ wΠϯϑϥͷߏཁૉ w·ͱΊ ΞδΣϯμ
ϊϋΛڞ༗͘͢͠ IUUQXXXqJDLSDPNQIPUPTBMMIBOETWPMVOUFFST
wಈ༷͘ॻ͕ཧత w࡞ۀखॱΛ͓ͯ͘͠ w͑Δ໘ͰπʔϧΛੵۃతʹ ϊϋΛڞ༗͘͢͠
ߏஙӡ༻࡞ۀΛݮΒ͢ IUUQXXXqJDLSDPNQIPUPT!/
w1BT4Λ׆༻ w"84ͳΒ3%4&MBTUJ$BDIFͳͲ wඅ༻ॊೈੑʹ͚ܽΔ߹ ߏஙӡ༻࡞ۀΛݮΒ͢
wഎܠ wΠϯϑϥߏஙӡ༻࣌ͷํ wΠϯϑϥͷߏཁૉ w·ͱΊ ΞδΣϯμ
Πϯϑϥߏங࣌
Πϯϑϥӡ༻࣌
֩ͱͳΔπʔϧ IUUQXXXqJDLSDPNQIPUPTEFYYVT
"OTJCMF w1ZUIPOͷαʔόߏཧπʔϧ wႈੑԿ࣮ߦͯ݁͠Ռಉ͡ wαʔόଆ1ZUIPOͱTTIE͚ͩ -‐ name: install requirement system packages
action: yum name={{ item }} with_items: -‐ make -‐ gcc -‐ curl
'BCSJD w1ZUIPOͷσϓϩΠπʔϧ wγΣϧίϚϯυΛྻڍ͍ͯ͘͠ɺ γϯϓϧͳهड़ @task def start_tomcat():
sudo('rm -‐f /usr/java/tomcat/temp/*.{index,data}') sudo('service tomcat start’) print green("Tomcat started!!!")
ิॿతͳπʔϧ IUUQXXXqJDLSDPNQIPUPT!/
1BDLFS wΠϝʔδ ".* ࡞πʔϧ w"OTJCMFΛىಈ࣌ ʹ࣮ߦՄೳ wఆظ࣮ߦͯ͠".* Λఆظతʹ࠷৽ʹ {
"builders": [{ "type": "amazon-‐ebs", "region": "us-‐west-‐2", "source_ami": "ami-‐ccf297fc", "instance_type": "m1.small", "ssh_username": "ec2-‐user", "ami_name": "base {{isotime}}" }], "provisioners": [ { "type": "ansible-‐local", "playbook_file": "ansible/ami.yml", "role_paths": [ "ansible/roles/base" ] } ] }
TFSWFSTQFD w34QFD෩ͷαʔ όߏཧς ετπʔϧ wՔಇதͷαʔ όʹ͔͚ͯɺ ઃఆΛςετ describe "#{ENV['TARGET_HOST']}.spec" do
! describe service('tomcat') do it { should be_running } it { should_not be_enabled } end ! describe port(8080) do it { should be_listening } end ! ...
5ZQFUBML w+FOLJOT"OTJCMFͷ࣮ߦ݁ՌΛ௨ ! ! ! w+FOLJOT1MVHJOɿࡢϕʔλϦϦʔεʂ w"OTJCMF.PEVMFɿ1VMM3FRVFTUத
IUUQXXXqJDLSDPNQIPUPT!/
ଓઌϗετͷཧΛ౷Ұ $ tree . ├── ansible │
└── ansible.cfg ├── fabfile │ └── __init__.py ├── serverspec │ └── spec │ └── spec_helper.rb └── ssh.config RSpec.configure do |c| options = Net::SSH::Config.for(c.host, files=[‘../ssh.config']) ... env.use_ssh_config = True env.ssh_config_path = 'ssh.config' [ssh_connection] ssh_args = -‐F ../ssh.config wTTIDPOpHಉҰͷͷΛྲྀ༻
ӡ༻࣌ͷ*'ΛҰݩԽ @task def hosts_update(): """
શϗετͷ /etc/hosts Λߋ৽͢Δ """ with lcd('ansible'): local("ansible-‐playbook -‐i all.yml -‐-‐tags=hosts_setup") -‐ name: copy hosts file copy: src=etc/hosts dest=/etc/hosts tags: hosts_setup wӡ༻खॱۃྗ'BCSJDʹدͤΔ
wഎܠ wΠϯϑϥߏஙӡ༻࣌ͷํ wΠϯϑϥͷߏཁૉ w·ͱΊ ΞδΣϯμ
·ͱΊ wΞϓϦͷਓΠϯϑϥ͔ΔΑ͏ ʹͳΔͱɺ෯͕͕ΔΑ wΠϯϑϥͷਓɺΑΓߴͳ࡞ۀ ʹྗͰ͖ΔΑ͏ʹͳΔΑ
wࣗಈϢχοτςετ wΦʔτεέʔϧ w*NNVUBCMF*OGSBTUSVDUVSF ࠓޙऔΓΈ͍ͨ͜ͱ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ