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
65
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
2.3k
Getting Started with Bits Agent Builder: Real-World Use Cases
nulabinc
PRO
0
76
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
370
進化するBits AI SREと私と組織
nulabinc
PRO
4
1.1k
実践 Datadog MCP Server
nulabinc
PRO
4
920
全社横断PjM⽀援チーム “PEaS”の取り組みと プロジェクトマネジメント でのAI活⽤について
nulabinc
PRO
0
230
Datadog の RBAC のすべて
nulabinc
PRO
4
930
Datadog Live Tokyo 2025登壇資料
nulabinc
PRO
0
220
Other Decks in Technology
See All in Technology
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
110
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
0
1k
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
260
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
430
推論の観測、できていますか? 〜 Google Cloud Gemini Enterprise Agent Platformで 3つの Gemini モデルを実測して踏んだ、評価の罠 〜
shukob
PRO
0
150
データエンジニアの困りごとをDevinと一緒に解消する
10xinc
2
830
Webとヘルスデータ
yukukotani
0
190
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
120
V8コントリビュート超入門
riyaamemiya
0
140
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
2
2.5k
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
120
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
350
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
How to Ace a Technical Interview
jacobian
281
24k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
250
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Believing is Seeing
oripsolob
1
210
Building a Scalable Design System with Sketch
lauravandoore
463
34k
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 ࠓޙऔΓΈ͍ͨ͜ͱ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ