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
Ansibleで3台のビルドサーバーを3分で構築した話 / Set up build serv...
Search
oohira
December 20, 2016
Programming
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ansibleで3台のビルドサーバーを3分で構築した話 / Set up build servers in 3 min by Ansible
oohira
December 20, 2016
More Decks by oohira
See All by oohira
git switch & git restore
oohira
0
140
私のエンジニア人生に影響を与えた技術書 / tech books that influenced my engineer life
oohira
1
310
コードレビューを通す技術 / technique to pass code review
oohira
1
140
Progressive OSS Contribution
oohira
1
180
Why Mob Programming?
oohira
3
2.5k
朝の15分読書会ふりかえり / 15min-reading-retrospective
oohira
0
180
朝の15分読書会のススメ
oohira
0
490
知っておくと便利なcurl
oohira
0
280
git-svnで始めるボッチのためのGit
oohira
0
5k
Other Decks in Programming
See All in Programming
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.2k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
260
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
290
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
5.6k
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
450
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
280
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
200
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
310
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
200
Featured
See All Featured
Mind Mapping
helmedeiros
1
390
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
A better future with KSS
kneath
240
18k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
WCS-LA-2024
lcolladotor
0
840
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Chasing Engaging Ingredients in Design
codingconduct
0
340
Transcript
Ansibleで 3台のビルドサーバーを 3分で構築した話 第8回ビアバッシュLT in なにわ弐 2016/12/20 oohira
きっかけ
3台がかりでもビルド間に合わん master slave 1 slave 2 slave 3
このままでは(私の立場が) まずい…
_人人人人人人_ > 金の弾丸 <  ̄Y^Y^Y^Y^Y ̄
検証機用の余剰VM 3台をさらに投入する
3台も設定するの面倒だな… そのうちまた増えるんでしょ…
None
・サーバー構築を自動化するツール (構成管理ツールというジャンル) ・エージェントレスで対象サーバーに SSH接続して諸々の設定を反映する Ansibleとは master master master SSH
最小構成
管理対象のホストを定義したINIファイル $ cat hosts [build] 192.168.74.140 192.168.74.141 192.168.74.142 inventory
実行する手順をまとめたYAMLファイル $ cat playbook.yml - hosts: build user: root tasks:
- name: test connection ping: playbook
実行 $ ansible-playbook -i hosts playbook.yml PLAY *************************************************************************** TASK [setup]
******************************************************************* ok: [192.168.74.140] ok: [192.168.74.141] ok: [192.168.74.142] TASK [test connection] ********************************************************* ok: [192.168.74.140] ok: [192.168.74.141] ok: [192.168.74.142] PLAY RECAP ********************************************************************* 192.168.74.140 : ok=2 changed=0 unreachable=0 failed=0 192.168.74.141 : ok=2 changed=0 unreachable=0 failed=0 192.168.74.142 : ok=2 changed=0 unreachable=0 failed=0
モジュール
tasks: - name: Copy motd to remote copy: src: ./files/motd
dest: /etc/motd copy
tasks: - name: Install Git yum: name: git state: present
- name: Add symbolic link for Git file: src: /usr/bin/git dest: /usr/local/bin/git state: link force: yes yum, file
tasks: - name: Add rsadmin user user: name: rsadmin uid:
5004 password: "{{'hoge'|password_hash('sha512')}}" state: present user
tasks: - name: Install Oracle JDK unarchive: src: ./file/jdk-8u45-linux-x64.tar.gz dest:
/usr/java creates: /usr/java/jdk1.8.0_45 - name: Update alternative JDK alternatives: name: java link: /usr/bin/java path: /usr/java/jdk1.8.0_45/bin/java unarchive, alternative
つづきはWebで http://docs.ansible.com/ansible/list_of_all_modules.html
冪等性 (べきとうせい)
ある操作を1回実行しても 複数回実行しても同じ結果に なることを表す数学概念 ↓ 構成管理ツールを何回実行しても 同じサーバー状態に収束すること
$ cat playbook.yml - hosts: build user: root tasks: -
name: Install Git yum: name: git state: present yumの場合
実行1回目 $ ansible-playbook -i hosts playbook.yml PLAY *************************************************************************** TASK [setup]
******************************************************************* ok: [192.168.74.140] ok: [192.168.74.141] ok: [192.168.74.142] TASK [Install Git] ************************************************************* changed: [192.168.74.140] changed: [192.168.74.141] changed: [192.168.74.142] PLAY RECAP ********************************************************************* 192.168.74.140 : ok=2 changed=1 unreachable=0 failed=0 192.168.74.140 : ok=2 changed=1 unreachable=0 failed=0 192.168.74.140 : ok=2 changed=1 unreachable=0 failed=0
実行2回目 $ ansible-playbook -i hosts playbook.yml PLAY *************************************************************************** TASK [setup]
******************************************************************* ok: [192.168.74.140] ok: [192.168.74.141] ok: [192.168.74.142] TASK [Install Git] ************************************************************* ok: [192.168.74.140] ok: [192.168.74.141] ok: [192.168.74.142] PLAY RECAP ********************************************************************* 192.168.74.140 : ok=2 changed=0 unreachable=0 failed=0 192.168.74.140 : ok=2 changed=0 unreachable=0 failed=0 192.168.74.140 : ok=2 changed=0 unreachable=0 failed=0
Ansibleのメリット
・Excel手順書さようなら ・手動コストほぼゼロ ・人為的なミスほぼゼロ 1. 自動化
・途中で失敗しても何度でも実行 できる ・最終的にはあるべき状態に収束 している安心感 2. 冪等性
・インフラレベルも設定や手順、 変更履歴を見える化 ・インフラチームへの不必要な 設定確認の手間が減る ・開発とインフラが同じコードで 相互レビューして改善しやすい 3. Infrastructure as Code
話していないこと
・繰り返しや条件付き実行などのより 複雑な手順 ・playbookを分割管理するための ベストプラクティス ・秘密鍵など機密情報の管理方法 ・類似ツール(Chefとか)との比較 ・コンテナ技術との使い分け
まとめ
よさげ!
告知
Advent Calendarも大詰め!
おわり