SlideShare a Scribd company logo
1 of 29
Download to read offline
伊藤 結
サーバ構築を自動化する
〜Ansible〜
Ansibleってなに?
Ansibleとは
あーそーゆーことね。完全に理解した。 (わかってない)
Ansibleは構成管理ツールの一つである。
設定を記述しておけば、以下のようなことを複数のサーバに対して何度
も実行できる。
● サーバの設定(ツールをインストールする、設定の追加など)
● デプロイ操作(サーバにファイルをコピーする、再起動するなど)
Ansibleの実行イメージ
①管理ホストPC(操作を行
う側)からAnsibleを実行す
る
②各サーバに対して設定ファ
イル記述された操作 (ファイル
コピー、コマンドなど )が実行さ
れる
SSH
Ansibleの設定ファイル(Inventory, Playbook)
Ansibleは基本的に以下の2種類のファイルを読み込んで処理を実行します。
これらのファイルは、行う操作に応じて各ユーザが作成します。
[app]
192.168.33.11 ansible_ssh_private_key_file=key1
192.168.33.12 ansible_ssh_private_key_file=key2
[balancer]
192.168.33.13 ansible_ssh_private_key_file=key3
---
- hosts: app
sudo: yes
remote_user: foo
tasks:
- name: アプリファイルをコピー
copy: src=./web dest=/home/foo/
- name: nginxをインストール
yum: name=nginx state=latest
Inventoryファイル Playbookファイル
対象のサーバの情報 (IP、sshの鍵情報)を、ini形
式で記述
Inventoryファイルに記述されたサーバに行う操作
(Ansibleの提供モジュール)をyml形式で記述
実際にAnsibleを使ってみる
デモのイメージ
Ansibleのデモとして、ローカルPCに仮想環境を立て、以下のようなロードバランシング
環境を作成します。
ロードバランサ
Webサーバ1
Webサーバ2
ローカル仮想環境
クライアントPC
(ブラウザ)
デモプロジェクトのフォルダ構成
├── all.yml すべてのPlaybookを含んだ実行用Playbook
├── apps_playbook.yml Webサーバ用のPlaybook
├── balancers_playbook.yml ロードバランサ用のPlaybook
├── config
| ├── default.conf      ロードバランサ用のconfig 
| └── nginx.conf ロードバランサ用のconfig
|
├── hosts 各サーバの情報をしたInventoryファイル
└── web
├── index.html Webサーバにデプロイするhtmlファイル
└── simpleserver.py    Webサーバ上で動作するHTTPサーバ
コマンドラインから、hosts, all.ymlを指定して、ansible-playbookコマンドを実行
すると、各サーバに対して操作が実行されます。
サンプルソース: https://github.com/yuizho/ansible_vagrant_balancer_sample
ansible-playbookコマンドを実行
hosts, all.ymlを指定し
て、ansible-playbookコ
マンドを実行
仮想環境のWebサーバ
2台に対して実行
(ファイルのコピ〜Http
サーバの起動)
仮想環境のロードバラン
サに対して実行(nginxイ
ンストール〜nginx再起
動)
ロードバランサに対してアクセスしてみると……
1回目 2回目
1回目はWebサーバ1の内容が表示、2回目はWebサーバ2の内容が表示さ
れ、ロードバランサと各Webサーバの動作が確認できました。
このように、Ansibleを使用すれば複数のサーバに対して一度に操作、設定を実
行できます。
Ansibleの特徴
冪等性(べきとうせい)がある
同じPlaybookを指定してAnsibleを複数回実行した場合、基本的に1回目に実
行した時と同じ結果が得られます(何度やっても同じになる)。
すでに設定が入っている場合は、操作をスキップしてくれます。
1回目 2回目
サーバ側に特別な設定を入れる必要がない
管理ホストのPCにのみAnsibleをインストールすれば、SSH越しにサーバ側を
操作できます。
そのため、サーバ側に対して特別な設定を入れる必要がありません。
これらの類似ツールは、
設定を加えるサーバ側に
あらかじめ設定を加えて
おく必要があったりする。
一度に複数のサーバを設定できる
デモでもお見せしたように、Inventoryファイルに対して対象となるサーバをすべ
て記述しておけば、それらのサーバに対して一度に同じ操作を実行できます。
AnsibleのPlaybookファイルは簡単な再帰処理、分岐処理を記述できるので、
サーバごとに設定の変更が必要な場合も問題なく操作を実行させることができ
ます。
これらの特徴に加えて……
導入するとこんな利点も
バージョン管理システムの恩恵を受けやすく、アプリケーション開発と同じような
ワークフローが構築できます。
結果として、オペミスや手順漏れ、更新漏れが軽減されます。
Ansibleを導入すると、サーバへの作業手順そのものをPlaybook上に書くこ
とができ、作業手順の作成を以下のようなワークフローで行うことができま
す。
1. 既存のPlaybookをバージョン管理システムから取得し、修正を実施
2. 修正したPlaybookのレビューを実施
3. 更新したPlaybookを、テスト環境に流してテストを実施
4. テスト済みのPlaybookをバージョン管理システムへコミット
5. テストで使用した、Playbookを本番環境で流す
Infrastructure as Code
"Infrastructure as Code" というのはこういうことで、単
にサーバー構成変更を自動化しましょうという話では
なく、インフラをすべてソフトウェアとして、コードで扱う
ことでアプリケーション開発で行われてきたいろいろな
"ワークフロー" をインフラ作業の世界にも導入しましょ
うねと、そういうことであります。
  naoyaのはてなダイアリーより
http://d.hatena.ne.jp/naoya/20131215/1387090668
Ansibleユースケース
大量のサーバを構築する
同じ操作を複数のサーバに対して一気に実行できることから、大量のサーバをセット
アップする必要がある場合は非常に有効です。
サーバ構築作業の効率化
ST/本番環境へ資材をデプロイする
デプロイ時のオペミス対策
SSHを介してファイルのコピー、サーバの再起動などを行えるためデプロイ用のツー
ルとしても使用できます。
開発環境を構築する
リポジトリからAnsibleの設定ファイルを各開発PCに取り込み、開発PCの仮想環境など
に対してAnsibleを実行すれば開発環境の構築が容易になります。
「俺のPCだと動くよ」問題の解決
WindowsとAnsible
Ansible1.7(現在の最新バージョンは2.0)から、Windowの操作を行えるように
なっています。
WindowsにはSSHサーバが備わって居ないため、WinRMを使用して管理ホス
トからサーバの操作を行います。
そのため、Linuxサーバを操作する時と違い、サーバ側(Windows)とAnsibleの
管理ホスト両方にあらかじめ設定を加える必要があります。
※Windows側の設定はWindos8, Windows2012未満の場合のみ設定必要で
す。
WindowsをAnsibleから操作する
※詳しい設定方法については、SoftwareDesign 2016 1月号のAnsible特集
をご覧ください(すぐ読みたい方がいれば貸します)。
まだまだ、Linuxサーバ用のモジュールには及びませんが、Windows用の操作
モジュールも増えてきています。
基本的なファイル操作、URLからのファイルダウンロード、サービスの管理など
をAnsibleの操作モジュールから行えます。
また、scriptモジュールを使用すればWindowsのPowerShellを叩くこともできる
ので、かなりの範囲の設定を行うことができます。
UI Automation PowerShell Extensionなどと組み合わせて使用すれば、GUI操
作を自動化することも可能です。
WindowsをAnsibleから操作してできること
今回のオチ
現状ではWindowsをそのまま管理ホスト(操作を行う側)として扱うことはできま
せん。
CygwinなどのUnixライクな環境をWindowsにインストールし、その上でAnsible
を動かすことは可能なようですが、情報をみていると苦労を伴うこともあるようで
す。
Windowsを管理ホストPCとして使用しながら、構成管理ツールを導入する必要
がある場合は、Ansible以外の構成管理ツールも視野に入れて検討してくださ
い。
WindowsをAnsible管理ホストにする
安心してください、VMに
  Linux入れれば大丈夫ですよ
ご静聴ありがとうございました

More Related Content

What's hot

継続的インテグレーションとテストの話
継続的インテグレーションとテストの話継続的インテグレーションとテストの話
継続的インテグレーションとテストの話
Preferred Networks
 

What's hot (20)

ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方
 
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
 
Ansibleの現在とこれから
Ansibleの現在とこれからAnsibleの現在とこれから
Ansibleの現在とこれから
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
Hyper v ネットワークの基本
Hyper v ネットワークの基本Hyper v ネットワークの基本
Hyper v ネットワークの基本
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Puppet入門
Puppet入門Puppet入門
Puppet入門
 
入門!Jenkins
入門!Jenkins入門!Jenkins
入門!Jenkins
 
継続的インテグレーションとテストの話
継続的インテグレーションとテストの話継続的インテグレーションとテストの話
継続的インテグレーションとテストの話
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
CI(継続的インテグレーション)
CI(継続的インテグレーション)CI(継続的インテグレーション)
CI(継続的インテグレーション)
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたAnsibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみた
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 

Similar to サーバ構築を自動化する 〜Ansible〜

自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
Masahiko Hashimoto
 
サーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろうサーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろう
Takayuki Hayashi
 
Try! cms2012標準マニュアル2013 03
Try! cms2012標準マニュアル2013 03Try! cms2012標準マニュアル2013 03
Try! cms2012標準マニュアル2013 03
博康 三井
 

Similar to サーバ構築を自動化する 〜Ansible〜 (20)

実録!AnsiblevsChef-solo
実録!AnsiblevsChef-solo実録!AnsiblevsChef-solo
実録!AnsiblevsChef-solo
 
Okinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - AnsibleOkinawa Open Days 2015 Handson - Ansible
Okinawa Open Days 2015 Handson - Ansible
 
Enjoy the Ansible
Enjoy the AnsibleEnjoy the Ansible
Enjoy the Ansible
 
初めてのAnsible
初めてのAnsible初めてのAnsible
初めてのAnsible
 
WindowsでMySQL入門
WindowsでMySQL入門WindowsでMySQL入門
WindowsでMySQL入門
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料
 
Ansible handson
Ansible handsonAnsible handson
Ansible handson
 
Ansible入門
Ansible入門Ansible入門
Ansible入門
 
Chef on azure
Chef on azureChef on azure
Chef on azure
 
サーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろうサーバーの動くメモをAnsibleでとろう
サーバーの動くメモをAnsibleでとろう
 
これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024これからはじめるAnsible - Ansible Night Tokyo 2024
これからはじめるAnsible - Ansible Night Tokyo 2024
 
OpenNebula on Ubuntu
OpenNebula on UbuntuOpenNebula on Ubuntu
OpenNebula on Ubuntu
 
Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方
 
Ansible使いたい
Ansible使いたいAnsible使いたい
Ansible使いたい
 
Ansible provisioning
Ansible provisioningAnsible provisioning
Ansible provisioning
 
Ansibleハンズオン勉強会
Ansibleハンズオン勉強会Ansibleハンズオン勉強会
Ansibleハンズオン勉強会
 
Chef on azure
Chef on azureChef on azure
Chef on azure
 
Chef on azure
Chef on azureChef on azure
Chef on azure
 
Try! cms2012標準マニュアル2013 03
Try! cms2012標準マニュアル2013 03Try! cms2012標準マニュアル2013 03
Try! cms2012標準マニュアル2013 03
 

Recently uploaded

Recently uploaded (10)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

サーバ構築を自動化する 〜Ansible〜