Ansible softlayer
-
Upload
hideaki-tokida -
Category
Technology
-
view
1.813 -
download
1
Transcript of Ansible softlayer
東京
SoftLayer勉
強会
#自動化
#Chef #Ansible #Puppet
Hideaki Tokida@tokida
• 最近気になるっているのはOpenWhisk。イベント駆動型アプリケーションサーバです。OSSなのでSoftLayerでも動きます。
Infrastracutre as a Code
• Ansibleは代表的な構成管理ツールの1つです。最近ではInfrastructures as a Codeですね。インフラを制御するためのソフトです。
Infrastructures as Codebefore
設計書に設定内容を記述
設計書をレビュー(変更点をドキュメントで指摘)
設計書に「見ながら」サーバを設定試験書を「見ながら」試験を実施
設計書を元に「テスト仕様書」を記述ファイルで版管理
• 今までのインフラ構築は「大体」手作業が多いですね。レビューをしても人為的なミスでそのとおりとは限りません。
Infrastructures as Codeafter
Git等のソース管理ツールを利用したレビュー
設定定義を「使って」サーバを設定
試験定義を「使って」試験を実施
設計を元に「テスト」を記述
「設定内容」を定義ファイルに記述
git等で履歴を管理
• コード化することにより「レビュー」「実行」「テスト」「履歴」が一貫性を持ち冪等性を持って運営することが出来ます。
Ansible
• そのな構成管理を実現するための実装の1つが「Ansible」
Python
• None Agent• Install Application• Configuration
server
• 多くのことが出来ます。記述はYAML型式で記載するだけ。プリセットされた多くのモジュールが構築を手助けしてくれます。
Ansibleで出来ること
1. 対象のサーバに対してはSSHを利用する、Windowsも対応
2. サーバ側にエージェント/クライアントの導入は不要
3. 設定ファイルはYAML型式で記述
4. 冪等性が考慮された多数のモジュールが標準で提供
5. 複数の処理をまとめて定義した「Playbook」を実行する
6. 特定条件で動くハンドラや条件分岐、ループなどが定義可能
Ansible & SoftLayer
• インフラ部分である「SoftLayer」に対してAnsibleは何が出来るでしょうか?
Ansible + SoftLayer で出来ること
1. サーバのOSレイヤーではなく、「サーバ」自体をオーダ・キャンセル可能
2. 対象ホストのリストを動的にSoftLayerの内容とする
3. SoftLayerはまだExtra Moduleに正式には入っていない(プルリク待ち)
4. 上手く利用すればサーバのオーダから構築までを自動化可能
1. Server Order & Cancel (ansible modules)
2. Inventroy host (ansible dynamic inventory)
3. Into Provtioning Script (ansible)
• 3つの使い方が考えられます。
Python
Order ServerCancel Server
SoftLayerVirtual Server
1. Server Order & Cancel (ansible modules) • Softlayer-pythonの機能を利用してAPIをコールすることでAnsibleから制御を行う
> ansible-playbook softlayer_order.yml
• 実行はSoftLayer-Pytonが利用できる端末から実施
Order Server Cncel Server
現状のSOFTLAYER ANSIBLE MODULEの課題点
1. 冪等性が担保されて無い(2回実行するとサーバが繰り返し作成されてしまう)
2. Tagでサーバを管理(idでサーバを特定しない為削除する際に不便)
3. まだ正式版になっていない(プルリクに入っている状態)
> ansible -i softlayer.py dal09 -m ping
2. Inventroy host (ansible dynamic inventory) • ホストの情報(inventory)を動的にSoftLayerから取得する
https://github.com/WrathOfChris/ops/blob/master/softlayer/ansible/inventory/softlayer.py
hostvars PublicIP単位 (sfl_)・uuid,cpu,type,rack,state,ip_address,id,hostname,mem, private_ip_address, dns_name, region, key_name, kernel, domain, guid, launch_time
hostnanme.domainameEx) docker01.niandc.co.jp
単一IPアドレス
regionEx) dal09
複数の該当するサーバのIPアドレス
DomainEx) niandc.co.jp
複数の該当するサーバのIPアドレス
・コード内 93⾏⽬ apikey => api_key に修正・softlayer.py には実⾏権限が必要です(chmod +x softlayer.py)・sshで接続できる必要があります。
• 「データセンターの全てのサーバ」という指定を行うことが出来る。また環境変数が定義されるので必要に応じて処理に変化を持たせることが可能
現状のSOFTLAYER INVENTORY MODULEの課題点
1. いい感じで出力してくれる dynamic Inventry Scriptがないので自分で使いやすいモノを
自作したほうが便利? 拡張して利用しましょう
docker01_p ansible_ssh_private_key_file=id_rsa ansible_ssh_host=10.x.x.11 等
• 実際の運用上必要なHostsの定義は自作したほうが便利なことも多い。使い分ける。
-- postinstall TEXT
3. Into Provisioning Script (ansible)
server
サーバを購入
起動後(Post)にShを実行
Ansibleが呼出され実行
YMLを取得
Pattern1 • SoftLayerの提供するProvisionScriptのシェルの中に組み込んでしまえば簡単に構成が出来ます(Ansbileの導入が必要)
server
①サーバのオーダー処理
②Inventroy対象を動的に生成③対象のサーバにAnsibleをPlaybookを使い処理を実行
YMLを取得
Pattern2 • もう一つのシナリは、オーダを実行しInventoryを活用してホストの情報を取得し適切なPlaybookを実行する事です。
現状のSOFTLAYER PROVING SCRIPTの課題点
1. プロビジョニングスクリプトは難しいことをすると完全にシェル芸になりがち
2. Ansibleなどの構成ツールを使うことで汎用的に既存の資産を利用
3. サーバの構成がある程度変更になってもAnsibleが吸収出来る範囲内であればそのまま利
用可能
Ansible による自動化によるメリット
• もうおわかりですね?
第8回 Bluemixユーザー会 〜InterConnect 2016速報!新サービス勉強会〜Wed, 16 Mar 2016 19:00 - 21:00
Swiftでイベントドリブン!バックエンドサービス「OpenWhisk」
https://bmxug.doorkeeper.jp/events/39959
• イベント駆動サーバ「OpenWishik」についてBluemixユーザ会でお話しします。オープンソースでSoftLayerでも動きます。