{"id":36924,"date":"2023-09-06T18:11:16","date_gmt":"2023-01-12T22:18:26","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/"},"modified":"2024-04-30T21:46:58","modified_gmt":"2024-04-30T13:46:58","slug":"%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/","title":{"rendered":"\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack"},"content":{"rendered":"<p>\u6700\u8fd1Apache CloudStack\u65b0\u589e\u4e86\u5f88\u591a\u6211\u60f3\u8981\u5c1d\u8bd5\u7684\u529f\u80fd\uff0c\u6240\u4ee5\u6211\u4f1a\u7528Vagrant+VirtualBox\u5feb\u901f\u5730\u5c1d\u8bd5\u8fd0\u884cApache CloudStack\u3002<\/p>\n<h1>DevCloud\u662f\u4ec0\u4e48<\/h1>\n<p>DevCloud\u662f\u4e00\u4e2a\u53ef\u4ee5\u4f7f\u7528Vagrant\u548cVirtualBox\u8f7b\u677e\u6784\u5efaApache CloudStack\u73af\u5883\u7684\u5de5\u5177\u3002<\/p>\n<p>DevCloud\u662fApache Cloudstack\u7684\u4e00\u4e2a\u9879\u76ee\uff0c\u7531Apache\u8f6f\u4ef6\u57fa\u91d1\u4f1a\u8d1f\u8d23\u3002<\/p>\n<p>DevCloud\u81ea\u4f53\u5728\u6570\u5e74\u524d\u5c31\u5b58\u5728\u4e86\uff0c\u5e76\u4e14\u6709\u4ee5\u4e0b\u7684\u4ecb\u7ecd\u6587\u7ae0\u3002\u867d\u7136\u57fa\u672c\u90e8\u5206\u6ca1\u6709\u5927\u7684\u6539\u53d8\uff0c\u4f46\u7531\u4e8e\u6709\u4e00\u4e9b\u4e0e\u51e0\u5e74\u524d\u7684\u6587\u7ae0\u6709\u6240\u4e0d\u540c\u7684\u5730\u65b9\uff0c\u6240\u4ee5\u8fd9\u6b21\u6211\u4eec\u5c06\u91cd\u65b0\u5f00\u59cb\u3002<\/p>\n<p>\u4f7f\u7528\u7b80\u4fbf\u7684\u65b9\u5f0f\u5c1d\u8bd5\u4e91\u64cd\u4f5c\u7cfb\u7edf\u300cApache CloudStack\u300d\u7684\u65b9\u6cd5\u3002<\/p>\n<h2>DevCloud\u6240\u521b\u5efa\u7684\u865a\u62df\u673a\u3002<\/h2>\n<p>DevCloud\u5c06\u5728VirtualBox\u4e0a\u521b\u5efa\u4e24\u4e2a\u865a\u62df\u673a\uff0c\u4e00\u4e2a\u7ba1\u7406\u670d\u52a1\u5668\uff08\u7ba1\u7406\uff09\u548c\u4e00\u4e2axenserver\uff08\u4e3b\u673a\uff09\u3002<\/p>\n<p>\u5728\u7ba1\u7406\u670d\u52a1\u5668\u4e0a\uff0c\u9664\u4e86\u5b89\u88c5CloudStack\u7684\u7ba1\u7406\u670d\u52a1\u5668\u5916\uff0c\u8fd8\u4f1a\u5b89\u88c5NFS\u548cMySQL\u3002<br \/>\n\u4e3b\u673a\u4e0a\u5c06\u5b89\u88c5XenServer 6.2\u3002<\/p>\n<p>\u7531\u4e8e\u8fd9\u4e24\u53f0\u865a\u62df\u673a\u4e0a\u5df2\u7ecf\u5b89\u88c5\u4e86\u51e0\u4e4e\u6240\u6709CloudStack\u8fd0\u884c\u6240\u9700\u7684\u8f6f\u4ef6\uff0c\u6240\u4ee5\u53ea\u9700\u8fdb\u884cCloudStack\u7684\u914d\u7f6e\u5373\u53ef\u5c1d\u8bd5\u5404\u79cd\u4e0d\u540c\u7684\u8bbe\u7f6e\u3002<\/p>\n<h1>\u4f7f\u7528DevCloud\u8fdb\u884cCloudStack\u7684\u6784\u5efa\u6b65\u9aa4\u3002<\/h1>\n<h2>\u6709\u5173\u521b\u5efa\u73af\u5883\u7684\u4e8b\u9879\u3002<\/h2>\n<h3>\u9a8c\u8bc1\u8bbe\u5907<\/h3>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Mac OS X 10.11.6 (El Capitan)<\/ul>\n<\/li>\n<\/ul>\n<p>\u30d7\u30ed\u30bb\u30c3\u30b5 1.4GHz Intel Core i5<br \/>\n\u30e1\u30e2\u30ea 8GB 1600MHz DDR3<\/p>\n<h3>\u7248\u672c<\/h3>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">VirtualBox (5.0.26)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Vagrant (1.8.5)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">vagrant-berkshelf (5.0.0)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">vagrant-omnibus (1.4.1)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">ChefDK (0.17.17)<\/ul>\n<h3>\u4e91\u6808<\/h3>\n<p>\u6211\u4eec\u5c06\u4f7f\u7528Apache CloudStack 4.9\u7248\u672c\u3002\u6211\u8ba4\u4e3a\u5373\u4f7f\u4f7f\u7528\u5176\u4ed6\u7248\u672c\uff0c\u6b65\u9aa4\u4e5f\u4e0d\u4f1a\u6709\u592a\u5927\u53d8\u5316\u3002<\/p>\n<p>CloudStack\u8f6f\u4ef6\u5305 | CloudStack\u516c\u53f8<\/p>\n<h4>\u7f51\u7edc\u914d\u7f6e<\/h4>\n<p>\u8fd9\u6b21\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2a\u9ad8\u7ea7\u533a\u57df\u3002<\/p>\n<p>\u6211\u8ba4\u4e3a\uff0c\u53ea\u8981\u66f4\u6539Marvin\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5c31\u53ef\u4ee5\u4ee5\u540c\u6837\u7684\u65b9\u5f0f\u521b\u5efaBasic\u533a\u57df\u3002<\/p>\n<h4>\u4e3b\u5b58\u50a8<\/h4>\n<p>Marvin\u7684\u9ed8\u8ba4\u8bbe\u7f6e\u6587\u4ef6\u5c06\u4e3b\u5b58\u50a8\u8bbe\u5907\u8bbe\u7f6e\u4e3a\u4f7f\u7528\u4e3b\u673a\uff08xenserver\uff09\u7684\u672c\u5730\u5b58\u50a8\u3002\u7136\u800c\uff0c\u672c\u5730\u5b58\u50a8\u548cNFS\u5728\u4f7f\u7528\u4e0a\u5b58\u5728\u51e0\u5904\u5dee\u5f02\uff0c\u56e0\u6b64\u6211\u4eec\u9700\u8981\u4fee\u6539\u8bbe\u7f6e\u6587\u4ef6\uff0c\u4ee5\u4fbf\u540c\u65f6\u4f7f\u7528\u4e24\u79cd\u5b58\u50a8\u65b9\u5f0f\u3002<\/p>\n<h2>\u5b89\u88c5\u548c\u8bbe\u7f6e\u5fc5\u8981\u7684\u8f6f\u4ef6<\/h2>\n<p>\u9996\u5148\uff0c\u9700\u8981\u5b89\u88c5\u4ee5\u4e0b\u8f6f\u4ef6\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">VirtualBox<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Vagrant<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">ChefDK<\/ul>\n<p>DevCloud\u4f1a\u4f7f\u7528Chef\u5bf9\u865a\u62df\u673a\u8fdb\u884c\u914d\u7f6e\u3002\u5b83\u4f1a\u5b89\u88c5\u6240\u9700\u7684Chef\u63d2\u4ef6\u6765\u8fdb\u884c\u914d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>vagrant plugin <span class=\"nb\">install <\/span>vagrant-berkshelf vagrant-omnibus\r\n<\/code><\/pre>\n<h3>\u9a6c\u6587\u7684\u5b89\u88c5<\/h3>\n<p>\u5728\u5efa\u7acb\u533a\u57df\u65f6\u5b89\u88c5Marvin\u3002\u6211\u8ba4\u4e3a\u4f7f\u7528Jenkins\u7684\u4ea7\u7269\u6765\u5b89\u88c5\u4f1a\u66f4\u65b9\u4fbf\u3002\u5373\u4f7f\u6ca1\u6709Marvin\uff0c\u4e5f\u53ef\u4ee5\u6210\u529f\u5b89\u88c5CloudStack\uff0c\u5982\u679c\u9047\u5230\u95ee\u9898\u53ef\u4ee5\u5148\u8df3\u8fc7\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>pip <span class=\"nb\">install <\/span>http:\/\/cdn.mysql.com\/Downloads\/Connector-Python\/mysql-connector-python-2.0.4.zip\r\n<span class=\"nv\">$ <\/span>curl <span class=\"nt\">-O<\/span> https:\/\/builds.apache.org\/job\/cloudstack-marvin\/lastBuild\/artifact\/tools\/marvin\/dist\/Marvin<span class=\"k\">*<\/span>.tar.gz\/<span class=\"k\">*<\/span>zip<span class=\"k\">*<\/span>\/dist.zip\r\n<span class=\"nv\">$ <\/span>unzip <span class=\"nt\">-o<\/span> dist.zip\r\n<span class=\"nv\">$ <\/span>pip <span class=\"nb\">install <\/span>Marvin<span class=\"k\">*<\/span>.tar.gz\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5728\u4f9d\u8d56\u5173\u7cfb\u4e2d\u5b89\u88c5\u5bc6\u7801\u5b66\u5931\u8d25\u7684\u60c5\u51b5\u4e0b\uff0c\u60a8\u53ef\u4ee5\u5c1d\u8bd5\u53c2\u8003\u4e0b\u9762\u7684\u94fe\u63a5\u5b89\u88c5\u5bc6\u7801\u5b66\uff0c\u7136\u540e\u518d\u6b21\u4f7f\u7528pip install Marvin*.tar.gz\uff0c\u4e5f\u8bb8\u4f1a\u6210\u529f\u3002<\/p>\n<p>\u5b89\u88c5 &#8211; \u52a0\u5bc6 1.6.dev1 \u6587\u6863<\/p>\n<h3>VirtualBox\u7684\u7f51\u7edc\u8bbe\u7f6e<\/h3>\n<p>\u5bf9\u4e8eMac\u7535\u8111\uff0c\u60a8\u9700\u8981\u6309\u7167\u4ee5\u4e0b\u65b9\u6cd5\u66f4\u6539VirtualBox\u7684\u7f51\u7edc\u8bbe\u7f6e\u3002<br \/>\n\uff08\u5bf9\u4e8eWindows\u7535\u8111\u6765\u8bf4\uff0c\u9002\u914d\u5668\u7684\u540d\u79f0\u53ef\u80fd\u4e0d\u540c\uff0c\u8bf7\u6839\u636eREADME\u8fdb\u884c\u76f8\u5e94\u8bbe\u7f6e\u3002\uff09<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5728VirtualBox\u83dc\u5355\u4e2d\u6253\u5f00&#8221;\u73af\u5883\u8bbe\u7f6e&#8221;\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6253\u5f00&#8221;\u7f51\u7edc&#8221;\u6807\u7b7e\u7684&#8221;\u4ec5\u4e3b\u673a\u7f51\u7edc&#8221;\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u5206\u522b\u6309\u4e0b\u9762\u7684\u65b9\u5f0f\u8bbe\u7f6evboxnet0\u3001vboxnet1\u3001vboxnet2\u3002\uff08\u5728&#8221;DHCP\u670d\u52a1\u5668&#8221;\u6807\u7b7e\u4e2d\uff0c\u53d6\u6d88&#8221;DHCP\u670d\u52a1\u5668&#8221;\u7684\u542f\u7528\u9009\u9879\uff09<\/ol>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">vboxnet0<\/ul>\n<\/li>\n<\/ul>\n<p>IPv4\u30a2\u30c9\u30ec\u30b9: 192.168.22.1<br \/>\nIPv4\u30cd\u30c3\u30c8\u30de\u30b9\u30af: 255.255.0<br \/>\nDHCP\u30b5\u30fc\u30d0\u30fc: \u7121\u52b9<\/p>\n<p>vboxnet1<\/p>\n<p>IPv4\u30a2\u30c9\u30ec\u30b9: 192.168.23.1<br \/>\nIPv4\u30cd\u30c3\u30c8\u30de\u30b9\u30af: 255.255.0<br \/>\nDHCP\u30b5\u30fc\u30d0\u30fc: \u7121\u52b9<\/p>\n<p>vboxnet2<\/p>\n<p>IPv4\u30a2\u30c9\u30ec\u30b9: 192.168.24.1<br \/>\nIPv4\u30cd\u30c3\u30c8\u30de\u30b9\u30af: 255.255.0<br \/>\nDHCP\u30b5\u30fc\u30d0\u30fc: \u7121\u52b9<\/p>\n<h3>\u89e3\u51b3\u4e86Vagrant 1.8.5\u7684\u95ee\u9898\u3002<\/h3>\n<p>\u7531\u4e8eVagrant\u7248\u672c1.8.5\u5b58\u5728authorized_keys\u6743\u9650\u8bbe\u7f6e\u4e0d\u6b63\u786e\u7684\u9519\u8bef\uff0c\u56e0\u6b64\u8bf7\u641c\u7d22plugins\/guests\/linux\/cap\/public_key.rb\uff08\u5728\u6211\u7684\u73af\u5883\u4e2d\u4e3a\/opt\/vagrant\/embedded\/gems\/gems\/vagrant-1.8.5\/plugins\/guests\/linux\/cap\/public_key.rb\uff09\uff0c\u8fdb\u884c\u4ee5\u4e0b\u4fee\u6b63\u3002<br \/>\n\u5176\u4ed6\u7248\u672c\u4e0d\u9700\u8981\u8fdb\u884c\u4fee\u6b63\u3002<\/p>\n<p>Poohblah\u63d0\u4ea4\u7684\u62c9\u53d6\u8bf7\u6c42#7611\u4fee\u590d#7610\u7684\u95ee\u9898\uff08\u4e0d\u6b63\u786e\u7684\u6743\u9650\u5728~\/.ssh\/authorized_keys\u5bfc\u81f4\u5728\u4e0d\u5b89\u5168\u7684\u5bc6\u94a5\u66ff\u6362\u540e\u8ba4\u8bc1\u5931\u8d25\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code>             if test -f ~\/.ssh\/authorized_keys; then\r\n               grep -v -x -f '#{remote_path}' ~\/.ssh\/authorized_keys &gt; ~\/.ssh\/authorized_keys.tmp\r\n               mv ~\/.ssh\/authorized_keys.tmp ~\/.ssh\/authorized_keys\r\n<span class=\"gi\">+              chmod 0600 ~\/.ssh\/authorized_keys\r\n<\/span>             fi\r\n<\/code><\/pre>\n<h3>\u83b7\u53d6CloudStack\u7684\u6e90\u4ee3\u7801<\/h3>\n<p>\u7531\u4e8eDevCloud\u7684\u6e90\u4ee3\u7801\u5305\u542b\u5728CloudStack\u7684\u5b58\u50a8\u5e93\u4e2d\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528git clone\u7b49\u65b9\u6cd5\u8fdb\u884c\u83b7\u53d6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>git clone https:\/\/github.com\/apache\/cloudstack.git\r\n<\/code><\/pre>\n<p>\u5c06\u6587\u4ef6\u79fb\u52a8\u5230\u7528\u4e8eAdvanced Zone\u7684\u76ee\u5f55\u3002<br \/>\ncloudstack\/tools\/devcloud4\u76ee\u5f55\u4e2d\u4e5f\u6709\u7528\u4e8eBasic Zone\u7684\u914d\u7f6e\uff0c\u5982\u679c\u8981\u6784\u5efaBasic Zone\uff0c\u5219\u6700\u597d\u4f7f\u7528\u90a3\u91cc\u7684\u914d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">cd <\/span>cloudstack\/tools\/devcloud4\/binary-installation-advanced\r\n<\/code><\/pre>\n<h2>\u4fee\u6539Vagrantfile\u548cchef_configuration.json\u6587\u4ef6\u3002<\/h2>\n<h3>\u5c06Chef\u7684\u7248\u672c\u66f4\u6539\u4e3a\u6700\u65b0\u7248\u672c\u3002<\/h3>\n<p>\u539f\u59cb\u7684Vagrantfile\u4e2d\u6307\u5b9a\u4e86\u8981\u5b89\u88c5\u7684Chef\u7248\u672c\u4e3a11.16.4\uff0c\u4f46\u76f4\u63a5\u4f7f\u7528\u8fd9\u4e2a\u7248\u672c\u4f1a\u5bfc\u81f4\u9519\u8bef\uff0c\u6240\u4ee5\u5c06\u5176\u6539\u5199\u4e3a:latest\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gd\">-    management.omnibus.chef_version = \"11.16.4\" \r\n<\/span><span class=\"gi\">+    management.omnibus.chef_version = :latest\r\n<\/span><\/code><\/pre>\n<h3>\u7981\u7528SyncedFolder<\/h3>\n<p>\u7531\u4e8e\u5728\u6211\u7684\u73af\u5883\u4e2d\u542f\u7528\u9ed8\u8ba4\u7684SyncedFolder\u4f1a\u5bfc\u81f4\u9519\u8bef\uff0c\u6240\u4ee5\u6211\u4f1a\u5c06\u5176\u8bbe\u7f6e\u4e3a\u65e0\u6548\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">@@ -40,6 +40,7 @@<\/span> end\r\n\r\n Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|\r\n\r\n+  config.vm.synced_folder \".\", \"\/vagrant\", disabled: true\r\n   config.vm.define 'xenserver' do |xenserver|\r\n     xenserver.vm.box = 'duffy\/xenserver'\r\n<\/code><\/pre>\n<h3>\u53a8\u5e08\u98df\u8c31\u7684\u4fee\u6539<\/h3>\n<p>\u7531\u4e8e\u5728\u542f\u52a8\u865a\u62df\u673a\u65f6\uff0c\u5982\u679c\u4e0d\u8fdb\u884c\u66f4\u6539\uff0cMarvin\u7684\u5b89\u88c5\u5c06\u5931\u8d25\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u4f1a\u4ece..\/common\/binary-installation\/recipes\/management_server.rb\u4e2d\u6ce8\u91ca\u6389\u5b89\u88c5\u8fc7\u7a0b\u3002<\/p>\n<p>\u56e0\u4e3a\u5728\u672c\u5730\u5b89\u88c5\u4e86Marvin\uff0c\u6240\u4ee5\u53ef\u4ee5\u8fdb\u884c\u533a\u57df\u521b\u5efa\uff0c\u5373\u4f7f\u4e0d\u6267\u884c\u8be5\u5904\u7406\u4e5f\u6ca1\u6709\u95ee\u9898\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">@@ -17,7 +17,7 @@<\/span>\r\n #  under the License.\r\n #\r\n\r\n-include_recipe 'cloudstack::marvin'\r\n<span class=\"gi\">+# include_recipe 'cloudstack::marvin'\r\n<\/span> include_recipe 'cloudstack::management_server'\r\n\r\n cloudstack_setup_database node['cloudstack']['db']['host'] do\r\n<\/code><\/pre>\n<h3>\u66f4\u6539\u865a\u62df\u673a\u7684\u5185\u5b58\u5927\u5c0f<\/h3>\n<p>\u9ed8\u8ba4\u7684\u5185\u5b58\u5927\u5c0f\u4e3aXenServer\u4e3a6GB\uff0c\u7ba1\u7406\u5668\u4e3a2GB\uff0c\u4f46\u6839\u636e\u4e0d\u540c\u7684\u673a\u5668\u4f7f\u7528\u60c5\u51b5\u53ef\u80fd\u8fc7\u5927\u800c\u65e0\u6cd5\u8fd0\u884c\uff0c\u56e0\u6b64\u9700\u8981\u8fdb\u884c\u8c03\u6574\u3002<\/p>\n<p>\u5728\u6211\u7684\u73af\u5883\u4e2d\uff0c\u6211\u91c7\u53d6\u4e86\u5982\u4e0b\u63aa\u65bd\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">@@ -75,7 +75,7 @@<\/span> Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|\r\n       v.customize ['modifyvm', :id, '--hostonlyadapter2', virtualbox_interface_0]\r\n       v.customize ['modifyvm', :id, '--hostonlyadapter3', virtualbox_interface_1]\r\n       v.customize ['modifyvm', :id, '--hostonlyadapter4', virtualbox_interface_2]\r\n<span class=\"gd\">-      v.customize ['modifyvm', :id, '--memory', 6144]\r\n<\/span><span class=\"gi\">+      v.customize ['modifyvm', :id, '--memory', 2048]\r\n<\/span>     end\r\n\r\n     ## Tweak kernel\r\n<span class=\"p\">@@ -92,7 +92,7 @@<\/span> Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|\r\n     management.vm.network 'forwarded_port', guest: 8080, host: 8080\r\n\r\n     management.vm.provider 'virtualbox' do |v|\r\n<span class=\"gd\">-      v.customize ['modifyvm', :id, '--memory', 2048]\r\n<\/span><span class=\"gi\">+      v.customize ['modifyvm', :id, '--memory', 512]\r\n<\/span>       v.customize ['modifyvm', :id, '--hostonlyadapter2', virtualbox_interface_0]\r\n       v.customize ['modifyvm', :id, '--hostonlyadapter3', virtualbox_interface_1]\r\n     end\r\n<\/code><\/pre>\n<h3>\u66f4\u6539CloudStack\u7684\u7248\u672c<\/h3>\n<p>\u6839\u636e\u60f3\u8981\u6784\u5efa\u7684\u7248\u672c\uff0c\u6539\u53d8 chef_configuration.json \u6587\u4ef6\u7684\u5e93\u548c\u7cfb\u7edfVM\u6a21\u677f\u7684URL\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">@@ -24,12 +24,11 @@<\/span>\r\n         \"path\": \"\/exports\/primary\"\r\n       },\r\n       \"hypervisor_tpl\": {\r\n<span class=\"gd\">-        \"xenserver\": \"http:\/\/packages.shapeblue.com\/systemvmtemplate\/4.5\/systemvm64template-4.5-xen.vhd.bz2\"\r\n<\/span><span class=\"gi\">+        \"xenserver\": \"https:\/\/packages.shapeblue.com\/systemvmtemplate\/4.6\/systemvm64template-master-4.6.0-xen.vhd.bz2\"\r\n<\/span>       },\r\n       \"configuration\": \"\/vagrant\/marvin.cfg.erb\",\r\n<span class=\"gd\">-      \"yum_repo\": \"http:\/\/packages.shapeblue.com\/cloudstack\/testing\/centos\/4.5\/\",\r\n-      \"apt_repo\": \"http:\/\/packages.shapeblue.com\/cloudstack\/testing\/debian\/4.5\/\",\r\n-      \"version\": \"4.5.0\"\r\n<\/span><span class=\"gi\">+      \"yum_repo\": \"http:\/\/packages.shapeblue.com\/cloudstack\/main\/centos\/4.9\/\",\r\n+      \"version\": \"4.9.0\"\r\n<\/span>   },\r\n   \"iptables\": {\r\n     \"lans\": [\"eth1\", \"eth2\"]\r\n<\/code><\/pre>\n<h3>\u4e91\u5806\u8bbe\u7f6e\u7684\u521d\u59cb\u503c\u66f4\u6539<\/h3>\n<p>\u5728\u5b89\u88c5\u5b8cCloudStack\u4e4b\u540e\uff0c\u53ef\u4ee5\u4f7f\u7528Marvin\u8fdb\u884c\u914d\u7f6e\uff0c\u5141\u8bb88096\u7aef\u53e3\uff0c\u4ee5\u4fee\u6539\u9ed8\u8ba4\u7684\u89c4\u683c\u914d\u7f6e\uff0c\u4f7f\u5f97\u5373\u4f7f\u5728CPU\u548c\u5185\u5b58\u8f83\u5c11\u7684\u73af\u5883\u4e0b\u4e5f\u80fd\u542f\u52a8\u865a\u62df\u673a\u3002<\/p>\n<p>\u901a\u8fc7\u4f7f\u7528\u540d\u4e3aprefill.sql\u7684\u6587\u4ef6\u76f4\u63a5\u66f4\u65b0\u6570\u636e\u5e93\u6765\u8fdb\u884c\u8bbe\u7f6e\u66f4\u6539\u3002<br \/>\n\u7531\u4e8e\u5df2\u7981\u7528SyncedFolder\uff0c\u56e0\u6b64\u5c06\u4fee\u6b63\u8def\u5f84\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">@@ -110,6 +111,7 @@<\/span> Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|\r\n\r\n     CHEF_CONFIGURATION = JSON.parse(Pathname(__FILE__).dirname.join('chef_configuration.json').read)\r\n\r\n+    management.vm.provision :file, source: \".\/prefill.sql\", destination: \"\/tmp\/prefill.sql\"\r\n     management.vm.provision :chef_solo do |chef|\r\n       chef.log_level = :debug\r\n       chef.run_list = CHEF_CONFIGURATION.delete('run_list')\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">@@ -15,7 +15,7 @@<\/span>\r\n         \"rootpassword\": \"password\",\r\n         \"management_server_key\": \"password\",\r\n         \"database_key\": \"password\",\r\n<span class=\"gd\">-        \"prefill\": \"\/vagrant\/prefill.sql\"\r\n<\/span><span class=\"gi\">+        \"prefill\": \"\/tmp\/prefill.sql\"\r\n<\/span>       },\r\n       \"secondary\": {\r\n         \"path\": \"\/exports\/secondary\"\r\n<\/code><\/pre>\n<p>\u539f\u59cb\u7684prefill.sql\u6587\u4ef6\u4f4d\u4e8ecloudstack\/tools\/devcloud4\/prefill.sql\u4e2d\uff0c\u56e0\u6b64\u9700\u8981\u590d\u5236\u5e76\u4fee\u6539\u5fc5\u8981\u7684\u90e8\u5206\u3002\u4e3b\u8981\u7684\u4fee\u6539\u5305\u62ec\u4ee5\u4e0b\u4e24\u4e2a\u65b9\u9762\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">NFS\u7528\u306e\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u8ffd\u52a0<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30aa\u30fc\u30d0\u30fc\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u4fc2\u6570\u3068\u95be\u5024\u3092\u5f15\u304d\u4e0a\u3052<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">cp<\/span> ..\/prefill.sql <span class=\"nb\">.<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">@@ -15,9 +15,12 @@<\/span>\r\n -- specific language governing permissions and limitations\r\n -- under the License.\r\n\r\n-REPLACE INTO `cloud`.`disk_offering` (id, name, uuid, display_text, created, use_local_storage, type, disk_size) VALUES (17, 'Devcloud4 offering', UUID(), 'Devcloud4 offering', NOW(), 1, 'Service', 0);\r\n<span class=\"gi\">+REPLACE INTO `cloud`.`disk_offering` (id, name, uuid, display_text, created, use_local_storage, type, disk_size) VALUES (17, 'Devcloud4 offering - Local Storage', UUID(), 'Devcloud4 offering - Local Storage', NOW(), 1, 'Service', 0);\r\n<\/span> REPLACE INTO `cloud`.`service_offering` (id, cpu, speed, ram_size) VALUES (17, 1, 200, 256);\r\n<span class=\"gd\">-REPLACE INTO `cloud`.`disk_offering` (name, uuid, display_text, created, use_local_storage, type, disk_size) VALUES ('Devcloud4 disk offering', UUID(), 'Devcloud4 disk offering', NOW(), 1, 'Disk', 1073741824);\r\n<\/span><span class=\"gi\">+REPLACE INTO `cloud`.`disk_offering` (name, uuid, display_text, created, use_local_storage, type, disk_size) VALUES ('Devcloud4 disk offering - Local Storage', UUID(), 'Devcloud4 disk offering - Local Storage', NOW(), 1, 'Disk', 1073741824);\r\n+REPLACE INTO `cloud`.`disk_offering` (id, name, uuid, display_text, created, use_local_storage, type, disk_size) VALUES (19, 'Devcloud4 offering', UUID(), 'Devcloud4 offering', NOW(), 0, 'Service', 0);\r\n+REPLACE INTO `cloud`.`service_offering` (id, cpu, speed, ram_size) VALUES (19, 1, 200, 256);\r\n+REPLACE INTO `cloud`.`disk_offering` (name, uuid, display_text, created, use_local_storage, type, disk_size) VALUES ('Devcloud4 disk offering', UUID(), 'Devcloud4 disk offering', NOW(), 0, 'Disk', 1073741824);\r\n<\/span> REPLACE INTO `cloud`.`configuration` (category, instance, component, name, value) VALUES ('Advanced', 'DEFAULT', 'management-server', 'integration.api.port', '8096');\r\n REPLACE INTO `cloud`.`configuration` (instance, name,value) VALUE('DEFAULT','router.ram.size', '256');\r\n REPLACE INTO `cloud`.`configuration` (instance, name,value) VALUE('DEFAULT','router.cpu.mhz','256');\r\n<span class=\"p\">@@ -31,4 +34,10 @@<\/span>\r\n REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'expunge.interval', '60');\r\n REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'management.network.cidr', '0.0.0.0\/0');\r\n REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'secstorage.allowed.internal.sites', '0.0.0.0\/0');\r\n<span class=\"gd\">-UPDATE `cloud`.`vm_template` SET unique_name=\"Macchinina\",name=\"Macchinina\",url=\"http:\/\/dl.openvm.eu\/cloudstack\/macchinina\/x86_64\/macchinina-xen.vhd.bz2\",checksum=\"30985504bc31bf0cd3b9d2c6ca7944d3\",display_text=\"Macchinina\" where id=5;\r\n<\/span><span class=\"err\">\\<\/span> No newline at end of file\r\n<span class=\"gi\">+REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'cluster.cpu.allocated.capacity.disablethreshold', '1');\r\n+REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'cluster.memory.allocated.capacity.disablethreshold', '1');\r\n+REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'pool.storage.allocated.capacity.disablethreshold', '1');\r\n+REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'pool.storage.capacity.disablethreshold', '1');\r\n+REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'storage.overprovisioning.factor', '3');\r\n+REPLACE INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'mem.overprovisioning.factor', '3');\r\n+UPDATE `cloud`.`vm_template` SET unique_name=\"Macchinina\",name=\"Macchinina\",url=\"http:\/\/dl.openvm.eu\/cloudstack\/macchinina\/x86_64\/macchinina-xen.vhd.bz2\",checksum=\"30985504bc31bf0cd3b9d2c6ca7944d3\",display_text=\"Macchinina\" where id=5;\r\n<\/span><\/code><\/pre>\n<h3>\u542f\u52a8\u865a\u62df\u673a<\/h3>\n<p>\u6267\u884c\u201cvagrant up\u201d\u547d\u4ee4\u540e\uff0c\u5c06\u542f\u52a8\u4e24\u53f0\u865a\u62df\u673a\uff0c\u4e00\u53f0\u662fxenserver\uff0c\u4e00\u53f0\u662fmanagement\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>vagrant up\r\n<\/code><\/pre>\n<p>\u5b8c\u6210\u540e\uff0c\u5728\u6d4f\u89c8\u5668\u4e2d\u8bbf\u95eehttp:\/\/192.168.22.5:8080\/client\/\u6216http:\/\/localhost:8080\/client\/\uff0c\u5373\u53ef\u6253\u5f00CloudStack\u7684\u7528\u6237\u754c\u9762\u3002<br \/>\n\u60a8\u53ef\u4ee5\u4f7f\u7528\u7528\u6237\u540dadmin\u548c\u5bc6\u7801password\u8fdb\u884c\u767b\u5f55\u3002<br \/>\n\uff08\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\u65f6\u95f4\u624d\u80fd\u770b\u5230CloudStack\u7684\u7528\u6237\u754c\u9762\u3002\uff09<\/p>\n<h3>\u521b\u5efa\u533a\u57df<\/h3>\n<p>\u6211\u5c06\u4f7f\u7528Marvin\u521b\u5efa\u4e00\u4e2a\u533a\u57df\u3002<\/p>\n<p>\u5c06marvin.cfg.erb\u590d\u5236\u4e00\u4efd\uff0c\u5e76\u66f4\u6539\u7ba1\u7406\u670d\u52a1\u5668\u7684IP\u5730\u5740\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">cp <\/span>marvin.cfg.erb marvin.cfg\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">@@ -109,15 +109,15 @@<\/span>\r\n     },\r\n     \"mgtSvr\": [\r\n         {\r\n<span class=\"gd\">-            \"mgtSvrIp\": \"&lt;%= @management_server_ip %&gt;\",\r\n-            \"port\": &lt;%= @management_server_port %&gt;\r\n<\/span><span class=\"gi\">+            \"mgtSvrIp\": \"192.168.22.5\",\r\n+            \"port\": 8096\r\n<\/span>         }\r\n     ],\r\n     \"dbSvr\": {\r\n<span class=\"gd\">-        \"dbSvr\": \"&lt;%= @database_server_ip %&gt;\",\r\n-        \"port\": &lt;%= @database_server_port %&gt;,\r\n-        \"user\": \"&lt;%= @database_user %&gt;\",\r\n-        \"passwd\": \"&lt;%= @database_password %&gt;\",\r\n-        \"db\": \"&lt;%= @database %&gt;\"\r\n<\/span><span class=\"gi\">+        \"dbSvr\": \"192.168.22.5\",\r\n+        \"port\": 3306,\r\n+        \"user\": \"cloud\",\r\n+        \"passwd\": \"cloud\",\r\n+        \"db\": \"cloud\"\r\n<\/span>     }\r\n<\/code><\/pre>\n<p>\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u5c06\u521b\u5efa\u533a\u57df\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>python ..\/..\/..\/tools\/marvin\/marvin\/deployDataCenter.py <span class=\"nt\">-i<\/span> marvin.cfg\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5728UI\u4e0a\u786e\u8ba4\u4e86\u201c\u57fa\u7840\u67b6\u6784 &gt; \u7cfb\u7edf\u865a\u62df\u673a\u201d\u4e2d\uff0c\u4e24\u4e2a\u865a\u62df\u673a\uff08SSVM\uff0cCPVM\uff09\u90fd\u6210\u529f\u542f\u52a8\uff0c\u5219\u8868\u793a\u6210\u529f\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d2b6d37434c4406c4a3e0\/86-0.png\" alt=\"\u30b7\u30b9\u30c6\u30e0VM\u306e\u8d77\u52d5\u3092\u78ba\u8a8d.png\" \/><\/div>\n<h3>\u521b\u5efa\u865a\u62df\u673a<\/h3>\n<p>\u4e3a\u4e86\u786e\u8ba4\u64cd\u4f5c\uff0c\u6211\u5c06\u521b\u5efa\u4e00\u4e2a\u865a\u62df\u673a\u3002\u57fa\u672c\u4e0a\uff0c\u60a8\u53ea\u9700\u6309\u7167\u5e38\u89c4\u65b9\u6cd5\u521b\u5efa\u5373\u53ef\u3002\u4f46\u662f\uff0c\u5982\u679c\u4f7f\u7528\u5e38\u89c4\u6a21\u677f\u6216\u63d0\u4f9b\u7684\u5185\u5bb9\uff0c\u53ef\u80fd\u4f1a\u8d85\u8fc7\u5bb9\u91cf\u9650\u5236\uff0c\u56e0\u6b64\u5efa\u8bae\u4f7f\u7528\u4ee5\u4e0b\u5728prefill.sql\u4e2d\u6dfb\u52a0\u7684\u6a21\u677f\u6216\u63d0\u4f9b\u7684\u5185\u5bb9\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8: Macchinina<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Compute Offering<\/ul>\n<\/li>\n<\/ul>\n<p>Devcloud4 offering<br \/>\nDevcloud4 offering &#8211; Local Storage<\/p>\n<p>Disk Offering<\/p>\n<p>Devcloud4 disk offering<br \/>\nDevcloud4 disk offering &#8211; Local Storage<\/p>\n<p>\u4eceMacchinina\u6a21\u677f\u521b\u5efa\u7684\u865a\u62df\u673a\uff0c\u53ef\u4ee5\u4f7f\u7528\u7528\u6237\u540d\uff1aroot\uff0c\u5bc6\u7801\uff1apassword\u767b\u5f55\u3002<\/p>\n<h2>\u6545\u969c\u6392\u9664<\/h2>\n<p>\u5982\u679c\u7cfb\u7edf\u865a\u62df\u673a\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8\u6216\u8005\u865a\u62df\u673a\u521b\u5efa\u5931\u8d25\uff0c\u8bf7\u767b\u5f55\u7ba1\u7406\u754c\u9762\u5e76\u68c0\u67e5\u65e5\u5fd7\u3002\u6211\u8ba4\u4e3a\u8fd9\u5f88\u53ef\u80fd\u662f\u7531\u4e8e\u5bb9\u91cf\u9650\u5236\u5f15\u8d77\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>vagrant ssh management\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">sudo <\/span>less \/var\/log\/cloudstack\/management\/management-server.log\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1Apache CloudStack\u65b0\u589e\u4e86\u5f88\u591a\u6211\u60f3\u8981\u5c1d\u8bd5\u7684\u529f\u80fd\uff0c\u6240\u4ee5\u6211\u4f1a\u7528Vagrant+VirtualBo [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36924","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528vagrantvirtualbox\u6765\u8fd0\u884capache-cloudstack\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack\" \/>\n<meta property=\"og:description\" content=\"\u6700\u8fd1Apache CloudStack\u65b0\u589e\u4e86\u5f88\u591a\u6211\u60f3\u8981\u5c1d\u8bd5\u7684\u529f\u80fd\uff0c\u6240\u4ee5\u6211\u4f1a\u7528Vagrant+VirtualBo [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528vagrantvirtualbox\u6765\u8fd0\u884capache-cloudstack\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-12T22:18:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T13:46:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d2b6d37434c4406c4a3e0\/86-0.png\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/\",\"name\":\"\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-01-12T22:18:26+00:00\",\"dateModified\":\"2024-04-30T13:46:58+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528vagrantvirtualbox\u6765\u8fd0\u884capache-cloudstack\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack","og_description":"\u6700\u8fd1Apache CloudStack\u65b0\u589e\u4e86\u5f88\u591a\u6211\u60f3\u8981\u5c1d\u8bd5\u7684\u529f\u80fd\uff0c\u6240\u4ee5\u6211\u4f1a\u7528Vagrant+VirtualBo [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528vagrantvirtualbox\u6765\u8fd0\u884capache-cloudstack\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-01-12T22:18:26+00:00","article_modified_time":"2024-04-30T13:46:58+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d2b6d37434c4406c4a3e0\/86-0.png"}],"author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/","name":"\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-01-12T22:18:26+00:00","dateModified":"2024-04-30T13:46:58+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728\u672c\u5730\u5316\u8bbe\u65bd\u4e2d\u4f7f\u7528Vagrant+VirtualBox\u6765\u8fd0\u884cApache CloudStack"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%ae%be%e6%96%bd%e4%b8%ad%e4%bd%bf%e7%94%a8vagrantvirtualbox%e6%9d%a5%e8%bf%90%e8%a1%8capache-cloudstack%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=36924"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36924\/revisions"}],"predecessor-version":[{"id":94487,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36924\/revisions\/94487"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=36924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=36924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=36924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}