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
職人任せにしないインフラ構築/運用 ~ DevOps時代を生きぬくために ~
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
株式会社ヌーラボ
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入門
nulabinc
PRO
0
9
配布資料_ヌーラボの情シスがおすすめする_問い合わせ対応を削減するBacklog活用術.pdf
nulabinc
PRO
0
110
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
2.9k
Getting Started with Bits Agent Builder: Real-World Use Cases
nulabinc
PRO
0
81
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
420
進化するBits AI SREと私と組織
nulabinc
PRO
4
1.2k
実践 Datadog MCP Server
nulabinc
PRO
4
980
全社横断PjM⽀援チーム “PEaS”の取り組みと プロジェクトマネジメント でのAI活⽤について
nulabinc
PRO
0
250
Datadog の RBAC のすべて
nulabinc
PRO
4
980
Other Decks in Technology
See All in Technology
IR Today: Theory, Practice, and Agents
dtunkelang
0
250
AI駆動開発で仕様はどこまで書くべきか? ― 人とAIの責務境界から考える開発プロセスの実践
takahiromatsui
1
230
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
360
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
18
13k
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
210
20260915deck.gl-raster を使ってみた
rena1208
0
150
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
470
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
130
企業の現実世界をグラフで写し取る
sansantech
PRO
0
200
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
1
600
地方移住と都心キャリアの両立は「金・時間・人」のリソースをフル活用すれば実現できる!〜Snowflake女子会 vol.8
snowwmn0824
0
130
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
420
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
540
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
560
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
Into the Great Unknown - MozCon
thekraken
41
2.7k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
430
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Exploring anti-patterns in Rails
aemeredith
4
520
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
540
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 ࠓޙऔΓΈ͍ͨ͜ͱ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ