Enjoy the Ansible

42
Enjoy the Ansible Yasuyuki Fujikawa (@Y_Fujikawa)

Transcript of Enjoy the Ansible

Enjoy the AnsibleYasuyuki Fujikawa (@Y_Fujikawa)

Agenda• 構成管理とは?

• Ansibleの特徴

• 他との違い

• デモ

• 締め

構成管理とは?

構成管理とは?• 構成管理(インフラの構成)

• ソースコードをサーバーにコピーする、 再起動する、などのデプロイが可能

• アドホックコマンドにより、

任意のコマンドをいつでも複数の サーバーに実行可能

• 他のシステムとの連携をし、複雑な業務のワークフローを支えるシステムを構築可能

Ansibleの特徴

ロゴ

Python2系で作られている

SSHで接続して、操作する

SSHで接続• 他のツールは操作対象のホスト(サーバー)に

インストールする必要がある

→ 実際はPythonが必要だが、ほぼすべてのOSに標準で付属している

• sshはUNIX系OSのホストを管理するためには 必須のツールであり一般的

SSHで接続

サーバーが他社によって管理されていて、自由にソフトウェアがインストールすることが

出来ない場合、Ansibleが使える

必要な準備が最低限

必要な準備が最低限

inventoryファイル

があればよい※極端な例

動作順序がわかりやすい

必要な準備が最低限

設定ファイルに書かれた順に実行される

冪等性がある

冪等性がある• 操作を何度やっても 同じ結果になることを指す

• 設定が都度変わってしまうと 同じものが作れない

• すでに変更が適用されている場合、 何もしないという実装をすることもできる

既存資産を活かせる

既存資産を活かせる

既存にあるShellスクリプトを そのまま使える

プログラマでなくても使いやすい

使いやすい• AnsibleはPythonで実装されているが

Pythonを使うことはない

• 設定ファイルは2種類1. inventoryファイル 2. YAML形式ファイル

Ansibleのデザイン指針

Ansibleのデザイン指針• Simply Clear

(わかりやすい)

• Simply Fast (習得もインストールも早い)

• Simply Complete (全部備えているからすぐに使える)

Ansibleのデザイン指針

• Simply Efficient (sshは効率的)

• Simply Secure (sshは安全)

他との違い(ChefやPuppetとの違い)

Ansibleのデザイン指針

対応に必要な要素 記述方式 UI

Chef エージェントとサーバ Ruby 付属

Puppet エージェントとサーバ 独自DSL 付属

Ansible sshのみ YAML有償

(Ansible Tower)

Ansibleの利点と使いどころ• 管轄などにより、管理対象に

エージェントなどをインストールできない場合

• Shell Scriptなどの既存資産を使い回したい場合

Ansibleの利点と使いどころ

• Rubyを書けないあるいは書きたくない場合

• 手軽に構成管理をしたい場合

Ansibleの欠点• Chefサーバーはノードの検索や変数の管理などが得意

• 大規模になり複雑化すればするほどAnsibleではない管理ツールの方が便利になる

ワークショップ

ワークショップについて• Macでの作業前提

※Windowsユーザーは

 隣の人のを見てて!

※ Homebrew入れておいて!

• Vagrantに対してインストールします。※各サーバへは今回対象外

事前準備$ brew install python$ brew install ansible$ vagrant plugin install vagrant-vbguest

# インストールが終わったらデモ用ソースを取得https://github.com/Y-Fujikawa/study_meeting_ansible# [注意] VagrantのIPアドレスは他のBOXと被らないように 任意で変えてください。末番:30としています。$ bundle install$ vagrant up --provision

Ansibleを実行

# ~/.ssh/configに以下を追記Host 192.168.33.* IdentityFile ~/.vagrant.d/insecure_private_key User vagrant

Ansibleを実行

# 正常にインストールされているか確認$ rake spec

MySQL 5.6をインストール

1. playbook.yml 8~12行目のコメントを外してください。2. $ vagrant provision

ディレクトリ構成|--.rspec|--Gemfile|--Gemfile.lock|--Rakefile|--Vagrantfile|--hosts |--playbook.yml|--roles| |--httpd| | |--tasks| | | |--main.yml|--spec| |—spec_helper.rb| |--192.168.33.30| | |--httpd_spec.rb| |--study-meeting| | |--httpd_spec.rb

締め

締め• 同じ操作を手動で何回もやるよりずっと手軽で同じ環境が作れる。

• 初期コストがかかりすぎて

最初は大変。

今回のサンプル作るのにどんだけかかったか・・・

締め

再利用できるのであればあるもの使えばいいのでは?

Ansible Galaxy

参考文献

http://www.amazon.co.jp/gp/product/B00MALTGDY/

参考資料

ブログの記事やら、GitHubのソースなど

ありがとうございました。