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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
株式会社ヌーラボ
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
39
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
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
330
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
260
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
85k
Kiro入門|仕様駆動開発で変わるAI時代の開発スタイル
cmkudo
0
380
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
0
270
AI駆動開発を組織で促すために
lycorptech_jp
PRO
1
400
「面白い!」を信じ抜け。激動の時代を貫く、オンリーワン・エンジニアの条件
kizawa2020
0
240
巨大気象データと戦う ― サロゲートモデル学習を高速化する圧縮技術
gpuunite_official
0
270
OpenID for Verifiable Credentials 実装から見えた相互運用性確保までの道のり(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
270
8bit CPU 2026
koba789
7
2.9k
紙 to デジタル
ichien178
0
130
ハッカソンで入賞した話 @ Findy LT
asari194617
0
1.5k
Featured
See All Featured
Code Review Best Practice
trishagee
74
20k
The Cost Of JavaScript in 2023
addyosmani
55
10k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
300
Odyssey Design
rkendrick25
PRO
2
780
Chasing Engaging Ingredients in Design
codingconduct
0
280
Making the Leap to Tech Lead
cromwellryan
135
10k
The agentic SEO stack - context over prompts
schlessera
0
880
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
480
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 ࠓޙऔΓΈ͍ͨ͜ͱ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ