燃料プラグむンの䜜成方法䟋ずしおNFSを䜿甚。 パヌト2

俳優ず出挔者



Alexander Kislitsky-コヌドの著者、

Evgenia Schumacher、Irina Povolotskaya-圹に立぀コメントずリンク、

Vyacheslav Struk-レビュヌ、

むリダ・ステックキン-ストヌリヌテラヌ



重芁な泚意事項プラグむンの䞖界は非垞に急速に発展しおいたす。 以䞋に説明するのは、 MOS 6.0で䜜成されたプラグむンに関連しおいたす。 MOSはMirantis OpenStackであり、私たちが行うすべおのこずず同様に、オヌプンなディストリビュヌションであるこずを思い出しおください。 ただし、先週MOS 7.0の公匏リリヌスが正匏に発衚されたした。これはたったく別の話であり、これに぀いおもお話ししたす。 しかし、別の時間。 怠zyなコピヌ貌り付け者のために、すぐにGitHubぞのリンクを提䟛し、怠inessが進歩の゚ンゞンであるこずを思い出しおください。



そこで、2番目の郚分に進み、最埌に特定のNFSプラグむンがどのように䜜成されたかに぀いお説明したす。 この䟋では、Cinderのバック゚ンドずしお䜿甚されたNFSサヌバヌが既にむンストヌルされおいたす。 幞運が足りない堎合は、 適切なマニュアルを読むこずをお勧めしたす。 圌の蚀い盎しは私たちの蚈画に含たれおいたせん-そのため、テキストはかなり膚倧であるこずが刀明したした。 ただし、プラグむンの䜜成経隓を共有し、トピックに盎接関連する远加資料ぞの䟿利なリンクを提䟛する蚈画が含たれおいたす。 はい、ちなみに、テキストに䞀般的な単語が倚すぎるず非難されるこずがありたす。 今回は改善を詊みたした。 行こう



開発環境を䜜成する



プラグむンをビルドするには、最初に仮想開発環境を䜜成する必芁がありたす。ディレクトリを䜜成し、アクティブにしお、 Fuel plugin builderをむンストヌルしたす 。



$ mkdir plugins $ cd plugins $ virtualenv .venv $ source .venv/bin/activate $ pip install fuel-plugin-builder
      
      







秘Theは、この仮想開発環境で新しいプラグむンを構築するためにサヌバヌでrootになる必芁がないこずです。



プラグむンの䜜成



ここで、Fuelプラグむンビルダヌを䜿甚し、次のコマンドでプラグむンの䜜業を開始しお、将来のプラグむンの「スケルトン」を生成したす。



 $ fpb -create external_nfs
      
      







その結果、開発者が特定のフィヌルドの倀を修正できる䞀連のテンプレヌトを取埗できたす。 Fuelプラグむンビルダヌの動䜜の詳现に぀いおは、 Fuel Plugins wikiをご芧になるこずをお勧めしたす。



プラグむンバック゚ンド



以䞋に瀺すように、metadata.yamlでプラグむン定矩を定矩したす。 ここでは、HAおよびマルチノヌドモヌドのプラグむンでFuel 6.0を䜿甚したす。

これを行う方法に関する最も詳现な情報は、 OpenStack Cloud Administrator Guideず呌ばれるドキュメントで入手できたす。



重芁 Mirantis OpenStack 6.0以降で䜜成されたプラグむンのみを怜蚌できたす。 怜蚌ずは䜕か、なぜ怜蚌が必芁なのかに぀いおは、この画期的な話の最初の郚分で曞きたした。 怜蚌に合栌する方法-このテキストの最埌に説明したす。



そしお今、件名にガむドのない人のためのいく぀かの段萜



 $ Plugin name name: external_nfs title: External NFS backend for Cinder $ Plugin version version: 1.0.0 $ Description description: External NFS backend for Cinder $ Required fuel version fuel_version: ['6.0'] $ The plugin is compatible with releases in the list releases: - os: ubuntu version: 2014.2-6.0 mode: ['ha', 'multinode'] deployment_scripts_path: deployment_scripts/ repository_path: repositories/ubuntu - os: centos version: 2014.2-6.0 mode: ['ha', 'multinode'] deployment_scripts_path: deployment_scripts/ repository_path: repositories/centos $ Version of plugin package package_version: '1.0.0'
      
      







シェルタスクの远加



NFS UbuntuずCentOSに必芁なパッケヌゞをダりンロヌドし、それぞれexternal_nfs / repositories / ubuntuずexternal_nfs / repositories / centosディレクトリに移動しお、パッケヌゞをむンストヌルするタスクを远加したす。

deployment_scripts / install_packages.shにパッケヌゞを保存し、スクリプト「chmod + x install_packages.sh」の実行可胜暩限を远加したす。



 $ !/bin/bash OS_NAME='' if grep -i CentOS /etc/issue.net >/dev/null; then OS_NAME='centos'; elif grep -i Ubuntu /etc/issue.net >/dev/null; then OS_NAME='ubuntu'; fi function install_package { if [ $OS_NAME == 'ubuntu' ]; then apt-get install -y rpcbind nfs-common libevent-2.0 \ libgssglue1 libnfsidmap2 libtirpc1 elif [ $OS_NAME == 'centos' ]; then yum install -y rpcbind nfs-utils nfs-utils-lib libevent \ key-utils libtirpc libgssglue fi } install_package
      
      







次に、パッケヌゞをむンストヌルするシェルタスクを远加したす。 Cinderノヌドぞのデプロむ埌に起動されるinstall_packages.shスクリプトを含むtasks.yamlファむルは、次のようになりたす。



 - role: ['cinder'] stage: post_deployment type: shell parameters: cmd: ./install_packages.sh timeout: 180
      
      







フロント゚ンドプラグむン



次に、Fuelむンタヌフェむスの[蚭定]タブにチェックボックスず特定の項目を远加したす。 これを行うには、 次のパラメヌタヌに埓っおenvironment_config.yamlでUIを蚘述したす 。



1. NFS共有ファむル

2. NFSマりントオプション

3. NFSスパヌスボリュヌムが䜿甚されおいる



次の䟋に瀺すように、プラグむンむンタヌフェむスの説明を远加したす。



 attributes: endpoint: value: '' label: 'NFS endpoints' description: 'comma separated HOST:SHARE values' weight: 25 type: "text" mount_options: value: '' label: 'NFS mount options' description: 'optional NFS mount parameters' weight: 25 type: "text" nfs_sparsed_volumes: type: "checkbox" weight: 30 value: false label: "NFS sparsed volumes" description: ""
      
      







パペットタスクを远加する



Puppetマニフェストは、 OpenStack Cloud管理者ガむドで説明されおいるタスクを提瀺し、GitHubのdeployment_scripts / puppetディレクトリに送信したす。



パペットマニフェストを適甚した埌、/ etc / nfssharesファむルのアクセス蚱可に泚意し、次のコマンドを実行しおCinderサヌビスを再起動したす。



Puppetはexternal_nfs / deployment_scripts / puppet / modules / cindernfs / manifests / backend / nfs.ppを適甚したす。



次に、tasks.yamlにマニフェストを適甚するタスクを远加したす。



 - role: ['cinder'] stage: post_deployment type: puppet parameters: puppet_manifest: puppet/site.pp puppet_modules: puppet/modules/:/etc/puppet/modules timeout: 360
      
      







プラグむンアセンブリ



pre_build_hookをfuel-libraryの察応するバヌゞョンず互換性がありたす。 この堎合、次のようになりたした。



 #!/bin/bash set -eux ROOT="$(dirname `readlink -f $0`)" MODULES="${ROOT}"/deployment_scripts/puppet/modules TMP_DIR="${ROOT}"/tmp mkdir -p "${MODULES}" mkdir -p "${TMP_DIR}" REPO_PATH='https://github.com/stackforge/fuel-library/tarball/f43d885914d74fbd062096763222f350f47480e1' wget -qO- "${REPO_PATH}" | \ tar -C "${MODULES}" --strip-components=3 -zxvf - \ stackforge-fuel-library-f43d885/deployment/puppet/{inifile,stdlib}
      
      







これで、次のようにパッケヌゞをビルドできたす。



 fpb --build external_nfs
      
      







パッケヌゞはexternal_nfs / external_nfs-1.0.0.fpずしお保存され、 Mirantisクむックスタヌトマニュアルに瀺されおいるように、VirtualBoxを䜿甚しおモゞュヌルをデプロむできたす。



重芁 OpenStackのデプロむ埌に仮想マシンのスナップショットを䜜成するこずを忘れないようにしおください。



プラグむンの展開



そのため、プラグむンが䜜成されたす。 これをFuel Masterノヌドにコピヌし、展開甚にむンストヌルしたす。



 scp external_nfs/external_nfs-1.0.0.fp root@master-node: ssh root@master-node fuel plugins --install external_nfs-1.0.0.fp
      
      







プラグむンがむンストヌルされおいるこずを確認しおください



 $ fuel plugins
      
      







むンストヌル埌、環境をFuelむンタヌフェヌスに远加し、[蚭定]タブでNFSプラグむンを構成できたす。 ノヌドを远加しおプラグむンを確認するこずもできたす。 テストに移る前に、考えられる問題を蚺断しお解決する手順を芋おみたしょう。



トラブルシュヌティング



たずえば、䞀般的な状況ファむルは存圚したすが、芋぀かりたせん。 たずえば、install_packages.shスクリプトのパスを指定しなかったず仮定したす。



 - role: ['cinder'] stage: post_deployment type: shell parameters: cmd: install_packages.sh timeout: 180
      
      







この堎合、クラりドのデプロむは倱敗し、システムは次の゚ラヌを衚瀺したす。



 Deployment has failed. Method deploy. Failed to deploy plugin external_nfs-1.0.0. Inspect Astute logs for the details.
      
      







この堎合、Fuelマスタヌノヌドの/var/log/docker-logs/astute.logにあるログを確認したいこずが想定されおおり、特定のケヌスでは次のようになりたす。



 2014-12-23T16:31:54 debug: [395] c5d1e2b5-56bb-4428-9666-8c5574cb06a4: MC agent 'execute_shell_command', method 'execute', results: {:sender=>"3", :statuscode=>0, :statusmsg=>"OK", :data=>{:stdout=>"", :exit_code=>127, :stderr=>"sh: 1: install_packages.sh: not found\n"}} 2014-12-23T16:31:54 debug: [395] c5d1e2b5-56bb-4428-9666-8c5574cb06a4: cmd: cd /etc/fuel/plugins/external_nfs-1.0.0/ && install_packages.sh cwd: /etc/fuel/plugins/external_nfs-1.0.0/ stdout: stderr: sh: 1: install_packages.sh: not found
      
      







これは、tasks.yamlのinstall_packages.shパスが正しくないこずを瀺しおいたす。 次のように修正できたす。



 - role: ['cinder'] stage: post_deployment type: shell parameters: cmd: ./install_packages.sh timeout: 180
      
      







修正埌、パッケヌゞを再構築し、Fuel Masterノヌドで曎新したす。



 fpb --build external_nfs scp external_nfs/external_nfs-1.0.0.fp root@master-node: ssh root@master-node fuel plugins -- install --force external_nfs-1.0.0.fp
      
      







結果を確認する



この問題を解決したら、新しい環境を䜜成し、クラりドを構成しお展開できたす。 展開が成功したら、CinderがNFSバック゚ンドで適切に動䜜しおいるこずを確認したす。 簡単にする



1.コントロヌラヌにログむンしお、Cinderボリュヌムを䜜成したす。



 ssh root@master-node ssh controller-node source openrc cinder create 1
      
      







2. Fuel CLIでボリュヌムの状態を確認したす。 詳现に぀いおは、 Mirantis OpenStackナヌザヌガむドを参照しおください。



燃えがらリスト



画像



3. NFSで䜜成されたcinderリストの出力からのIDが、volume-Id倀に察応する名前のファむルずしお手探りされおいるこずを確認したす。



 nfs-server$ ls volume-d9382a2b-fd13-424b-9eba-3a77a1d16008
      
      







CinderノヌドでPuppetマニフェストを修正する堎合は、/ etc / fuel / plugins / external_nfs-1.0.0 / puppetディレクトリで芋぀けるこずができたす。



 ssh root@master-node ssh cinder-node cd /etc/fuel/plugins/external_nfs-1.0.0/ puppet apply --modulepath=/etc/fuel/plugins/external_nfs-1.0.0/puppet/modules site.pp
      
      







詳现に぀いおは、 こちらをご芧ください 。



プラグむンリリヌス



プラグむンを䜜成するず、次のオプションのいずれかを䜿甚できたす。



1. Mirantisチヌムに連絡せずに、プラグむンを自分でデプロむしお䜿甚したす。 このシナリオには2぀のマむナス点がありたす。クラりドは圓瀟のサポヌトによっおサポヌトされないため、お客様はご自身の責任ずリスクで行動しおください。 プラグむンはカタログに公開されないため、コミュニティはあなたの偉業を知らず、あなたの仕事の結果を利甚できず、䜜成されたプラグむンの機胜を評䟡できたせん。



2.怜蚌なしでMOSのプラグむンを配眮したす。 ぀たり、Mirantis OpenStackをダりンロヌドする他の人にもプラグむンをダりンロヌドするこずを蚱可したすが、そのようなむンストヌルはMirantisチヌムによっおサポヌトされたせん。 これを行うには、driverlogに゚ントリプラグむンを眮くだけです 。



3.プラグむンを配眮し、 Mirantisパヌトナヌになり぀たり、Mirantis Unlockedプロゞェクトの特定の芁件を満たし、怜蚌のリク゚ストを送信し、それを認蚌したす。怜蚌手順でプラグむンの品質が確認された堎合、カタログで公開し、MOSクラりドをサポヌトしたすこのプラグむン。



怜蚌プロセスはオプションであり、時間がかかりたすが、怜蚌枈みのプラグむンはFuelプラグむンカタログに远加され、Mirantisサポヌトによっおサポヌトされたす。 これは、特にスタッフに倚数のOpenStackスペシャリストがいない倧䌁業にずっお重芁です。



プラグむンの怜蚌



それでもプラグむンを怜蚌するこずに決めた堎合は、手順に぀いお簡単に説明したす。 しかしその前に、私たちはあなたがミランティスのパヌトナヌでなければならないこずをもう䞀床思い出したす。 プラグむンの統合および怜蚌はMOSずの統合手順の1぀は、アフィリ゚むトプログラムのフレヌムワヌク内でのみ可胜です。



たず、Mirantisに特定のドキュメントセットを提䟛する必芁がありたす。



-プロゞェクトの仕様たたは「仕様」。このドキュメントはパヌティヌで呌び出されるため、

-プラグむンのむンストヌルずデプロむのガむド、

-ナヌザヌマニュアル

-テスト蚈画、

-テスト結果。



マニュアルの構成方法の詳现に぀いおは、 こちらをご芧ください 。



第二に、認蚌プロセス自䜓は次の手順で構成されたす。



-プロゞェクトの仕様のレビュヌ、

-コヌドレビュヌ、

-テスト蚈画のレビュヌ、

-プラグむンの展開手順のレビュヌ、

-ナヌザヌマニュアルのレビュヌ、

-開発者が提出したテスト結果の分析、

-Mirantisチヌムによるネむティブプラグむンのテスト。



重芁 Fuelなしでプラグむンを䜿甚できたす。たた、認蚌は必須の手順ではありたせん。 Mirantisチヌムによる著䜜暩プラグむンを䜿甚しおMOSクラりドのサポヌトを保蚌する堎合に必芁です。 しかし、私たちは自分自身を繰り返しおいるようです。 しかし、それは本圓に重芁です



結論の代わりにプラグむンでOpenStackの機胜を拡匵する



䟋ずしおNFSを䜿甚しおプラグむンを䜜成する方法を瀺したしたが、独自のニヌズを満たすプラグむンを䜜成できたす。 Fuelの柔軟性により、クラりドを快適に展開および管理できたす。 さらに、認定手続きを怠る必芁がない堎合は、プラグむンのMirantisスペシャリストのサポヌトを受けられたす。



サポヌトに぀いお話すずき、プラグむン自䜓-そのコヌド-は開発者によっおサポヌトされ、Mirantisチヌムは倱敗したプラグむンでMOSクラりドプラグむンをサポヌトできるずいう事実に぀いお話したす。



Fuelのプラグむンを䜜成するこずで、OpenStack゚コシステムの機胜を拡匵できたす。 そしお、慎重に食べ物を噛む-瀟䌚を助けお



All Articles