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
サーバ構築を自動化する~Ansible ~
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
520
Other Decks in Technology
See All in Technology
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
390
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
1
1.3k
第3回しろおびセキュリティスポンサーセッション
log0417
0
190
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.3k
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
610
TypeScript入門 2026
recruitengineers
PRO
3
580
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.5k
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.6k
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
240
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
FDEの心得
noriakioji
4
5.7k
猫付きpingコマンドを自作
uyuki234
0
230
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
450
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
Producing Creativity
orderedlist
PRO
348
40k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
370
The Cost Of JavaScript in 2023
addyosmani
55
10k
Claude Code のすすめ
schroneko
67
230k
Docker and Python
trallard
47
4.1k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
660
30 Presentation Tips
portentint
PRO
1
370
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
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入れれば大丈夫ですよ
ご静聴ありがとうございました