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
Ansistrano(&Ansible) への導入
Search
kashiwaguma-hiro
October 04, 2019
Programming
430
0
Share
Ansistrano(&Ansible) への導入
Ansistranoとはなにか
また、AnsistranoのベースとなるAnsibleとは何なのかを
ざっくりと紹介します
kashiwaguma-hiro
October 04, 2019
More Decks by kashiwaguma-hiro
See All by kashiwaguma-hiro
読んだ気になれる_オライリー本の攻略法
kashiwagumahiro
0
13
Terraformのざっくり入門
kashiwagumahiro
0
190
DMM.comの課金プラットフォームにおけるサーバーサイドKotlin事情
kashiwagumahiro
1
3.7k
Rundeckで 秘匿情報パラメータを セキュアに扱う
kashiwagumahiro
0
700
Other Decks in Programming
See All in Programming
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
2.6k
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
360
「話せることがない」を乗り越える 〜日常業務から登壇テーマをつくる思考法〜
shoheimitani
4
960
Explore CoroutineScope
tomoeng11
0
150
[RubyKaigi 2026] Require Hooks
palkan
1
280
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
520
サプライチェーン攻撃対策「層を重ねて落ちない壁」を10日間で組み上げた話 #TechLeadConf2026
kashewnuts
1
110
Terraform言語の静的解析 / static analysis of Terraform language
wata727
1
130
KMP × Kotlin 2.3 - How Android Got Slower While iOS Builds Improved by 47%
rio432
0
110
Symfony AI in Action - SymfonyLive Berlin 2026
chr_hertel
1
110
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
330
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
1k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
The SEO identity crisis: Don't let AI make you average
varn
0
460
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
GitHub's CSS Performance
jonrohan
1032
470k
Building the Perfect Custom Keyboard
takai
2
740
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
130
Color Theory Basics | Prateek | Gurzu
gurzu
0
300
Between Models and Reality
mayunak
3
280
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
How to build a perfect <img>
jonoalderson
1
5.5k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
490
Transcript
Ansistrano(&Ansible) への導入 柏熊 宏幸
もくじ • Ansistranoとは • Ansibleとは • Ansibleの構成要素 • Ansistranoで出来ること •
まとめ
Ansistranoとは
Ansistranoとは • アプリケーションのデプロイを簡単に実現するための デプロイツール • Capistrano をAnsibleでポーティングしたもの • Ansistrano≒Ansible Role
◦ そもそもAnsibleって?
Ansibleとは
Ansibleとは • RedHat が開発するオープンソースの構成管理ツール • 構成管理ツール=サーバ・ソフトウェアのセットアップを補助す るツール • YAML形式、エージェントレス、SSHとPythonがあれば動作可 能
Ansibleの構成要素
例:NTPを設定する
None
①このサーバにインスコするぞ
②手順を用意して〜
$ sudo yum -y install ntp $ vi /etc/ntp.conf $
sudo service ntpd start ③コマンド実行や〜
これらをAnsibleの要素に 当てはめていくと…
①ansible:手順を実行する本体
②Inventory:どのサーバを対象? ①ansible:手順を実行する本体
②Inventory:どのサーバを対象? ③Playbook:構築手順 ①ansible:手順を実行する本体
$ sudo yum -y install ntp $ vi /etc/ntp.conf $
sudo service ntpd start ②Inventory:どのサーバを対象? ③Playbook:構築手順 ④Role:実際の操作 ①ansible:手順を実行する本体
Ansistranoとは(再掲) • アプリケーションのデプロイを簡単に実現するための デプロイツール • Capistrano をAnsibleでポーティングしたもの • Ansistrano≒Ansible Role
◦ そもそもAnsibleって?
②インベントリ:どのサーバを対象? ③Playbook:構築手順 ①ansible:手順を実行する本体 ④Role:実際の操作 $ sudo yum -y install ntp
$ vi /etc/ntp.conf $ sudo service ntpd start ココ!
Ansistranoで出来ること
Ansistranoで出来ること • デプロイの実現が簡単 • モジュールの取得手段が豊富 • カスタムRoleを差し込みできる
デプロイの実現が簡単
--- - name: Deploy hosts: all # すべてのホストを対象とする serial: 1
# タスクの同時実行数を1台とする any_errors_fatal: True # 1つでもエラーが起きた時点で失敗と判断し中断する roles: - { role: ansistrano.deploy } vars: # デプロイ先と世代管理の設定 ansistrano_deploy_from: "{{ playbook_dir }}" ansistrano_deploy_to: "/opt/api/" ansistrano_keep_releases: 3 # デプロイモジュールの取得方法 ansistrano_deploy_via: download ansistrano_get_url: "{{ download_url }}" # カスタマイズタスク設定 https://github.com/ansistrano/deploy#role-variables ansistrano_before_symlink_tasks_file: "{{ playbook_dir }}/roles/api/tasks/stop.yml" ansistrano_after_symlink_tasks_file: "{{ playbook_dir }}/roles/api/tasks/start.yml" 例:AnsistranoをつかったPlaybook 数十行を書くだけ
-- /opt/api/ |-- current -> /opt/api/releases/20100509145325/bin/api.jar |-- releases | |--
20100509145325/bin/api.jar |-- shared ①デプロイ前
-- /opt/api/ |-- current -> /opt/api/releases/20100509145325/bin/api.jar |-- releases | |--
20100509145325/bin/api.jar |-- shared -- /opt/api/ |-- current -> /opt/api/releases/20100509145325/bin/api.jar |-- releases | |-- 20100509150741/bin/api.jar | |-- 20100509145325/bin/api.jar |-- shared ①デプロイ前 ②ダウンロードと配置
-- /opt/api/ |-- current -> /opt/api/releases/20100509145325/bin/api.jar |-- releases | |--
20100509145325/bin/api.jar |-- shared -- /opt/api/ |-- current -> /opt/api/releases/20100509145325/bin/api.jar |-- releases | |-- 20100509150741/bin/api.jar | |-- 20100509145325/bin/api.jar |-- shared -- /opt/api/ |-- current -> /opt/api/releases/20100509150741/bin/api.jar |-- releases | |-- 20100509150741/bin/api.jar | |-- 20100509145325/bin/api.jar |-- shared ①デプロイ前 ②ダウンロードと配置 ③シンボリックリンクを最新バージョンへ差し替え
モジュールの取得手段が豊富
--- - name: Deploy hosts: all # すべてのホストを対象とする serial: 1
# タスクの同時実行数を1台とする any_errors_fatal: True # 1つでもエラーが起きた時点で失敗と判断し中断する roles: - { role: ansistrano.deploy } vars: # デプロイ先と世代管理の設定 ansistrano_deploy_from: "{{ playbook_dir }}" ansistrano_deploy_to: "/opt/api/bin/" ansistrano_keep_releases: 3 # デプロイモジュールの取得方法 ansistrano_deploy_via: download ansistrano_get_url: "{{ download_url }}" # カスタマイズタスク設定 https://github.com/ansistrano/deploy#role-variables ansistrano_before_symlink_tasks_file: "{{ playbook_dir }}/roles/api/tasks/stop.yml" ansistrano_after_symlink_tasks_file: "{{ playbook_dir }}/roles/api/tasks/start.yml" 例:AnsistranoをつかったPlaybook(再掲) この辺
デプロイパターンが豊富 • 用意されている方法は7種類 ◦ download ◦ rsync ◦ git ◦
svn ◦ hg ◦ s3 ◦ gcs • ほぼやりたいパターンを網羅できるのでは?
カスタムRoleを差し込みできる
-- /opt/api/ |-- current -> /opt/api/releases/20100509145325/bin/api.jar |-- releases | |--
20100509145325/bin/api.jar |-- shared -- /opt/api/ |-- current -> /opt/api/releases/20100509145325/bin/api.jar |-- releases | |-- 20100509150741/bin/api.jar | |-- 20100509145325/bin/api.jar |-- shared -- /opt/api/ |-- current -> /opt/api/releases/20100509150741/bin/api.jar |-- releases | |-- 20100509150741/bin/api.jar | |-- 20100509145325/bin/api.jar |-- shared ①デプロイ前 ②ダウンロードと配置 ③シンボリックリンクを最新バージョンへ差し替え 切り替え前後で、 APIの停止・起動したいよね?
--- - name: Deploy hosts: all # すべてのホストを対象とする serial: 1
# タスクの同時実行数を1台とする any_errors_fatal: True # 1つでもエラーが起きた時点で失敗と判断し中断する roles: - { role: ansistrano.deploy } vars: # デプロイ先と世代管理の設定 ansistrano_deploy_from: "{{ playbook_dir }}" ansistrano_deploy_to: "/opt/api/bin/" ansistrano_keep_releases: 3 # デプロイモジュールの取得方法 ansistrano_deploy_via: download ansistrano_get_url: "{{ download_url }}" # カスタマイズタスク設定 https://github.com/ansistrano/deploy#role-variables ansistrano_before_symlink_tasks_file: "{{ playbook_dir }}/roles/api/tasks/stop.yml" ansistrano_after_symlink_tasks_file: "{{ playbook_dir }}/roles/api/tasks/start.yml" 例:AnsistranoをつかったPlaybook(再掲) 変数で差し込むRoleを 指定できる!
他にもこんな差し込みポイントがあります 詳細:https://github.com/ansistrano/deploy
他にも色んな機能があるので、 動かしてやってみよう! コード(github) 公式サイト(html)
まとめ • AnsistranoはAnsibleのRoleの一つ • symlinkを使ったデプロイとカスタマイズが 簡単に実現できる • Ansibleの仕組みで動作するため、Ansible知識がある程度必 要になる
おわり