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 株式会社ヌーラボ
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
340
進化するBits AI SREと私と組織
nulabinc
PRO
4
760
実践 Datadog MCP Server
nulabinc
PRO
4
760
全社横断PjM⽀援チーム “PEaS”の取り組みと プロジェクトマネジメント でのAI活⽤について
nulabinc
PRO
0
190
Datadog の RBAC のすべて
nulabinc
PRO
4
810
Datadog Live Tokyo 2025登壇資料
nulabinc
PRO
0
170
How to Migrate Your Backlog Free Plan
nulabinc
PRO
0
250
チームワークマネジメント Bar #5
nulabinc
PRO
0
89
Geeks Who Drink Fukuoka - 202508
nulabinc
PRO
0
69
Other Decks in Technology
See All in Technology
生成 AI 実践ガイド (概略版) AIガバナンス編
asei
0
120
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
160
攻撃者視点で考えるDetection Engineering
cryptopeg
3
2k
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
1
420
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
0
210
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
280
AIのReact習熟度を測る
uhyo
2
650
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
4
2.3k
脆弱性対応、どこで線を引くか
rymiyamoto
1
420
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
140
人材育成分科会.pdf
_awache
4
300
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Scaling GitHub
holman
464
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Building the Perfect Custom Keyboard
takai
2
800
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Deep Space Network (abreviated)
tonyrice
0
210
Chasing Engaging Ingredients in Design
codingconduct
0
220
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Faster Mobile Websites
deanohume
310
31k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
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 ࠓޙऔΓΈ͍ͨ͜ͱ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ