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
Ansibleで3台のビルドサーバーを3分で構築した話 / Set up build serv...
Search
oohira
December 20, 2016
Programming
240
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
130
私のエンジニア人生に影響を与えた技術書 / tech books that influenced my engineer life
oohira
1
300
コードレビューを通す技術 / technique to pass code review
oohira
1
130
Progressive OSS Contribution
oohira
1
170
Why Mob Programming?
oohira
3
2.4k
朝の15分読書会ふりかえり / 15min-reading-retrospective
oohira
0
180
朝の15分読書会のススメ
oohira
0
480
知っておくと便利なcurl
oohira
0
270
git-svnで始めるボッチのためのGit
oohira
0
4.9k
Other Decks in Programming
See All in Programming
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
310
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
410
OSもどきOS
arkw
0
590
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.1k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
8.4k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
280
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
200
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
210
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
270
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
850
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
107
250k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Ethics towards AI in product and experience design
skipperchong
2
320
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
How to make the Groovebox
asonas
2
2.2k
GraphQLとの向き合い方2022年版
quramy
50
15k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
The Cult of Friendly URLs
andyhume
79
6.9k
Building AI with AI
inesmontani
PRO
1
1.1k
Why Our Code Smells
bkeepers
PRO
340
58k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
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も大詰め!
おわり