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
290
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
140
DMM.comの課金プラットフォームにおけるサーバーサイドKotlin事情
kashiwagumahiro
1
3.4k
Rundeckで 秘匿情報パラメータを セキュアに扱う
kashiwagumahiro
0
510
Other Decks in Programming
See All in Programming
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
110
データマイグレーションの成功戦略~サービスリニューアルで失敗しないための実践ガイド~
tkzwtks
8
850
20241004 モノタロウ式~ドメインモデリングとリアーキテクチャ
monotaro
PRO
2
680
cgroup v2 support in Kubeadm
kentatada
0
220
今日で分かる!カスタムコップの作り方
krpk1900
2
270
UnJSで簡単に始めるCLIツール開発 / cli-tool-development-with-unjs
aoseyuu
2
380
Why I Choose NetBeans for Jakarta EE
ivargrimstad
0
850
レガシーな Android アプリのリアーキテクチャ戦略
oidy
1
160
Integrating AI in Your Enterprise Java Applications
ivargrimstad
0
870
Новый уровень ML-персонализации Lamoda: Как мы усилили ее в каталоге и перенесли на другие продукты
lamodatech
0
410
offers_20241022_imakiire.pdf
imakurusu
1
130
ActiveRecordの力でDBのメタデータを迅速に解析する
lnit
5
2k
Featured
See All Featured
The Cult of Friendly URLs
andyhume
77
6k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
A Modern Web Designer's Workflow
chriscoyier
692
190k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
How GitHub (no longer) Works
holman
311
140k
Designing for humans not robots
tammielis
249
25k
Bash Introduction
62gerente
608
210k
Navigating Team Friction
lara
183
14k
[RailsConf 2023] Rails as a piece of cake
palkan
49
4.8k
Designing Experiences People Love
moore
138
23k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
Testing 201, or: Great Expectations
jmmastey
38
7k
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知識がある程度必 要になる
おわり