Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ansistrano(&Ansible) への導入

Ansistrano(&Ansible) への導入

Ansistranoとはなにか
また、AnsistranoのベースとなるAnsibleとは何なのかを
ざっくりと紹介します

kashiwaguma-hiro

October 04, 2019
Tweet

More Decks by kashiwaguma-hiro

Other Decks in Programming

Transcript

  1. $ sudo yum -y install ntp $ vi /etc/ntp.conf $

    sudo service ntpd start ③コマンド実行や〜
  2. $ sudo yum -y install ntp $ vi /etc/ntp.conf $

    sudo service ntpd start ②Inventory:どのサーバを対象? ③Playbook:構築手順 ④Role:実際の操作 ①ansible:手順を実行する本体
  3. --- - 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
 数十行を書くだけ
  4. -- /opt/api/ |-- current -> /opt/api/releases/20100509145325/bin/api.jar |-- releases | |--

    20100509145325/bin/api.jar |-- shared ①デプロイ前

  5. -- /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 ①デプロイ前
 ②ダウンロードと配置

  6. -- /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 ①デプロイ前
 ②ダウンロードと配置
 ③シンボリックリンクを最新バージョンへ差し替え

  7. --- - 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(再掲)
 この辺
  8. デプロイパターンが豊富
 • 用意されている方法は7種類 ◦ download ◦ rsync ◦ git ◦

    svn ◦ hg ◦ s3 ◦ gcs • ほぼやりたいパターンを網羅できるのでは?
  9. -- /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の停止・起動したいよね?
  10. --- - 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を 指定できる!