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ãšã³ã·ã¹ãã ã®æ©èœãæ¡åŒµã§ããŸãã ãããŠãæ éã«é£ã¹ç©ãåã-瀟äŒãå©ããŠïŒ