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
380
Ansistrano(&Ansible) への導入
Ansistranoとはなにか
また、AnsistranoのベースとなるAnsibleとは何なのかを
ざっくりと紹介します
kashiwaguma-hiro
October 04, 2019
Tweet
Share
More Decks by kashiwaguma-hiro
See All by kashiwaguma-hiro
Terraformのざっくり入門
kashiwagumahiro
0
180
DMM.comの課金プラットフォームにおけるサーバーサイドKotlin事情
kashiwagumahiro
1
3.6k
Rundeckで 秘匿情報パラメータを セキュアに扱う
kashiwagumahiro
0
660
Other Decks in Programming
See All in Programming
イベントストーミングのはじめかた / Getting Started with Event Storming
nrslib
1
690
Rails Girls Sapporo 2ndの裏側―準備の日々から見えた、私が得たもの / SAPPORO ENGINEER BASE #11
lemonade_37
2
190
flutter_kaigi_2025.pdf
kyoheig3
1
360
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
itokoh0405
0
3.2k
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 1
philipschwarz
PRO
0
100
Java_プロセスのメモリ監視の落とし穴_NMT_で見抜けない_glibc_キャッシュ問題_.pdf
ntt_dsol_java
0
230
Developing Specifications - Jakarta EE: a Real World Example
ivargrimstad
0
190
Private APIの呼び出し方
kishikawakatsumi
3
900
「文字列→日付」の落とし穴 〜Ruby Date.parseの意外な挙動〜
sg4k0
0
260
AI駆動開発ライフサイクル(AI-DLC)のホワイトペーパーを解説
swxhariu5
0
1.4k
無秩序からの脱却 / Emergence from chaos
nrslib
1
8.3k
AWS CDKの推しポイントN選
akihisaikeda
1
170
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
Navigating Team Friction
lara
190
16k
The Language of Interfaces
destraynor
162
25k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
4 Signs Your Business is Dying
shpigford
186
22k
Side Projects
sachag
455
43k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
940
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知識がある程度必 要になる
おわり