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
0
420
Ansistrano(&Ansible) への導入
Ansistranoとはなにか
また、AnsistranoのベースとなるAnsibleとは何なのかを
ざっくりと紹介します
kashiwaguma-hiro
October 04, 2019
Tweet
Share
More Decks by kashiwaguma-hiro
See All by kashiwaguma-hiro
読んだ気になれる_オライリー本の攻略法
kashiwagumahiro
0
10
Terraformのざっくり入門
kashiwagumahiro
0
180
DMM.comの課金プラットフォームにおけるサーバーサイドKotlin事情
kashiwagumahiro
1
3.7k
Rundeckで 秘匿情報パラメータを セキュアに扱う
kashiwagumahiro
0
690
Other Decks in Programming
See All in Programming
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
7.9k
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
280
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
380
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
420
Codex の「自走力」を高める
yorifuji
0
1.2k
Windows on Ryzen and I
seosoft
0
250
CSC307 Lecture 15
javiergs
PRO
0
240
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
550
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
390
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
130
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
130
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
130
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
250
Music & Morning Musume
bryan
47
7.1k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
82
It's Worth the Effort
3n
188
29k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
220
Done Done
chrislema
186
16k
A Modern Web Designer's Workflow
chriscoyier
698
190k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
260
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
Designing Powerful Visuals for Engaging Learning
tmiket
0
270
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
150
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
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知識がある程度必 要になる
おわり