Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
サーバ構築を自動化する~Ansible ~
Search
yuizho
March 17, 2016
Technology
130
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバ構築を自動化する~Ansible ~
Ansibleとサーバ構成管理ツールの概要
yuizho
March 17, 2016
More Decks by yuizho
See All by yuizho
DI(依存性注入について)
yuizho
0
530
Other Decks in Technology
See All in Technology
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
130
Classmethod Company Deck
satoshi7
1
730
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
610
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.3k
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
230
大型犬好きによるPugの紹介
yamanoku
1
160
WasmをRustにする
sansantech
PRO
0
270
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
170
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
300
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
React改造してみた
tsukina_7mochi
0
110
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
130
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Discover your Explorer Soul
emna__ayadi
2
1.3k
How to Talk to Developers About Accessibility
jct
2
580
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Design in an AI World
tapps
1
350
WCS-LA-2024
lcolladotor
0
890
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
540
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Transcript
伊藤 結 サーバ構築を自動化する 〜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入れれば大丈夫ですよ
ご静聴ありがとうございました