{
  "version": "https://jsonfeed.org/version/1", 
  "title": "OpenStack", 
  "description": "\u5efa\u7acb\u4e91\u8ba1\u7b97\u5e73\u53f0\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002", 
  "home_page_url": "https://www.v2ex.com/go/openstack", 
  "feed_url": "https://www.v2ex.com/feed/openstack.json", 
  "icon": "https://cdn.v2ex.com/navatar/f899/139d/100_large.png?m=1409288015", 
  "favicon": "https://cdn.v2ex.com/navatar/f899/139d/100_normal.png?m=1409288015", 
  "items": [
    {
      "author": {
        "url": "https://www.v2ex.com/member/alfredcai", 
        "name": "alfredcai", 
        "avatar": "https://cdn.v2ex.com/gravatar/27c4a4d848b9ec27df9ba16a5fb956d4?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1017278", 
      "title": "\u73b0\u5728\u8fd8\u6709\u4eba\u5728\u7528 openstack \u5417", 
      "id": "https://www.v2ex.com/t/1017278", 
      "date_published": "2024-02-21T09:00:10+00:00", 
      "content_html": "<p>\u5728\u4e00\u4e2a\u5c0f\u578b\u4f01\u4e1a\u91cc\u7528 kolla \u90e8\u7f72\u4e86\u4e00\u5957 openstack zed \u7248\u672c\u7684\uff0c\u4e00\u5171\u5341\u53f0\u7269\u7406\u673a\uff0c\u4e00\u4e2a\u4eba\u8fd0\u7ef4\u3002\u9047\u5230\u4e86\u4e00\u4e9b\u8981\u6c42\u611f\u89c9 openstack \u4e0d\u592a\u597d\u7528\uff0c\u611f\u89c9\u771f\u7684\u5fc3\u7d2f\u3002\u4f8b\u5982\u52a0\u5bc6 U \u76d8\u7684\u6620\u5c04\uff1b\u4e00\u4e2a\u7f51\u53e3\u4e0a\u9762\u6539 trunk \uff0c\u652f\u6301\u4e0d\u540c\u7f51\u6bb5\uff1b\u611f\u89c9\u7279\u522b\u9ebb\u70e6\uff0c\u6bcf\u6b21\u90fd\u662f\u6539\u914d\u7f6e\u6587\u4ef6\u91cd\u542f\u7a0b\u5e8f\uff0c\u592a\u5e95\u5c42\u4e86\uff0c\u4e3a\u4ec0\u4e48 web \u4e0a\u4e0d\u80fd\u6539\uff0c\u9760\u4e00\u4e2a\u4eba\u6839\u672c\u987e\u4e0d\u4e0a\u3002</p>\n<p>\u95ee\u95ee\u5927\u5bb6\u73b0\u5728\u90fd\u5728\u7528\u4ec0\u4e48\u8f6f\u4ef6\u505a\u865a\u62df\u5316\u5440\uff1f PVE \uff0coVirt \uff0cOpenNebula \uff0cHarvest \u5728\u4f01\u4e1a\u91cc\u7528\u9760\u8c31\u5417\uff1f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/lingsan12", 
        "name": "lingsan12", 
        "avatar": "https://cdn.v2ex.com/avatar/c6f7/6957/617357_large.png?m=1698748822"
      }, 
      "url": "https://www.v2ex.com/t/987048", 
      "title": "\u8bf7\u6559\uff01 openstack Train \u7248\u672c \u5076\u5c14\u542f\u52a8 windows server 2019 \u7cfb\u5217\uff0c\u4f1a\u5361\u5728\u542f\u52a8\u754c\u9762\uff0c\u786c\u91cd\u542f\u51e0\u6b21\u5076\u5c14\u4f1a\u542f\u52a8\u6210\u529f\uff0c\u4f46\u5931\u8d25\u6b21\u6570\u8f83\u591a\u3002", 
      "id": "https://www.v2ex.com/t/987048", 
      "date_published": "2023-10-31T03:59:37+00:00", 
      "content_html": "<p>BdsDxe: loading Boot0001 \"UEFI Misc Deuice\u201d from PciRoot (0x0)/Pci(0x4,0x0)\nBdsDxe: starting Boot0001 \"UEFI Misc Device\u201d from PciRoot(0x0)/Pci(0x4,0x0)</p>\n<p>[23101:01H[=3h[2][81:01HBdsDxe: lading Boot0001 \"UEFI Misc Device\" from PciRoot(0x0)/Pci(0x4,0x0BdsDxe: starting Boot8001 \"UEFI Misc Device\" from PciRoot(0x0)/Pci(0x4,0x0)(2I[01;01H-320L;B1HBdsxe: ding Bt03 ndows Bot anager\"from 2,GPT,8B0E56B-28(-489C-83F-6AF437393(,0xFA0,0x3180)/EFIVKCr0S0Ft BotibotmgfwiefiBdsxe: starting Bot8003 \"Windows Bot Manage\" from MD2,PT,6B0E5B-62B(-4BC-883F-4F4B337393C,0xF400,0x31800)/EFIVMicro0ft <a href=\"http://Bootibootmgfw.fi\" rel=\"nofollow\">Bootibootmgfw.fi</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/YaakovZiv", 
        "name": "YaakovZiv", 
        "avatar": "https://cdn.v2ex.com/avatar/8f62/fb61/402022_large.png?m=1643079652"
      }, 
      "url": "https://www.v2ex.com/t/838492", 
      "title": "\u5173\u4e8e openstack \u7ec4\u4ef6\u7684\u6d41\u91cf\u8d70\u5411\u56fe\u67e5\u8be2\u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/838492", 
      "date_published": "2022-03-07T01:35:04+00:00", 
      "content_html": "<p>\u6211\u5728\u5b66\u4e60 openstack \u7684\u8fc7\u7a0b\u4e2d\uff0c\u770b\u5230\u5f88\u591a\u4e2d\u6587\u8d44\u6599\u91cc\u7ed9\u9664\u4e86\u5404\u7ec4\u4ef6\u7684\u6d41\u91cf\u56fe\uff0c\u6bd4\u5982 nova \u670d\u52a1\uff0c\u5f53\u7528\u6237\u53d1\u8d77\u8bf7\u6c42\uff0cnova \u7ec4\u4ef6\u4f1a\u4ea7\u751f\u600e\u6837\u7684\u6d41\u91cf\u8d70\u5411\uff0c\u7ecf\u8fc7 nova \u670d\u52a1\u5185\u7684\u54ea\u4e9b\u7ec4\u4ef6\u3002<br/>\n\u6211\u7684\u7591\u95ee\uff1a \u5728\u5b98\u65b9\u6587\u6863\u6216\u8005\u5176\u4ed6\u6e20\u9053\u662f\u600e\u6837\u7684\u67e5\u8be2\u601d\u8def\u67e5\u5230\u6807\u51c6\u7248\u7684\u6d41\u91cf\u56fe\uff0c\u6211\u4e0d\u77e5\u9053\u8be5\u600e\u4e48\u641c\u7d22\u3002\u80fd\u5426\u52b3\u70e6 v \u53cb\u6307\u70b9\u4e00\u4e0b\u6211\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/k8ser", 
        "name": "k8ser", 
        "avatar": "https://cdn.v2ex.com/avatar/2b8f/45e3/365710_large.png?m=1714964209"
      }, 
      "url": "https://www.v2ex.com/t/681041", 
      "title": "OpenStack Neutron \u7684\u5f00\u53d1\u8005\u4eec\uff0c\u4ed6\u4eec\u5199\u8fd9\u4e48\u7ed5\u7684\u903b\u8f91\u81ea\u5df1\u4e0d\u6655\u4e48\uff1f", 
      "id": "https://www.v2ex.com/t/681041", 
      "date_published": "2020-06-12T09:49:16+00:00", 
      "content_html": ""
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/lewin5", 
        "name": "lewin5", 
        "avatar": "https://cdn.v2ex.com/avatar/0a01/8319/409687_large.png?m=1559804485"
      }, 
      "url": "https://www.v2ex.com/t/628138", 
      "title": "\u60f3\u7528 openstack \u505a\u865a\u62df\u5316\uff0c\u54ea\u4e2a\u7248\u672c\u76f8\u5bf9\u6bd4\u8f83\u7a33\u5b9a\u70b9\uff1f", 
      "id": "https://www.v2ex.com/t/628138", 
      "date_published": "2019-12-11T12:58:12+00:00", 
      "content_html": ""
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/uyun", 
        "name": "uyun", 
        "avatar": "https://cdn.v2ex.com/avatar/1419/7a5b/230932_large.png?m=1552533610"
      }, 
      "url": "https://www.v2ex.com/t/590797", 
      "title": "\u4e00\u6587\u8bfb\u61c2 StarlingX", 
      "id": "https://www.v2ex.com/t/590797", 
      "date_published": "2019-08-10T12:46:59+00:00", 
      "content_html": "<p>StarlingX \u662f\u4ec0\u4e48\uff1f</p>\n<p>\u8bf4\u5230 StarlingX\uff0c\u8981\u5148\u8bf4\u4e24\u4e2a\u516c\u53f8\uff0c\uff08 Intel \uff09\u82f1\u7279\u5c14\u548c WindRiver \uff08\u98ce\u6cb3\uff09\u3002\u82f1\u7279\u5c14\u6211\u4eec\u90fd\u77e5\u9053\u662f\u7f8e\u56fd\u4e00\u5bb6\u4e3b\u8981\u4ee5\u7814\u5236 CPU \u5904\u7406\u5668\u7684\u516c\u53f8\uff0c\u662f\u5168\u7403\u6700\u5927\u7684\u4e2a\u4eba\u8ba1\u7b97\u673a\u96f6\u4ef6\u548c CPU \u5236\u9020\u5546\uff0c\u5b83\u6210\u7acb\u4e8e 1968 \u5e74\uff0c\u5177\u6709 50 \u5e74\u4ea7\u54c1\u521b\u65b0\u548c\u5e02\u573a\u9886\u5bfc\u7684\u5386\u53f2\u3002\u90a3\u4e48\u98ce\u6cb3\u662f\u5bb6\u4ec0\u4e48\u6837\u7684\u516c\u53f8\u5462\uff1f</p>\n<p>\u98ce\u6cb3\n\u98ce\u6cb3\u662f\u667a\u80fd\u4e92\u8054\u7cfb\u7edf\u8f6f\u4ef6\u7684\u5168\u7403\u9886\u5bfc\u8005\uff0c\u63d0\u4f9b\u5168\u9762\u7684\u8fb9\u7f18\u5230\u4e91\u8f6f\u4ef6\u4ea7\u54c1\u5957\u4ef6\uff0c\u65e8\u5728\u5e2e\u52a9\u5404\u5173\u952e\u57fa\u7840\u8bbe\u65bd\u516c\u53f8\u5e94\u5bf9\u7cfb\u7edf\u53d1\u5c55\u548c\u73b0\u4ee3\u5316\u8fc7\u7a0b\u4e2d\u9762\u4e34\u7684\u6311\u6218\u548c\u673a\u9047\uff0c\u6700\u5927\u9650\u5ea6\u5730\u5b9e\u73b0\u7269\u8054\u7f51\u7684\u4ef7\u503c\u3002\u548c\u82f9\u679c\u3001\u8c37\u6b4c\u4e00\u6837\uff0c\u98ce\u6cb3\u4e5f\u662f\u5728\u8f66\u5e93\u8d77\u5bb6\u3002</p>\n<p>1981 \u5e74\u52b3\u4f26\u65af\u4f2f\u514b\u5229\u56fd\u5bb6\u5b9e\u9a8c\u5ba4\u524d\u7814\u7a76\u5458 JerryFiddler \u5728\u52a0\u5229\u798f\u5c3c\u4e9a\u5dde\u4f2f\u514b\u5229\u5e02\u7684\u4e00\u4e2a\u8f66\u5e93\u91cc\u521b\u5efa\u4e86\u98ce\u6cb3\u516c\u53f8\u30021987 \u5e74\u98ce\u6cb3\u63a8\u51fa\u4e86 VxWorks\uff0c\u662f\u9996\u4e2a\u5177\u6709\u8de8\u8ba1\u7b97\u673a\u7f51\u7edc\u901a\u4fe1\u80fd\u529b\u7684\u5b9e\u65f6\u64cd\u4f5c\u7cfb\u7edf\uff08 RTOS \uff09\uff0cVxWorks \u4e5f\u662f\u76ee\u524d\u5e94\u7528\u6700\u5e7f\u6cdb\u7684 RTOS \uff08\u5b9e\u65f6\u64cd\u4f5c\u7cfb\u7edf\uff09\uff0cVxWorks \u5e73\u53f0\u7528\u9014\u5e7f\u6cdb\uff0c\u652f\u6301\u7f8e\u56fd\u56fd\u5bb6\u822a\u7a7a\u822a\u5929\u5c40\uff08 NASA \uff09\u7684\u597d\u5947\u53f7\u6f2b\u6e38\u8f66\u3001\u7f51\u7edc\u8bbe\u5907\u3001\u5de5\u5382\u673a\u5668\u4eba\u53ca\u5176\u4ed6\u8bb8\u591a\u7c7b\u578b\u7684\u5de5\u4e1a\u8bbe\u5907\u3002VxWorks \u8fd8\u7528\u5728\u4e0e\u6d88\u8d39\u8005\u63a5\u89e6\u7684\u786c\u4ef6\uff08\u6bd4\u5982\u533b\u7597\u8bbe\u5907\uff09\u4e2d\u30022009 \u5e74\uff0c\u98ce\u6cb3\u88ab\u82f1\u7279\u5c14\u6536\u8d2d\uff0c2018 \u5e74 4 \u6708\u82f1\u7279\u5c14\u53c8\u628a\u98ce\u6cb3\u5356\u7ed9\u4e86 TPGCapitalLP\u3002</p>\n<p>Titanium Cloud\n2014 \u5e74 6 \u6708\uff0c\u98ce\u6cb3\u516c\u53f8\u9488\u5bf9 WindRiver Carrier Grade Communications Server \u6210\u7acb\u4e86 TitaniumCloud \u751f\u6001\u7cfb\u7edf\u9879\u76ee\u3002\u8bbe\u8ba1\u76ee\u6807\u5c31\u662f\u8981\u6210\u4e3a\u7535\u4fe1\u7f51\u7edc\u5e94\u7528\u8f6f\u4ef6\u7406\u60f3\u7684\u4e91\u64cd\u4f5c\u7cfb\u7edf\u5e73\u53f0\uff0c\u4ee5\u6700\u9ad8\u7684\u53ef\u9760\u6027\u5730\u8fd0\u884c\u7f51\u7edc\u865a\u62df\u5316\u529f\u80fd\u3002\u901a\u8fc7\u672c\u9879\u76ee\uff0c\u98ce\u6cb3\u5c06\u4e0e\u5176\u5408\u4f5c\u4f19\u4f34\u9488\u5bf9 NFV (Network Functions Virtualization\uff0c\u7f51\u7edc\u529f\u80fd\u865a\u62df\u5316)\u57fa\u7840\u8bbe\u65bd\u90e8\u7f72\u63d0\u4f9b\u7ecf\u8fc7\u4f18\u5316\u4e14\u53ef\u4e92\u64cd\u4f5c\u7684\u786c\u4ef6\u548c\u8f6f\u4ef6\u89e3\u51b3\u65b9\u6848\uff0c\u4ee5\u52a0\u5feb\u670d\u52a1\u63d0\u4f9b\u5546\u4ee5\u53ca TEM (Telecom Equipment Manufacturers\uff0c\u7535\u4fe1\u8bbe\u5907\u5236\u9020\u5546) \u4ea7\u54c1\u4e0a\u5e02\u6b65\u4f10\u3002</p>\n<p>\u6b63\u5982\u9879\u76ee\u540d\u79f0 Titanium \u6240\u793a\uff0c\u98ce\u6cb3\u5408\u4f5c\u4f19\u4f34\u751f\u6001\u7cfb\u7edf\u5c06\u56f4\u7ed5\u7535\u4fe1\u7ea7\u901a\u4fe1\u670d\u52a1\u5668(Carrier Grade Communications Server)\u5e73\u53f0\u5efa\u7acb\u529f\u80fd\u5f3a\u5927\u7684\u89e3\u51b3\u65b9\u6848\u9635\u5bb9\u3002\u901a\u8fc7\u4e0e\u98ce\u6cb3\u516c\u53f8\u7684\u7535\u4fe1\u884c\u4e1a\u4e13\u5bb6\u5bc6\u5207\u5408\u4f5c\uff0cTitanium Cloud \u9879\u76ee\u5408\u4f5c\u4f19\u4f34\u5c06\u5bf9\u5176\u73b0\u6709\u6807\u51c6\u4ea7\u54c1\u8fdb\u884c\u4f18\u5316\uff0c\u4ee5\u4fbf\u66f4\u52a0\u5145\u5206\u5229\u7528 Wind River \u5e73\u53f0\u7684\u5168\u90e8\u529f\u80fd\u3002</p>\n<p>\u7535\u4fe1\u7ea7\u901a\u4fe1\u670d\u52a1\u5668\u662f\u4e00\u7ec4\u96c6\u6210\u5316\u3001\u652f\u6301 NFV \u57fa\u7840\u8bbe\u65bd\u8fbe\u5230\u7535\u4fe1\u7f51\u7edc\u6240\u8981\u6c42\u7684\u8fd0\u8425\u5546\u7ea7\u9ad8\u53ef\u9760\u6027\u8f6f\u4ef6\u3002\u4f20\u7edf\u7535\u4fe1\u7f51\u7edc\u7684\u53ef\u9760\u6027\u90fd\u5df2\u8fbe\u5230 6 \u4e2a 9 \u7684\u7ea7\u522b(99.9999%)\u6216\u6362\u7b97\u4e3a\u4e00\u5e74 30 \u79d2\u505c\u673a\u65f6\u95f4\uff0c\u800c\u57fa\u4e8e IT \u5e94\u7528\u7684\u4f01\u4e1a\u7ea7\u8f6f\u4ef6\u5e73\u53f0\u7684\u53ef\u9760\u6027\u5219\u901a\u5e38\u4ec5\u4e3a 3 \u4e2a 9(99.9%)\uff0c\u4e5f\u5c31\u662f\u6bcf\u5e74\u7ea6\u6709 9 \u4e2a\u5c0f\u65f6\u7684\u505c\u673a\u65f6\u95f4\uff0c\u8fd9\u4f1a\u9020\u6210\u4e25\u91cd\u7684\u6210\u672c\u548c\u6536\u5165\u635f\u5931\u3002\u7535\u4fe1\u7ea7\u901a\u4fe1\u670d\u52a1\u5668\u662f\u552f\u4e00\u80fd\u591f\u8ba9\u670d\u52a1\u63d0\u4f9b\u5546\u5411\u865a\u62df\u5316\u57fa\u7840\u8bbe\u65bd\u8fc7\u6e21\u540e\u4ecd\u80fd\u8fbe\u5230\u4fdd\u6301 6 \u4e2a 9 \u7ea7\u522b\u7684\u9ad8\u53ef\u9760\u6027\u5546\u7528\u7ea7\u7f51\u7edc\u529f\u80fd\u865a\u62df\u5316\u670d\u52a1\u5668\u89e3\u51b3\u65b9\u6848\uff0c\u5e76\u4fdd\u6301\u80fd\u591f\u6ee1\u8db3\u201c\u6c38\u4e0d\u505c\u673a\u201d\u7684\u8981\u6c42\u3002</p>\n<p>\u9664\u6b64\u4e4b\u5916\uff0c\u901a\u8fc7\u52a0\u901f\u865a\u62df\u7f51\u7edc\u529f\u80fd(VNF\uff0cVirtual Network Functions)\u7684\u6027\u80fd\uff0c\u63d0\u4f9b\u7b80\u5316\u7684\u865a\u62df\u7f51\u7edc\u529f\u80fd\u5b89\u88c5\u3001\u7ba1\u7406\u548c\u7ef4\u62a4\u6b65\u9aa4\u7684\u529f\u80fd\uff0c\u7535\u4fe1\u7ea7\u901a\u4fe1\u670d\u52a1\u5668\u652f\u6301\u5ba2\u6237\u5728\u7f51\u7edc\u4e2d\u9010\u6b65\u90e8\u7f72\u865a\u62df\u7f51\u7edc\u529f\u80fd\u65f6\uff0c\u6700\u5927\u7a0b\u5ea6\u5730\u964d\u4f4e\u8d44\u672c\u652f\u51fa (CAPEX)\u548c\u8fd0\u8425\u652f\u51fa (OPEX) \u3002</p>\n<p>\u98ce\u6cb3 Titanium Cloud \u6700\u521d\u6784\u5efa\u5728 OpenStack \u7b49\u5f00\u6e90\u7ec4\u4ef6\u4e0a, \u7136\u540e\u5bf9\u5176\u8fdb\u884c\u6269\u5c55\u548c\u52a0\u56fa, \u4ee5\u6ee1\u8db3\u5173\u952e\u7684\u57fa\u7840\u8bbe\u65bd\u9700\u6c42, \u5305\u62ec: \u9ad8\u53ef\u7528\u6027\u3001\u6545\u969c\u7ba1\u7406\u548c\u6027\u80fd\u7ba1\u7406\uff0c\u53ef\u7528\u4e8e NFV \u7535\u4fe1\u4e91\u3001\u8fb9\u7f18\u4e91\u3001\u5de5\u4e1a\u7269\u8054\u7f51\u7b49\u573a\u666f\u3002</p>\n<p>StarlingX\n\u4eca\u5929\u8bf4\u7684 StarlingX \u9879\u76ee\u5c31\u662f\u57fa\u4e8e WindRiver \u7684\u4ea7\u54c1 Titanimu Cloud R5 \u7248\u672c\u57fa\u7840\u4e0a\u4fee\u6539\u800c\u6765\u30022018 \u5e74 5 \u6708, Intel \u548c\u98ce\u6cb3\u5ba3\u5e03\u5c06\u5176\u7535\u4fe1\u4e91 /\u8fb9\u7f18\u4e91\u7684\u5546\u4e1a\u4ea7\u54c1 TitaniumCloud \u4e2d\u7684\u90e8\u5206\u7ec4\u4ef6\u5f00\u6e90, \u547d\u540d\u4e3a StarlingX, \u5e76\u63d0\u4ea4\u7ed9 OpenStack Foundation \u7ba1\u7406\u3002</p>\n<p>2018 \u5e74 10 \u6708\uff0cOpenStack \u793e\u533a\u53d1\u5e03\u4e86 StarlingX \u9996\u4e2a\u7248\u672c\uff0c\u6700\u521d\u7684 starlingX \u4e3b\u8981\u662f\u901a\u8fc7 6 \u5927\u7ec4\u4ef6\uff0c\u6765\u5b8c\u6210\u5bf9 Openstack \u7684\u5b89\u88c5\u90e8\u7f72\uff0c\u76d1\u63a7\u7ba1\u7406\u7b49\u3002</p>\n<p>\u670d\u52a1\u7ba1\u7406\uff08 Service Management \uff09\u2014\u2014 stx-ha</p>\n<p>\u4ece\u540d\u5b57\u53ef\u4ee5\u770b\u51fa\uff0c\u5c31\u662f\u7528\u6765\u505a\u7cfb\u7edf\u53ef\u9760\u6027\u6027\u7684\u7b80\u79f0\uff08 SM \uff09\u3002</p>\n<p><a href=\"http://1.SM\" rel=\"nofollow\">1.SM</a> \u5bf9 kenrel \u4e2d\u7684\u8fdb\u7a0b\u8c03\u5ea6\u8fdb\u884c\u6269\u5c55\uff0c\u589e\u52a0\u4e86\u4fe1\u53f7\u91cf\uff0c\u4ece\u800c\u53ef\u4ee5\u7b2c\u4e00\u65f6\u95f4\u83b7\u53d6\u5230\u76d1\u63a7\u7684\u8fdb\u7a0b\u6b7b\u4ea1\u7684\u4fe1\u53f7\uff0c\u4ece\u800c\u89e6\u53d1\u8fdb\u7a0b\u91cd\u65b0\u62c9\u8d77\u7684\u5de5\u4f5c\u3002</p>\n<p><a href=\"http://2.SM\" rel=\"nofollow\">2.SM</a> \u590d\u7528\u4e86 pacemaker \u4e2d ocf \u811a\u672c\uff0c\u53ef\u4ee5\u7528\u5b83\u6765\u505a\u670d\u52a1\u7684\u62c9\u8d77\u3002\u8fd9\u91cc\u4e3b\u8981\u662f\u5bf9 floating IP\uff0cnfs \u7b49\u8d44\u6e90\u7684\u76d1\u63a7</p>\n<p><a href=\"http://3.SM\" rel=\"nofollow\">3.SM</a> \u4e5f\u4f7f\u7528\u4e86 init.d \u7684\u811a\u672c\uff0c\u6765\u5bf9 openstack \u4ee5\u53ca\u5176\u4ed6\u7ec4\u4ef6\u7684\u670d\u52a1\u8fdb\u884c\u62c9\u8d77\u52a8\u4f5c\u3002</p>\n<p>\u56e0\u6b64\uff0c\u5728 StarlingX \u5e73\u53f0\u4e0a\u542f\u52a8 /\u505c\u6b62\u76f8\u5173\u670d\u52a1\uff0c\u8981\u4f7f\u7528 sm-restart/sm-unmanager \u7b49\u547d\u4ee4\u6765\u8fdb\u884c\u3002</p>\n<p>\u6545\u969c\u7ba1\u7406\uff08 Fault Managerment \uff09\u2014\u2014 stx-fault</p>\n<p>\u8be5\u6a21\u5757\u5c31\u662f\u7528\u6765\u505a\u4e8b\u4ef6\u544a\u8b66\u6536\u96c6\u7684\u6a21\u5757\uff0c\u7b80\u79f0\uff08 FM \uff09</p>\n<p>\u5176\u4ed6\u6a21\u5757\u901a\u8fc7 fm-api \u6765\u76f4\u63a5\u53d1\u9001\u544a\u8b66\u6216\u8005\u4e8b\u4ef6\u4fe1\u606f\u7ed9 fm-manager</p>\n<p>\u8f6f\u4ef6\u7ba1\u7406\uff08 Software Managerment \uff09\u2014\u2014 stx-update</p>\n<p>\u8be5\u6a21\u5757\u4e3b\u8981\u63d0\u4f9b\u4e86\u5728 StarlingX\uff0c\u5982\u4f55\u5236\u4f5c patch \u7684\u5de5\u5177\uff0c\u540c\u65f6\u4e5f\u6709 patch \u7684\u670d\u52a1\uff0c\u7528\u6765\u7ba1\u7406\u5347\u7ea7 /\u964d\u7ea7\u7b49\u529f\u80fd\u3002</p>\n<p>\u57fa\u7840\u7ba1\u7406\uff08 Bare Metal Managerment \uff09\u2014\u2014 stx-metal</p>\n<p>\u8be5\u6a21\u5757\u662f StarlingX \u4e2d\u6bd4\u8f83\u91cd\u8981\u7684\u4e00\u90e8\u5206\u3002\u6574\u4e2a\u5e73\u53f0\u7684\u6709\u673a\u7ed3\u5408\u90fd\u662f\u9760\u5b83\u3002</p>\n<p>\u8be5\u5de5\u7a0b\u662f\u4ece WindRiver \u81ea\u5df1\u7684 MTCE \u5e73\u53f0\u5f00\u6e90\u800c\u6765\u3002</p>\n<ol>\n<li>\n<p>\u63d0\u4f9b\u4e86 rmon \u5bf9\u8d44\u6e90\u8fdb\u884c\u76d1\u63a7\uff0c\u6bd4\u5982 cpu/memory \u7b49\u3002</p>\n</li>\n<li>\n<p>\u63d0\u4f9b\u4e86 pmon \u5bf9\u8fdb\u7a0b\u8fdb\u6027\u76d1\u63a7\u3002\u8fd9\u4e2a\u6a21\u5757\u7684\u76d1\u63a7\u548c sm \u662f\u6709\u533a\u522b\u7684\u3002SM \u4e3b\u8981\u7ba1\u7406 Openstack \u6574\u4e2a\u670d\u52a1\u53ca\u76f8\u5173\u8d44\u6e90\u3002pmon \u53ea\u7ba1\u7406\u57fa\u7840\u8fdb\u7a0b\uff0c\u6bd4\u5982 ssh \u7b49\u7b49\u3002</p>\n</li>\n</ol>\n<p>\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff0c\u5728 StarlingX \u4e2d\u7684\u8ba1\u7b97\u8282\u70b9\u662f\u4e0d\u5b89\u88c5 SM \u670d\u52a1\u7684\uff0c\u6240\u4ee5 nova-compute \u7b49\u670d\u52a1\uff0c\u4e5f\u662f\u7531 pmon \u6765\u76d1\u63a7\u3002</p>\n<ol>\n<li>\n<p>hbs \u670d\u52a1\uff0c\u5bf9\u6574\u4e2a\u5e73\u53f0\u63d0\u4f9b\u4e86\u5fc3\u8df3\u68c0\u6d4b\u670d\u52a1\u3002</p>\n</li>\n<li>\n<p>hwmond \u670d\u52a1\uff0c\u63d0\u4f9b\u4e86\u5bf9\u670d\u52a1\u5668 BMC \u7684\u670d\u52a1\u3002</p>\n</li>\n<li>\n<p>Mtc \u670d\u52a1\uff0c\u603b\u7ba1 MTCE \u5e73\u53f0\u5176\u4ed6\u670d\u52a1\u6a21\u5757\uff0c\u5bf9\u5916\u63d0\u4f9b\u63a5\u53e3\u3002</p>\n</li>\n</ol>\n<p>\u5e73\u53f0\u8c03\u5ea6\uff08 Platform Orchestration \uff09\u2014\u2014 stx-nfv</p>\n<p>\u4ece\u540d\u5b57\u6765\u770b\u5c31\u53ef\u4ee5\u770b\u5230\uff0c\u8fd9\u4e2a\u6a21\u5757\u662f\u5728 NFV \u573a\u666f\u4e0b\u6765\u4e30\u5bcc openstack \u529f\u80fd\u7684\u7ec4\u4ef6\u3002</p>\n<ol>\n<li>\n<p>\u63d0\u4f9b\u4e86 nova-api-proxy \u7684\u6a21\u5757\uff0c\u76f4\u63a5\u76d1\u542c\u4e86 nova \u7684 8774 \u7aef\u53e3\u6765\u62e6\u622a nova \u7684\u8bf7\u6c42\uff0c\u7136\u540e\u5c06\u4e00\u4e9b\u9700\u8981\u5904\u7406\u7684\u8bf7\u6c42\u53d1\u9001\u7ed9 VIM \u6a21\u5757\u3002\u5176\u4ed6\u900f\u4f20\u7ed9 nova\u3002</p>\n</li>\n<li>\n<p>Nfv-vim \u6a21\u5757\uff0c\u7528\u6765\u505a\u4e00\u4e9b NFV \u573a\u666f\u4e0b\u903b\u8f91\u5904\u7406\u529f\u80fd\uff0c\u4f8b\u5982 VM \u7684 HA \u529f\u80fd\u3002</p>\n</li>\n<li>\n<p>Guest-server \u6a21\u5757\u3002\u8fd9\u4e2a\u6a21\u5757\u7528\u6765\u63d0\u4f9b\u4e86\u4e00\u5957 api \u53ca\u673a\u5236\uff0c\u901a\u8fc7\u5728\u865a\u62df\u673a\u4e2d\u5b89\u88c5 agent\uff0c\u8fbe\u5230\u4ece\u5e73\u53f0\u4fa7\u83b7\u53d6\u865a\u62df\u673a\u5fc3\u8df3\u7b49\u529f\u80fd\u3002</p>\n</li>\n</ol>\n<p>\u914d\u7f6e\u7ba1\u7406\uff08 Configuration Managerment \uff09\u2014\u2014 stx-config</p>\n<p>\u8be5\u6a21\u5757\u7528\u6765\u5bf9 StarlingX \u4e2d\u7684\u7ec4\u4ef6\u4ee5\u53ca openstack \u670d\u52a1\u8fdb\u884c\u5b89\u88c5\u914d\u7f6e\u7684\u3002</p>\n<ol>\n<li>sysinv \u670d\u52a1\u63d0\u4f9b\u6574\u4e2a\u8f6f\u4ef6\u7684\u72b6\u6001\u7ba1\u7406\uff0c\u914d\u7f6e\u7684\u4fee\u6539\u7b49\u3002</li>\n</ol>\n<p>2.Controllerconfig/computeconfig \u7b49\u63d0\u4f9b\u4e86\u6839\u636e\u89d2\u8272\u6765\u8fdb\u884c\u914d\u7f6e\u7684\u8bbe\u7f6e\u3002</p>\n<p>\u6bcf\u4e00\u6b21\u542f\u52a8\u65f6\u5019\u8fd9\u7c7b\u670d\u52a1\u90fd\u4f1a\u91cd\u65b0\u6267\u884c\u3002\u6765\u4fdd\u8bc1\u7cfb\u7edf\u5728\u91cd\u542f\u540e\u80fd\u6062\u590d\u5230\u6b63\u5e38\u914d\u7f6e\u3002</p>\n<p>StarlingX \u5b89\u88c5\u65b9\u6cd5\n\u4ee5 Ubuntu 16.04 LTS 64-bit \u4e3a\u4f8b:</p>\n<p>\uff08 1 \uff09 \u66f4\u65b0\u64cd\u4f5c\u7cfb\u7edf 1. #sudo apt-get update</p>\n<p>\uff08 2 \uff09\u5b89\u88c5 stx-tools \u5de5\u5177\u9879\u76ee 1. #cd $home2. #git clone git://<a href=\"http://git.openstack.org/openstack/stx-tools\" rel=\"nofollow\">git.openstack.org/openstack/stx-tools</a></p>\n<p>\uff08 3 \uff09\u5b89\u88c5\u4f9d\u8d56\u5305 1. #cd $HOME/stx-tools/deployment/libvirt/2. #bash <a href=\"http://install_packages.sh\" rel=\"nofollow\">install_packages.sh</a></p>\n<p>\uff08 4 \uff09\u5236\u4f5c StarlingX \u7684 ISO \u955c\u50cf\u53ef\u53c2\u8003 <a href=\"https://wiki.openstack.org/wiki/StarlingX/Developer_Guide\" rel=\"nofollow\">https://wiki.openstack.org/wiki/StarlingX/Developer_Guide</a> \u8fdb\u884c\u955c\u50cf\u5236\u4f5c\u3002\u6ce8\u610f:\u00b7 \u4e0b\u8f7d\u4f9d\u8d56\u5305\u65f6, \u7531\u4e8e\u4f17\u6240\u5468\u77e5\u7684\u539f\u56e0, \u56fd\u5185\u8bbf\u95ee\u6709\u95ee\u9898, \u6240\u4ee5\u6700\u597d\u8bbe\u7f6e http \u4ee3\u7406\u4e0b\u8f7d, \u6216\u8005\u4f7f\u7528\u56fd\u5916\u865a\u62df\u673a\u4e0a\u8fdb\u884c\u955c\u50cf\u5236\u4f5c\u3002\u00b7 \u901a\u8fc7\u6e90\u7801\u7f16\u8bd1\u3001\u6253\u5305\u6210 RPM \u5305, \u8fd9\u4e2a\u8fc7\u7a0b\u5f88\u957f, \u7b14\u8005\u7684\u865a\u62df\u673a\u4e0a\u8dd1\u4e86\u7ea6 12 \u4e2a\u5c0f\u65f6, \u8bf7\u8010\u5fc3\u7b49\u5f85\u00b7 \u7f16\u8bd1\u5404 RPM \u6e90\u4ee3\u7801\u65f6\u4f7f\u7528\u4e86 linux \u7684 mock \u9694\u79bb\u73af\u5883, \u5176 log \u4f4d\u7f6e\u5728 /localdisk/loadbuild/user/starlingx/std/results/user-starlingx-tis-r5-pike-std/XXX \u5305\u540d /build.log\u00b7 \u5982\u679c\u78b0\u5230\u62a5\u9519:ERROR:Command failed: 09:08:15 # mount -n -t tmpfs -o mode=0755 -onr_inodes=0 -o size=5g mock_chroot_tmpfs/localdisk/loadbuild/user/starlingx/std/mock/b1/root \u53ef\u4ee5\u5c1d\u8bd5\u4fee\u6539\uff1a/usr/lib/python2.7/site-packages/mockbuild/plugins/tmpfs.pyself.optArgs +=['-o', 'nr_inodes=500000]</p>\n<p>\uff08 5 \uff09\u590d\u5236\u955c\u50cf\u5230 bootimage.iso1. #cp <starlingx image=\"\" iso=\"\"> $HOME/stx-tools/deployment/libvirt/bootimage.iso</starlingx></p>\n<p>\uff08 6 \uff09\u5173\u95ed\u9632\u706b\u5899 1. #sudo ufw disable2. Firewall stopped and disabled on system startup3. #sudo ufw status4. Status: inactive</p>\n<p>\uff08 7 \uff09\u901a\u8fc7 ISO \u955c\u50cf\u542f\u52a8, \u5e76\u6309\u7167\u63d0\u793a\u8fdb\u884c\u5b89\u88c5 StarlingX, \u8be6\u60c5\u8bf7\u53c2\u8003:<a href=\"https://wiki.openstack.org/wiki/StarlingX/Installation_Guide_Virtual_Environment/Simplex\" rel=\"nofollow\">https://wiki.openstack.org/wiki/StarlingX/Installation_Guide_Virtual_Environment/Simplex</a></p>\n<p>StarlingX \u5e73\u53f0\u662f\u4e00\u4e2a\u5b8c\u6574\u3001\u9ad8\u53ef\u9760\u3001\u53ef\u6269\u5c55\u7684\u8fb9\u7f18\u4e91\u8f6f\u4ef6\u5806\u6808\uff0c\u5b83\u5c06\u65b0\u670d\u52a1\u4e0e\u8bb8\u591a\u5176\u4ed6\u5f00\u6e90\u9879\u76ee\u7ed3\u5408\u5230\u4e00\u4e2a\u6574\u4f53\u8fb9\u7f18\u4e91\u8f6f\u4ef6\u5806\u6808\u4e2d\uff0c\u4e3a\u8fb9\u7f18\u8ba1\u7b97\u3001\u5de5\u4e1a\u7269\u8054\u7f51\u548c\u7535\u4fe1\u5e94\u7528\u6784\u5efa\u4e00\u4e2a\u6709\u5f39\u6027\u7684\u8fb9\u7f18\u4e91\u57fa\u7840\u8bbe\u65bd\u3002StarlingX \u4e0d\u662f OpenStack \u5b50\u9879\u76ee\u3002\u5b83\u672c\u8eab\u5c31\u662f\u4e00\u4e2a\u5b8c\u6574\u7684\u9879\u76ee\u3002\u540c\u65f6\uff0c\u5b83\u4f7f\u7528\u4e86\u8bb8\u591a OpenStack \u670d\u52a1\u6765\u63d0\u4f9b\u6838\u5fc3\u7684\u8ba1\u7b97\u3001\u5b58\u50a8\u548c\u7f51\u7edc\u529f\u80fd\u3002StarlingX \u7684\u5f00\u6e90\u4e5f\u662f\u54cd\u5e94\u4e86 Akraino \u9879\u76ee\u3002</p>\n<p>Akraino Edge Stack \u662f Linux \u57fa\u91d1\u4f1a\u65d7\u4e0b\u7684\u4e00\u4e2a\u9879\u76ee\uff0c\u5b83\u5f00\u53d1\u4e86\u4e00\u5957\u5f00\u6e90\u8f6f\u4ef6\u5806\u6808\uff0c\u652f\u6301\u9488\u5bf9\u8fb9\u7f18\u8ba1\u7b97\u7cfb\u7edf\u548c\u5e94\u7528\u8f6f\u4ef6\u4f18\u5316\u7684\u9ad8\u53ef\u7528\u6027\u4e91\u670d\u52a1\uff0c18 \u5e74 8 \u6708\u5ba3\u5e03\u4ece\u6210\u7acb\u9636\u6bb5\u8fdb\u5165\u5230\u6267\u884c\u9636\u6bb5\u3002Akraino Edge Stack \u65e8\u5728\u4e3a\u4f01\u4e1a\u8fb9\u7f18\u3001OTT \uff08 Over the Top \uff09\u8fb9\u7f18\u548c\u8fd0\u8425\u5546\u8fb9\u7f18\u7f51\u7edc\u6539\u5584\u8fb9\u7f18\u4e91\u57fa\u7840\u8bbe\u65bd\u7684\u72b6\u51b5\u3002\u5b83\u5c06\u4e3a\u7528\u6237\u63d0\u4f9b\u65b0\u7684\u7075\u6d3b\u6027\uff0c\u4ee5\u4fbf\u5feb\u901f\u6269\u5c55\u8fb9\u7f18\u4e91\u670d\u52a1\uff0c\u6700\u5927\u9650\u5ea6\u5730\u5229\u7528\u8fb9\u7f18\u5904\u652f\u6301\u7684\u5e94\u7528\u7a0b\u5e8f\u548c\u529f\u80fd\uff0c\u5e76\u6709\u52a9\u4e8e\u4e3a\u5fc5\u987b\u59cb\u7ec8\u8fd0\u884c\u7684\u7cfb\u7edf\u786e\u4fdd\u53ef\u9760\u6027\u3002</p>\n<p>StarlingX \u672a\u6765\u5c06\u4f1a\u671d\u7740\u5bb9\u5668\u5316\u65b9\u5411\u53d1\u5c55, \u5c06\u4f1a\u628a openstack \u7b49\u7ec4\u4ef6\u505a\u5728\u5bb9\u5668\u4e2d, \u5e76\u53ef\u4f7f\u7528 K8S \u6765\u7ba1\u7406\u3002\u4ece\u529f\u80fd\u4e0a\u6765\u770b, StarlingX \u5728\u7cfb\u7edf HA\u3001\u6027\u80fd\u8c03\u4f18\u3001\u8f6f\u4ef6\u7ba1\u7406\u3001\u6545\u969c\u76d1\u63a7\u65b9\u9762\u6709\u5f88\u597d\u7684\u53c2\u8003\u4ef7\u503c, \u5f88\u9002\u5408 OpenStack \u5f00\u53d1\u4eba\u5458\u7814\u7a76\u3002</p>\n<p>\u5c0f\u5f69\u86cb: StarlingX \u7684\u7b2c\u4e8c\u4e2a\u7248\u672c\u5c06\u5728\u4eca\u5e74\u7b2c\u4e09\u5b63\u5ea6\u63a8\u51fa\uff01</p>\n<p>\u53c2\u8003\u6587\u732e</p>\n<p>1.OpenStack StarlingX \u7ec4\u4ef6\u8be6\u89e3\uff0c</p>\n<p>\u4f5c\u8005\uff1a\u5f00\u6e90\u4e91\u4e2d\u6587\u793e\u533a</p>\n<p>2.\u6d45\u8c08\u9ad8\u6027\u80fd\u8fb9\u7f18\u4e91\u8f6f\u4ef6\u5806\u6808 StarlingX\uff0c</p>\n<p>\u4f5c\u8005\uff1asteve</p>\n<p>3.\u7535\u4fe1\u4e91 /\u8fb9\u7f18\u4e91\u865a\u62df\u5c42\u8f6f\u4ef6 StarlingX \u4ecb\u7ecd\uff0c</p>\n<p>\u4f5c\u8005\uff1a\u8d75\u6021</p>\n<p>4.\u5f00\u6e90\u8fb9\u7f18\u8ba1\u7b97\u9879\u76ee\uff1a\u8ba9\u4f60\u771f\u6b63\u660e\u767d\u4ec0\u4e48\u662f StarlingX\uff0c</p>\n<p>\u4f5c\u8005\uff1a\u8096\u4e01</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/hellowang", 
        "name": "hellowang", 
        "avatar": "https://cdn.v2ex.com/gravatar/4e34ebbe7fd2f1b5eaf783e4e8e39b25?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/566199", 
      "title": "\u627e\u4e00\u4e2a\u719f\u6089 openstack \u7684\u505a\u6709\u507f\u6280\u672f\u987e\u95ee", 
      "id": "https://www.v2ex.com/t/566199", 
      "date_published": "2019-05-21T06:15:59+00:00", 
      "content_html": "<p>\u9700\u8981\u4e00\u4e2a\u6280\u672f\u987e\u95ee\uff0c\u6709\u5174\u8da3\u7684\u53ef\u4ee5\u8be6\u804a\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/leorealman", 
        "name": "leorealman", 
        "avatar": "https://cdn.v2ex.com/gravatar/27a4aa557858a0edd49823791a521288?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/556452", 
      "title": "OpenStack Swift \u590d\u5236\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/556452", 
      "date_published": "2019-04-18T08:05:27+00:00", 
      "content_html": "<p>\u73b0\u6709\u96c6\u7fa4\u5982\u4e0b\uff0c\u5927\u91cf\u51e0\u767e TB \u7684\u603b\u5bb9\u91cf\nproxy\nstorageNode1\nstorageNode2\nstorageNode3</p>\n<p>\u6211\u60f3\u5b9e\u73b0\u4e1a\u52a1\u7f51\u7edc\u548c\u590d\u5236\u7f51\u7edc\u7684\u9694\u79bb\uff0c\u6c42\u914d\u7f6e\u601d\u8def\uff1f\u770b\u4e86\u597d\u591a\u6587\u7ae0\u6709\u70b9\u61f5\u4e86\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/firejoke", 
        "name": "firejoke", 
        "avatar": "https://cdn.v2ex.com/avatar/a098/a71b/77871_large.png?m=1636019138"
      }, 
      "url": "https://www.v2ex.com/t/520514", 
      "date_modified": "2018-12-24T08:24:45+00:00", 
      "content_html": "<p>\u5b98\u65b9\u6587\u6863<a href=\"https://docs.openstack.org/glance/rocky/admin/multistores.html#scope-of-this-document\" rel=\"nofollow\">Multi Store Support</a></p>\n<p>\u5b98\u65b9\u8bf4\u5728 rocky \u7248\u672c\u662f\u4f5c\u4e3a\u5b9e\u9a8c\u529f\u80fd\u5f15\u5165,</p>\n<p>\u53c2\u8003\u540e\u7684\u914d\u7f6e(/etc/glance/glance-api.conf)</p>\n<pre><code>[DEFAULT]\n...\nenabled_backends = reliable:file, fast:rbd\n...\n\n[glance_store]\ndefault_backend = reliable\n\n[reliable]\nfilesystem_store_datadir = /opt/stack/data/glance/images/\nstore_description = \"Reliable filesystem backend\"\n\n[fast]\nstore_description = \"Fast rbd backend\"\nrbd_store_pool = images\nrbd_store_user = glance\nrbd_store_ceph_conf = /etc/ceph/ceph.conf\nrbd_store_chunk_size = 8\nrados_connect_timeout = 0\n\n[os_staging]\nfilesystem_store_datadir = /opt/stack/data/glance/os_staging/\nstore_description = \"Filesystem store for staging purpose\"\n</code></pre>\n<p>\u6e90\u7801\u5185\u5224\u65ad\u540e\u7aef\u5b58\u50a8\u4f4d\u7f6e\u7684\u4ee3\u7801(glance/glance/api/v2/<a href=\"http://image_data.py\" rel=\"nofollow\">image_data.py</a> class ImageDataController)</p>\n<pre><code>...\n...\n    @utils.mutating\n    def upload(self, req, image_id, data, size):\n        backend = None\n        if CONF.enabled_backends:\n            backend = req.headers.get('x-image-meta-store',\n                                      CONF.glance_store.default_backend)\n\n            try:\n                LOG.debug(\" = = = = = = backend: %s = = = = = = \" % backend)\n                glance_store.get_store_from_store_identifier(backend)\n                LOG.debug(\"glance_store.backend %s\" % glance_store.backend)\n            except glance_store.UnknownScheme as exc:\n                raise webob.exc.HTTPBadRequest(explanation=exc.msg,\n                                               request=req,\n                                               content_type='text/plain')\n\n        image_repo = self.gateway.get_repo(req.context)\n        image = None\n        refresher = None\n        cxt = req.context\n        try:\n            self.policy.enforce(cxt, 'upload_image', {})\n            image = image_repo.get(image_id)\n            image.status = 'saving'\n            try:\n                if CONF.data_api == 'glance.db.registry.api':\n                    # create a trust if backend is registry\n                    try:\n                        # request user plugin for current token\n                        user_plugin = req.environ.get('keystone.token_auth')\n                        roles = []\n                        # use roles from request environment because they\n                        # are not transformed to lower-case unlike cxt.roles\n                        for role_info in req.environ.get(\n                                'keystone.token_info')['token']['roles']:\n                            roles.append(role_info['name'])\n                        refresher = trust_auth.TokenRefresher(user_plugin,\n                                                              cxt.tenant,\n                                                              roles)\n                    except Exception as e:\n                        LOG.info(_LI(\"Unable to create trust: %s \"\n                                     \"Use the existing user token.\"),\n                                 encodeutils.exception_to_unicode(e))\n\n                image_repo.save(image, from_state='queued')\n                image.set_data(data, size, backend=backend)\n\n                try:\n                    image_repo.save(image, from_state='saving')\n                except exception.NotAuthenticated:\n                    if refresher is not None:\n                        # request a new token to update an image in database\n                        cxt.auth_token = refresher.refresh_token()\n                        image_repo = self.gateway.get_repo(req.context)\n                        image_repo.save(image, from_state='saving')\n                    else:\n                        raise\n\n                try:\n                    # release resources required for re-auth\n                    if refresher is not None:\n                        refresher.release_resources()\n                except Exception as e:\n                    LOG.info(_LI(\"Unable to delete trust %(trust)s: %(msg)s\"),\n                             {\"trust\": refresher.trust_id,\n                              \"msg\": encodeutils.exception_to_unicode(e)})\n...\n...\n</code></pre>\n<p>\u76ee\u524d\u8bf7\u6c42\u5934\u5e76\u6ca1\u6709 x-image-meta-store \u5c5e\u6027,\u76f4\u63a5\u6309\u9ed8\u8ba4\u7684 reliable \u540e\u7aef\u914d\u7f6e\u6765</p>\n<p>\u76f8\u5173\u65e5\u5fd7:</p>\n<pre><code>12 \u6708 24 15:59:25 controller devstack@g-api.service[6524]: DEBUG glance.api.v2.image_data [None req-081110c4-8d29-4567-a4fb-bbbc7313efbf alt_demo admin]  = = = = = = backend: reliable = = = = = =  {{(pid=6527) upload /opt/stack/glance/glance/api/v2/image_data.py:127}}\n12 \u6708 24 15:59:25 controller devstack@g-api.service[6524]: DEBUG glance.api.v2.image_data [None req-081110c4-8d29-4567-a4fb-bbbc7313efbf alt_demo admin] glance_store.backend &lt;module 'glance_store.backend' from '/usr/lib/python2.7/site-packages/glance_store/backend.pyc'&gt; {{(pid=6527) upload /opt/stack/glance/glance/api/v2/image_data.py:129}}\n......\n12 \u6708 24 15:59:26 controller devstack@g-api.service[6524]: DEBUG glance_store._drivers.filesystem [None req-081110c4-8d29-4567-a4fb-bbbc7313efbf alt_demo admin] Wrote 0 bytes to /opt/stack/data/glance/images/9da337be-bb04-43af-ac1d-b9e5a15a0c70 with checksum d41d8cd98f00b204e9800998ecf8427e and multihash cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e {{(pid=6527) add /usr/lib/python2.7/site-packages/glance_store/_drivers/filesystem.py:728}}\n12 \u6708 24 15:59:27 controller devstack@g-api.service[6524]: DEBUG glance_store.multi_backend [None req-081110c4-8d29-4567-a4fb-bbbc7313efbf alt_demo admin] Skipping store.set_acls... not implemented {{(pid=6527) set_acls_for_multi_store /usr/lib/python2.7/site-packages/glance_store/multi_backend.py:439}}\n......\n</code></pre>\n<p>\u5728 http \u4e0a\u4f20\u7f13\u5b58\u76ee\u5f55\u80fd\u627e\u5230\u4e0a\u4f20\u6210\u529f\u7684\u6587\u4ef6,\u4f46\u5728\u4ece\u7f13\u5b58\u76ee\u5f55\u5199\u5165\u5230 image \u76ee\u5f55\u65f6,\u4f46\u5199\u5165\u6570\u636e\u5c31\u53d8\u6210\u4e86 Wrote 0 bytes</p>\n<p>\u53ef\u80fd\u662f\u6700\u8fd1\u6bd4\u8f83\u6d6e\u8e81</p>\n<p>\u4e00\u76f4\u8dd1\u6d41\u7a0b\u4e5f\u8fd8\u662f\u627e\u4e0d\u5230\u4e3a\u4ec0\u4e48</p>\n<p>\u8bf7\u6c42\u80fd\u6709\u5927\u5927\u6307\u70b9\u4e00\u4e8c</p>\n", 
      "date_published": "2018-12-24T08:23:29+00:00", 
      "title": "openstack rocky \u7248\u672c \u591a\u540e\u7aef\u5b58\u50a8\u652f\u6301 \u4fdd\u5b58\u955c\u50cf\u5931\u8d25", 
      "id": "https://www.v2ex.com/t/520514"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/firejoke", 
        "name": "firejoke", 
        "avatar": "https://cdn.v2ex.com/avatar/a098/a71b/77871_large.png?m=1636019138"
      }, 
      "url": "https://www.v2ex.com/t/506252", 
      "title": "centos7 \u4e24\u884c\u547d\u4ee4\u5feb\u901f\u90e8\u7f72 ceph \u591a\u8282\u70b9 (devstack \u6302\u670d\u52a1)", 
      "id": "https://www.v2ex.com/t/506252", 
      "date_published": "2018-11-09T11:25:25+00:00", 
      "content_html": "<h2>install</h2>\n<p><code>yum install ceph-deploy</code></p>\n<p><code>ceph-deploy install --release jewel --repo-url <a href=\"http://mirrors.aliyun.com/ceph/rpm-jewel/el7/\" rel=\"nofollow\">http://mirrors.aliyun.com/ceph/rpm-jewel/el7/</a> --gpg-url <a href=\"http://mirrors.aliyun.com/ceph/keys/release.asc\" rel=\"nofollow\">http://mirrors.aliyun.com/ceph/keys/release.asc</a> ceph01 ceph02 ceph03...</code></p>\n<p>--release \u5bf9\u5e94\u7248\u672c<br>\n--repo-url \u5bf9\u5e94\u7248\u672c\u7684\u955c\u50cf\u6e90<br>\n--gpg-url \u5bf9\u5e94\u7684 keys<br>\n\u4f1a\u5728\u8282\u70b9\u751f\u6210\u5bf9\u5e94\u7684\u7248\u672c\u955c\u50cf yum \u6e90<br>\n\u4f46\u4e2d\u9014\u5931\u8d25\u7684\u91cd\u88c5\u7684\u65f6\u5019\u6700\u597d\u628a\u8fd9\u4e2a\u6e90\u5220\u6389</p>\n<h2>devstack \u6302\u670d\u52a1</h2>\n<p>\u4e0d\u77e5\u4e3a\u4f55\u5728 devstack \u73af\u5883\u521b\u5efa\u4e86 mon \u540e,\u4e00\u4e0b\u6302\u4e86\u597d\u51e0\u4e2a devstack \u670d\u52a1<br>\n\u60f3\u6c42\u4e2a\u4e00\u77e5\u534a\u89e3</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/icanfly", 
        "name": "icanfly", 
        "avatar": "https://cdn.v2ex.com/gravatar/e70a16dedbe59f5942c5b3e62390f971?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/395835", 
      "title": "Centos Openstack Liberty \u5355\u7f51\u5361\u914d\u7f6e", 
      "id": "https://www.v2ex.com/t/395835", 
      "date_published": "2017-10-07T13:12:27+00:00", 
      "content_html": "<p>\u5404\u4f4d\u5927\u4f6c\uff0c\u6700\u8fd1\u6709\u4e2a\u9879\u76ee\uff0c\u5ba2\u6237\u90a3\u8fb9\u7684\u73af\u5883\u867d\u7136\u662f\u4e24\u5f20\u7f51\u5361\uff0c\u4f46\u662f\u4e24\u5f20\u7f51\u5361\u90fd\u662f\u914d\u597d ip \u7684\uff08\u4e00\u4e2a\u4f5c\u4e3a\u6b63\u5e38\u7684\u7ba1\u7406\u7f51\u7edc\uff0c\u4e00\u4e2a\u9700\u8981\u8fde\u63a5 IPSAN \uff09\uff0c\u56e0\u6b64\u53ef\u80fd\u53ea\u6709\u4e00\u5f20\u7f51\u5361\u6765\u642d\u5efa openstack\u3002\n\u5c0f\u59b9\u56e0\u4e3a\u521a\u63a5\u624b\u8fd9\u4e2a\u9879\u76ee\uff0c\u4e0d\u592a\u61c2\uff0c\u770b\u5230\u57fa\u672c\u662f\u63a8\u8350\u53cc\u7f51\u5361\u6765\u642d\u5efa openstack \u7684\uff0c\u5355\u7f51\u5361\u6709\u4e00\u4e9b\u6559\u7a0b\uff0c\u4f46\u662f\u6bd5\u7adf\u96be\u627e\u5230\u4e0e\u6211\u4eec\u73af\u5883\u6bd4\u8f83\u76f8\u4f3c\u7684\uff0c\u800c\u4e14\u975e\u5e38\u77ed\u7684\u65f6\u95f4\u5185\u4e5f\u5f88\u96be\u7406\u89e3\u539f\u7406\u3002\u6240\u4ee5\u60f3\u8bf7\u95ee\u4e0b\u5404\u4f4d\u5927\u4fa0\u5bf9\u8fd9\u4e2a\u95ee\u9898\u6709\u4ec0\u4e48\u9ad8\u89c1\uff0c\u4e0d\u80dc\u611f\u6fc0~~</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/liwl", 
        "name": "liwl", 
        "avatar": "https://cdn.v2ex.com/gravatar/113b90ef57818573293f2eb3216b5951?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/357976", 
      "title": "OpenStack packstack \u5b89\u88c5\u7684\u65f6\u5019\u62a5\u9519", 
      "id": "https://www.v2ex.com/t/357976", 
      "date_published": "2017-04-28T08:02:56+00:00", 
      "content_html": "<p>\u62a5\u9519\u5185\u5bb9</p>\n<h1>packstack --install-hosts=192.168.255.210</h1>\n<p>Welcome to Installer setup utility\nParameter CONFIG_MYSQL_HOST failed validation: Given host does not listen on port 22: 192.168.255.210</p>\n<p>ERROR : Failed handling answer file: Given host does not listen on port 22: 192.168.255.210</p>\n<p>sshd \u7aef\u53e3\u662f 14573\nssh \u9ed8\u8ba4\n\u770b\u4e86\u4e0b\u56fd\u5185\u7f51\u4e00\u4e9b\u4ecb\u7ecd\u3002\u8fd8\u662f\u65e0\u6cd5\u89e3\u51b3...\u6c42...</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/lxm", 
        "name": "lxm", 
        "avatar": "https://cdn.v2ex.com/gravatar/bd4b39e02f430b04759b0af8796de43b?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/297084", 
      "title": "\u6709\u4eba\u4e86\u89e3 openstack \u7684 taas \u670d\u52a1\u4e48", 
      "id": "https://www.v2ex.com/t/297084", 
      "date_published": "2016-08-04T05:41:38+00:00", 
      "content_html": "<p>\u6700\u8fd1\u60f3\u5728 openstack \u4e0a\u8fb9\u505a\u6d41\u91cf\u955c\u50cf\uff0c\u627e\u5230 taas \u8fd9\u4e2a\u670d\u52a1\uff0c\u6709\u4eba\u4e86\u89e3\u5417\uff0c <a href=\"https://github.com/openstack/tap-as-a-service\" rel=\"nofollow\">https://github.com/openstack/tap-as-a-service</a>\n\u6709\u4eba\u6210\u529f\u5b89\u88c5\u7684\u8bdd\u8bf7\u4ecb\u7ecd\u4e0b\u6b65\u9aa4</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/caicloud2015", 
        "name": "caicloud2015", 
        "avatar": "https://cdn.v2ex.com/avatar/ad00/6b40/184351_large.png?m=1489660992"
      }, 
      "url": "https://www.v2ex.com/t/297045", 
      "title": "\u57fa\u4e8e Kubernetes \u548c OpenStack \u7684\u5f00\u6e90\u9879\u76ee\u5728\u7269\u8054\u7f51\u7684\u5e94\u7528", 
      "id": "https://www.v2ex.com/t/297045", 
      "date_published": "2016-08-04T03:35:48+00:00", 
      "content_html": "<p>\u65e5\u524d\u5728 Austin \u4e3e\u529e\u7684 OpenStack \u5927\u4f1a\u4e0a\u4ecb\u7ecd\u8fc7\u57fa\u4e8e Kubernetes \u548c Openstack \u7684\u5f00\u6e90\u7269\u8054\u7f51\u5e73\u53f0\u3002\u6211\u4eec\u6765\u770b\u770b\u8fd9\u4e24\u8005\u7684\u7ed3\u5408\u5728\u7269\u8054\u7f51\u5e73\u53f0\u5982\u4f55\u73a9\uff0c\u5148\u8bf4\u8bf4\u6211\u4eec\u5bf9\u7269\u8054\u7f51\u7684\u89e3\u51b3\u65b9\u6cd5\u548c\u770b\u6cd5\uff0c\u518d\u7ed9\u5927\u5bb6\u5c55\u793a\u4e24\u4e2a\u6848\u4f8b\u3002</p>\n<p>\u89c6\u9891\uff1a <a href=\"https://v.qq.com/iframe/player.html?vid=a0300sz5wvb&amp;width=670&amp;height=502.5&amp;auto=0\" rel=\"nofollow\">https://v.qq.com/iframe/player.html?vid=a0300sz5wvb&amp;width=670&amp;height=502.5&amp;auto=0</a></p>\n<p>\u7269\u8054\u7f51\uff08 IoT \uff09\u662f\u4e91\u8ba1\u7b97\u9886\u57df\u7684\u201c\u4e0b\u4e00\u4e2a\u5927\u4e8b\u4ef6\u201d\u3002\u7269\u8054\u7f51\u610f\u5473\u7740\u6240\u6709\u7684\u4e8b\u60c5\uff0c\u5b83\u751a\u81f3\u6bd4\u4e91\u8ba1\u7b97\u670d\u52a1\u66f4\u52a0\u5177\u4f53\u3002\u7269\u8054\u7f51\u4ee5\u589e\u52a0\u673a\u5668\u95f4\u901a\u4fe1\u4e3a\u4e2d\u5fc3\uff0c\u5b83\u5efa\u7acb\u5728\u6570\u636e\u91c7\u96c6\u4f20\u611f\u5668\u7f51\u7edc\u548c\u8fde\u63a5\u5230\u4e91\u8ba1\u7b97\u670d\u52a1\u6267\u884c\u5668\u7684\u57fa\u7840\u4e0a\u3002</p>\n<p>\u6211\u4eec\u6765\u770b\u770b\u5982\u4f55\u4f7f\u7528\u5f00\u6e90\u9879\u76ee\uff0c\u6765\u6269\u5c55\u4e91\u670d\u52a1\u65b9\u6cd5\u8fdb\u800c\u521b\u5efa\u901a\u7528\u7684\u7269\u8054\u7f51\u5e73\u53f0\uff0c\u53ef\u4ee5\u5904\u7406\u591a\u4e2a\u7528\u6237\u6848\u4f8b\u3002\u6211\u4eec\u5b9a\u4e49\u4e86\u4ee5\u4e0b\u8981\u6c42\uff1a</p>\n<p><strong>\u5f00\u6e90\u8f6f\u4ef6</strong>\n\u6574\u4e2a\u5e73\u53f0\u57fa\u4e8e\u5df2\u5b58\u5728\u7684\u5f00\u6e90\u89e3\u51b3\u65b9\u6848\uff0c\u6211\u4eec\u60f3\u8981\u4f7f\u7528\u7684\u5e73\u53f0\u5305\u62ec\uff1a OpenStack \uff0c Kubernetes \uff0c Docker \uff0c OpenContrail \u7b49\u3002</p>\n<p><strong>HW \u548c\u72ec\u7acb\u4f9b\u5e94\u5546</strong>\n\u6ca1\u6709\u4e00\u5bb6\u4f9b\u5e94\u5546\u7684\u5b9a\u4f4d\u662f\u65e2\u5305\u62ec\u8f6f\u4ef6\u53c8\u5305\u62ec\u786c\u4ef6\u7684\u3002\u7269\u8054\u7f51\u7f51\u5173 CPU \u4e0d\u662f x86/64 \u67b6\u6784\u5c31\u662f ARM \u67b6\u6784\u3002\u6211\u4eec\u4e0d\u60f3\u88ab\u9501\u5b9a\u5230\u7528\u6602\u8d35\u4e13\u7528\u8bbe\u5907\u7684\u4f9b\u5e94\u5546\u3002</p>\n<p><strong>\u53ef\u4e92\u76f8\u64cd\u4f5c</strong>\n\u7269\u8054\u7f51\u5e73\u53f0\u5bf9\u591a\u79cd\u4f7f\u7528\u60c5\u51b5\u6765\u8bf4\u90fd\u662f\u666e\u904d\u53ef\u7528\u7684\u3002\u6bd4\u5982\uff0c\u7269\u8054\u7f51\u7f51\u5173\u4e5f\u53ef\u7528\u5728\u8ba1\u7b97\u5bf9\u8c61\u7684\u8def\u706f\uff0c\u5c31\u5982\u540c\u7528\u5728\u667a\u80fd\u5de5\u5382\u6216\u8005\u5de5\u4e1a 4.0 \u5e94\u7528\u7a0b\u5e8f\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u8bbe\u8ba1\u4e86\u4ee5\u4e0b\u9ad8\u5c42\u6b21\u7684\u67b6\u6784\uff0c\u8fd9\u4e2a\u67b6\u6784\u4f7f\u7528\u7684\u662f\u5f00\u6e90\u9879\u76ee\uff0c OpenStack \uff0c Kubernetes \uff0c OpenContrail \u548c Docker \u3002</p>\n<p><img alt=\"\" src=\"http://i2.piimg.com/567571/17535cbb79d284c3.jpg\"></p>\n<p><strong>\u4f20\u611f\u5668</strong>\n\u4efb\u610f\u7528\u6765\u9605\u8bfb\u73af\u5883\u6570\u636e\uff08\u6e29\u5ea6\uff0c\u6e7f\u5ea6\uff0c\u4e8c\u6c27\u5316\u78b3\u6c34\u5e73\uff09\uff0c\u5bf9\u8c61\uff0c\u8ba1\u6570\u7b49\u7b49\u7684\u4f20\u611f\u5668\u3002</p>\n<p><strong>IQRF \u7f51\u7edc</strong>\nIQRF \u662f\u4e00\u4e2a\u64cd\u4f5c sub \uff0d gigahertz ISM bands \u7684\u5f3a\u5927\u65e0\u7ebf\u7f51\u683c\u6280\u672f\u3002\u80fd\u591f\u5f88\u5bb9\u6613\u5730\u8ddf\u4f20\u611f\u5668\u6574\u5408\u3002</p>\n<p><strong>\u7f51\u5173</strong>\n\u5728\u7269\u8054\u7f51\u7f51\u5173\uff0c\u7531 IQRF \u534f\u8c03\u5458\u6765\u5904\u7406\u4ece\u4f20\u611f\u5668\u4f20\u6765\u7684\u6570\u636e\u3002\u8fd9\u4e9b\u53ef\u4ee5\u662f\u4efb\u610f\u7684 x86/64 \u6216\u8005 ARM \u67b6\u6784\uff0c\u8fd9\u4e9b\u57fa\u4e8e Docker \uff0c Kubernetes \uff0c OpenContrail vRouter \u548c Debian \uff0c\u4ece\u9884\u6784\u5efa\u955c\u50cf\u65b9\u9762\u6765\u8fd0\u884c\u7cfb\u7edf\u3002</p>\n<p><strong>\u7f51\u7edc</strong>\n\u7f51\u5173\u53ef\u901a\u8fc7\u4efb\u610f\u7f51\u7edc\u8fde\u63a5\uff08 GSM \uff0f LTE \uff0f WiFi \uff09\uff0c\u56e0\u4e3a SDN \u5728 Docker service \u548c\u6570\u636e\u4e2d\u5fc3\u4e4b\u95f4\u521b\u5efa\u4e86\u52a8\u6001 L3VPN \u3002</p>\n<p><strong>\u6570\u636e\u4e2d\u5fc3</strong>\n\u6570\u636e\u4e2d\u5fc3\u5305\u62ec\u4e86 OpenStack \u548c Kubernetes \u63a7\u5236\u9762\u677f\u3002\u8fd9\u4e24\u4e2a\u7f16\u6392\u89e3\u51b3\u65b9\u6cd5\u90fd\u4f7f\u7528 OpenContrail \u4f5c\u4e3a\u5355\u4e2a SDN \uff08\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\uff09\u3002\u8fd9\u5c31\u53ef\u4ee5\u4ece\u4e2d\u5fc3\u70b9\u7ba1\u7406\u6574\u4e2a\u5e73\u53f0\u3002\u6211\u4eec\u53ef\u4ee5\u5728\u672c\u5730\u8fdc\u7a0b\u5f00\u542f\u4efb\u610f Docker \u5bb9\u5668\uff0c\u7136\u540e\u521b\u5efa\u52a8\u6001\u8fde\u63a5\u5230 OpenStack \u4e0a\u7684 service \u3002 OpenStack \u4e91\u5bb9\u5668\u6570\u636e\u5b58\u50a8\u548c\u5927\u6570\u636e\u8fdb\u7a0b services \u3002</p>\n<p><strong>\u865a\u62df\u5316\uff0f API \u8bbf\u95ee</strong>\n\u6240\u6709\u6570\u636e\u5728\u7f51\u7edc\u7aef\u53e3\u5df2\u7ecf\u88ab\u865a\u62df\u5316\uff0c\u800c\u4e14\u53ef\u4ee5\u901a\u8fc7 REST API service \u8bbf\u95ee\u3002</p>\n<p>\u4e0b\u9762\uff0c\u8ba9\u6211\u4eec\u6765\u770b\u4e24\u4e2a\u6848\u4f8b\u3002</p>\n<h1><strong>\u6848\u4f8b 1: \u667a\u80fd\u57ce\u5e02 Smart City</strong></h1>\n<p>\u7b2c\u4e00\u4e2a\u6848\u4f8b\u662f\u6377\u514b\u5171\u548c\u56fd Pisek \u57ce\u5e02\u7684 SmartCity \u9879\u76ee\u3002 SmartCity \u6982\u5ff5\u548c\u67b6\u6784\u5c06\u4f1a\u90e8\u7f72\u8d85\u8fc7 3000 \u4e2a\u7aef\u70b9\uff0c\u5927\u7ea6 300 \u4e2a\u7269\u8054\u7f51\u7f51\u5173\uff0c\u8fd9\u4e9b\u7f51\u5173\u4ee5\u9ad8\u53ef\u7528\u6a21\u5f0f\u8fd0\u884c\u5728\u7531 Kubernetes \u9a71\u52a8\u7684\u5bb9\u5668\u4e2d\u3002\u89e3\u51b3\u65b9\u6848\u7684\u4e00\u90e8\u5206\u662f\u5f00\u653e\u6570\u636e\u95e8\u6237\uff0c\u6570\u636e API \u5bf9\u63d0\u4f9b\u4fe1\u606f\u7684\u7b2c\u4e09\u65b9\u516c\u53f8\u6765\u8bf4\u53ef\u7528\uff1a</p>\n<p>-\u4ea4\u901a\uff0c\u8def\u5f84\uff0c\u505c\u8f66</p>\n<p>-\u76d1\u6d4b\uff0c\u7ba1\u7406\uff0c\u8282\u80fd</p>\n<p>-\u7535\u5b50\u5546\u52a1\uff0c\u5e02\u573a\uff0c\u65c5\u6e38\u4fe1\u606f</p>\n<p>-\u73af\u5883\u5206\u6790</p>\n<p>-\u751f\u6d3b\u65b9\u5f0f\uff0c\u793e\u4f1a\u670d\u52a1\uff0c\u793e\u4ea4\u7f51\u7edc</p>\n<p><img alt=\"\" src=\"http://i2.piimg.com/567571/02277f3c6e1d6f41.jpg\"></p>\n<p>\u76ee\u6807\u89e3\u51b3\u65b9\u6848\u4f7f\u7528\u57fa\u4e8e\u6811\u8393\u6d3e 2 \u7684\u7269\u8054\u7f51\u7f51\u5173\u4f5c\u4e3a\u7269\u8054\u7f51\u7f51\u5173\u670d\u52a1\u3002\u7f51\u5173\u7684\u6570\u636e\u88ab\u5b58\u50a8\u5728 Graphite \uff0c\u7531\u81ea\u5b9a\u4e49\u7684\u6570\u636e\u6316\u6398\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u5904\u7406\uff0c\u7ed3\u679c\u5df2\u7ecf\u88ab\u5c55\u793a\u5230\u57fa\u4e8e LeonardoCMS \u7684\u57ce\u5e02\u516c\u6c11\u95e8\u6237\uff0c\u8fd9\u662f\u4e00\u79cd\u5141\u8bb8\u6df7\u5408\u590d\u6742\u7684\u53ef\u89c6\u5316\u4e0e\u4efb\u610f\u5185\u5bb9\u7684\u7f51\u9875\u670d\u52a1\u3002\u8fd9\u4e2a\u5f00\u653e\u6570\u636e\u95e8\u6237\u4f7f\u5f97\u6570\u636e\u80fd\u591f\u901a\u8fc7\u53ef\u89c6\u5316\u4eea\u8868\u6216\u8005 API \u8bbf\u95ee\u3002</p>\n<p>\u4ee5\u4e0b\u5c4f\u5e55\u7528\u7279\u5b9a\u65f6\u671f\u5185\u7684\u8f66\u8f86\u548c\u884c\u4eba\u5c55\u793a\u4e86\u7b80\u5355\u7684\u4ece\u5341\u5b57\u8def\u53e3 Kollarova X Zizkova \u8f93\u51fa\u3002</p>\n<p><img alt=\"\" src=\"http://i2.piimg.com/567571/737633a6ebdeefd1.jpg\"></p>\n<h1><strong>\u6848\u4f8b 2: \u5728 Austin OpenStack \u5cf0\u4f1a\u4e0a\u7684\u667a\u80fd\u4f1a\u8bae</strong></h1>\n<p>\u4e3a\u4e86\u8bc1\u660e\u6211\u4eec\u7684\u7269\u8054\u7f51\u5e73\u53f0\u5728\u5e94\u7528\u7a0b\u5e8f\u73af\u5883\u72ec\u7acb\uff0c\u6211\u4eec\u4ece\u667a\u80fd\u57ce\u5e02\u9879\u76ee\u91c7\u53d6\u4e86\u4e00\u4e2a\u7269\u8054\u7f51\u7f51\u5173\uff0c\u7136\u540e\u548c\u57fa\u4e8e IQRF \u7f51\u72b6\u7f51\u7edc\u8fde\u63a5\u4f20\u611f\u5668\uff08\u6d4b\u91cf\u6e7f\u5ea6\uff0c\u6e29\u5ea6\u548c\u4e8c\u6c27\u5316\u78b3\u6c34\u5e73\uff09\u4e00\u8d77\u5728 OpenStack \u5cf0\u4f1a\u4e0a\u653e\u5165 Austin \u4f1a\u5c55\u4e2d\u5fc3\u3002\u8fd9\u8bf4\u660e\u4e86\u7269\u8054\u7f51\u7f51\u5173\u7ba1\u7406\u548c\u6536\u96c6\u4fe1\u606f\u7684\u80fd\u529b\uff0c\u5b83\u53ef\u4ee5\u4ece\u4efb\u610f\u50cf IQRF \uff0c Bluetooth \uff0c GPIO \u4e4b\u7c7b\u7684\u57fa\u4e8e Linux \u5e73\u53f0\u901a\u4fe1\u6280\u672f\u83b7\u5f97\u4fe1\u606f\u3002</p>\n<p>\u6211\u4eec\u7528\u5355\u4e2a\u3001\u4e3b\u52a8\u7684\u7269\u8054\u7f51\u7f51\u5173\u5728 3 \u697c\u4f1a\u8bae\u90e8\u7f72\u4e86 20 \u4e2a\u4f20\u611f\u5668\u548c 20 \u4e2a\u8def\u7531\u5668\uff0c\u4ece\u6574\u4e2a IQRF \u7f51\u72b6\u7f51\u7edc\u63a5\u6536\u6570\u636e\u5e76\u4f20\u9001\u5230\u4e13\u95e8\u7684\u65f6\u95f4\u5e8f\u5217\u6570\u636e\u5e93\uff0c\u5728\u8fd9\u4e2a\u4f8b\u5b50\u91cc\u662f Graphite \u3002\u6536\u96c6\u5668\u662f\u8fd0\u884c\u5728\u7531 Kubernetes \u7ba1\u7406\u7684 Docker \u5bb9\u5668 MQQT \uff0d Java \u6865\u3002\u6700\u6709\u8da3\u7684\u5c31\u662f\u8fd0\u884c\u5728\u6811\u8393\u6d3e\u4e0a\u7684 Docker \u5bb9\u5668\uff0c\u548c\u8fd0\u884c\u5728 Europe \u6570\u636e\u4e2d\u5fc3\u7684\u865a\u62df\u673a\u3002 OpenContrail SDN \u63d0\u4f9b\u52a8\u6001\u7f51\u7edc\u8986\u76d6 tunnels \u3002</p>\n<p><img alt=\"\" src=\"http://i2.piimg.com/567571/ff559bd7b6fa2bf7.jpg\"></p>\n<p>\u4ee5\u4e0b\u56fe\u7247\u5c55\u793a\u4e86\u5355\u4e2a\u65e0\u7ebf IQRF \u7f51\u72b6\u7f51\u7edc\u4f20\u611f\u5668\u548c\u8def\u7531\u5668\u53d1\u73b0\u3002</p>\n<p><img alt=\"\" src=\"http://i2.piimg.com/567571/9dcd19e8a020d819.jpg\"></p>\n<p>IQRF \u662f\u4e00\u4e2a\u5728 sub \uff0d gigahertz \u9891\u5e26\u4e0a\u64cd\u4f5c\u7684\u65e0\u7ebf\u7f51\u72b6\u7f51\u7edc\u6280\u672f\u3002\u5b83\u63d0\u4f9b\u975e\u5e38\u7b80\u5355\u7684\u6574\u5408\uff0c\u4ea7\u54c1\u4e92\u64cd\u4f5c\u6027\uff0c\u6700\u5927\u503c 240 hops \u7684\u5065\u58ee\u7f51\u72b6\u7f51\u7edc\uff0c\u8303\u56f4\u591a\u8fbe\u6570\u767e\u7c73\uff0c\u4ee5\u53ca\u8d85\u4f4e\u529f\u7387\u64cd\u4f5c\u3002</p>\n<p>\u4ee5\u4e0b\u622a\u5c4f\u4ece 2 \u697c\u4e0d\u540c\u7684\u623f\u95f4\u5c55\u793a\u4e86\u5404\u4e2a\u65f6\u95f4\u4e0b\u7684 CO2 \u503c\u3002\u5386\u53f2\u56fe\u8868\u5c55\u793a\u7684\u662f\u5468\u4e00\u7684\u60c5\u51b5\u3002</p>\n<p><img alt=\"\" src=\"http://i2.piimg.com/567571/005aa4a227a484cb.jpg\"></p>\n<p>\u4ece\u6536\u96c6\u7684 Austin \u6570\u636e\u6765\u770b\uff0c\u4ee5\u4e0b\u56fe\u8986\u76d6\u4e86 services \u3002</p>\n<p><img alt=\"\" src=\"http://i2.piimg.com/567571/595e35682cdab375.jpg\"></p>\n<h1><strong>\u6280\u672f\u603b\u89c8</strong></h1>\n<p>\u6240\u8c13\u201c\u7269\u8054\u7f51\u5e73\u53f0\u201d\uff0c\u662f\u7528\u4e00\u822c\u89c6\u89d2\u521b\u5efa\u7684\uff0c\u8fd9\u4e2a\u89c6\u89d2\u57fa\u4e8e\u6536\u96c6\uff0c\u7ba1\u7406\u548c\u5b89\u5168\u3001\u52a8\u6001\u5904\u7406\u6210\u5343\u4e0a\u4e07\u7684\u7aef\u70b9\u6765\u96c6\u4e2d\u7ba1\u7406\u3002\u56e0\u6b64\uff0c\u67b6\u6784\u4f1a\u5206\u6210\u4e24\u4e2a\u4e3b\u8981\u7684\u90e8\u5206\uff1a</p>\n<p>1 <em>\u6570\u636e\u4e2d\u5fc3</em></p>\n<p>\u6570\u636e\u4e2d\u5fc3\u662f\u6574\u4e2a\u7269\u8054\u7f51\u5e73\u53f0\u7ba1\u7406\u7684\u91cd\u70b9\u3002 OpenStack IaaS \u4e91\u548c\u865a\u62df\u673a\u4e00\u8d77\u8fd0\u884c\u5728 SDN \u63a7\u5236\u9762\u677f\u4e0a\u3002\u8fd9\u4e9b\u673a\u5668\u5305\u62ec\u65f6\u95f4\u5e8f\u5217\u5b58\u50a8\uff0c\u5904\u7406\u6570\u636e\u96c6\u7fa4\uff0c\u6570\u636e API \u4ee3\u7406\u670d\u52a1\uff0c\u865a\u62df\u5316\u7f51\u9875\u670d\u52a1\u7b49\u3002</p>\n<p>2 <em>\u7f51\u5173</em></p>\n<p>\u7269\u8054\u7f51\u7f51\u5173\u4f4d\u4e8e\u50cf\u8def\u706f\uff0c\u5de5\u4e1a\u8bbe\u5907\uff0c\u5bb6\u7528\u7535\u5668\u4e4b\u7c7b\u7684\u76ee\u6807\u5730\u65b9\u3002 SDN \u63d0\u4f9b\u4f20\u8f93\u5c42\u7528\u4e91\u670d\u52a1\u6765\u8fde\u63a5\u8fdc\u7a0b\u7269\u8054\u7f51\u7f51\u5173\u3002\u7f51\u5173\u53ef\u4ee5\u662f\u591a\u5e73\u53f0\u7684\uff0c\u6709\u53ef\u80fd\u7684\u8bdd\uff0c\u53ef\u4ee5\u5c06 x86/64 \u548c ARM \u8bbe\u5907\u6df7\u5408\u5230\u4e00\u8d77\u3002\u5728\u5355\u4e2a\u7f51\u5173\u4e3a\u591a\u4e2a\u5ba2\u6237\u5904\u7406\u591a\u4e2a\u4f20\u611f\u5668\u5e73\u53f0\uff0c\u7531\u4e8e\u5fae\u670d\u52a1\u5206\u5272\uff08 Docker \u5bb9\u5668\uff09\u548c Kubernetes \u591a\u79df\u6237\u652f\u6301\u3002\u8fd9\u4e2a\u5e73\u53f0\u53ef\u4ee5\u63d0\u4f9b\u53ef\u4f38\u7f29\u7684\u591a\u79df\u6237\u7a7a\u95f4\u3002\n\u4ee5\u4e0b\u56fe\u8868\u5c55\u793a\u4e86\u5728\u7f51\u5173\u65b9\u9762\u7684\u6570\u636e\u4e2d\u5fc3\u5c42\u548c\u7ec4\u4ef6\u3002\u8fd9\u4e2a\u7ae0\u8282\u7684\u7ec6\u8282\u5c55\u793a\u4e86\u66f4\u591a\u4fe1\u606f\u3002</p>\n<p><img alt=\"\" src=\"http://i1.piimg.com/567571/b4dce62d13607c56.jpg\"></p>\n<p><strong>\u7ec6\u8282\u56fe\u8868</strong></p>\n<p>\u7ec6\u8282\u56fe\u8868\u63d0\u4f9b\u4e86\u6574\u4e2a\u7269\u8054\u7f51\u5e73\u53f0\u5728\u672c\u5730\u7684\u67b6\u6784\u89c6\u56fe\u3002\u5de6\u8fb9\u5c55\u793a\u7684\u662f\u6570\u636e\u4e2d\u5fc3\uff0c\u53f3\u8fb9\u5c55\u793a\u7684\u662f\u4e4b\u524d\u63d0\u5230\u7684\u7f51\u5173\u3002</p>\n<p>\u5c31\u5982\u540c\u4f60\u5728\u4e0b\u9762\u770b\u5230\u7684\u90a3\u6837\uff0c OpenStack \u88ab\u7528\u4f5c\u4e91\u6765\u5904\u7406\u6240\u6709\u7684 control service \uff0c\u4ee5\u53ca\u5927\u6570\u636e\u5904\u7406\uff0c\u548c\u4e4b\u524d\u63d0\u5230\u7684\u865a\u62df\u5355\u5143\u3002\u5728\u7f51\u5173\u7684 Kubernetes \u88ab\u7528\u4e8e services \u7684\u5fae\u5206\u6bb5\uff0c\u8fd9\u5bf9\u591a\u79df\u6237\u548c\u4e0d\u540c\u4f20\u611f\u5668\u95f4\u7684\u5b89\u5168\u6765\u8bf4\u5341\u5206\u6709\u5fc5\u8981\u3002</p>\n<p>OpenContrail \u88ab\u7528\u6765\u8fde\u63a5\u8fd9\u4e24\u8fb9\uff0c\u5e76\u4e14\u63d0\u4f9b Kubernetes PODs \u548c OpenStack \u9879\u76ee\u865a\u62df\u673a\u95f4\u7684\u7f51\u7edc\u5206\u6bb5\u3002</p>\n<p><img alt=\"\" src=\"http://i1.piimg.com/567571/5247723b1ce64d66.jpg\"></p>\n<p>\u50cf\u4e0a\u6587\u63d0\u5230\u7684\uff0c SDN \u8986\u76d6\u5df2\u7ecf\u5b8c\u6210\u4e86\u5206\u5272\u3002\u91cd\u8981\u7684\u662f\u53ea\u6709\u6570\u636e\u4e2d\u5fc3\u8fb9\u754c\u8def\u7531\u5668\u548c\u7269\u8054\u7f51\u7f51\u5173\u4e4b\u95f4\u7684 IP \u8fde\u63a5\u3002\u6700\u5e95\u5c42\u662f\u7f51\u5173 OS \u548c\u6570\u636e\u4e2d\u5fc3\u8fb9\u754c\u8def\u7531\u5668\u4e4b\u95f4\u7684 VPN \uff0c\u5728\u8fd9\u91cc OpenContrail \u53ef\u4ee5\u76f4\u63a5\u5728\u865a\u62df\u673a\uff08 OpenStack \u4e91\uff09\u548c\u5bb9\u5668\uff08\u7f51\u5173\uff09\u95f4\u4ea4\u6d41\u3002\u8fd9\u4e2a\u65b9\u6cd5\u5141\u8bb8\u4ece\u4e0d\u540c\u7684\u4f20\u611f\u5668\u548c\u6267\u884c\u5668\u9009\u62e9\uff0c\u7ed9\u4e88\u4ed6\u4eec\u7279\u6743\uff0c\u5e76\u4e14\u5b89\u5168\u5730\u8fde\u63a5\u5904\u7406\u5e94\u7528\u7a0b\u5e8f\u5185\u90e8\u7684\u4e91\u3002</p>\n<p>\u6570\u636e\u4e2d\u5fc3\u5305\u62ec\u4ee5\u4e0b services \uff1a</p>\n<p><strong>\u7ba1\u7406 services</strong>\nHW \u96c6\u7fa4\u7528\u6240\u6709\u7684 control service \u6765\u8fd0\u884c\u865a\u62df\u673a\uff1a OpenStack controller \uff0c OpenContrail controller \uff08 SDN \uff09\uff0c Kubernetes master \uff0c SaltMaster \u3002</p>\n<p><strong>OpenStack \u4e91</strong>\nOpenStack \u9879\u76ee\u4e3a\u4e0d\u540c\u7684\u865a\u62df\u673a\u63d0\u4f9b\u5206\u6bb5\uff0c\u865a\u62df\u673a\u5305\u62ec\u6570\u636e\u5e93\uff08 graphite \uff0c influxdb \uff0c openTSDB \uff09\uff0c\u5927\u6570\u636e\u5904\u7406\uff08 Hadoop \uff09\uff0c\u6570\u636e\u865a\u62df\u5316\uff08 Grafana \uff0c LeonardoCMS \uff09\u3002\u5b83\u8fd0\u884c\u5728 KVM \u8d85\u7ba1\u7406\u5668\u4e0a\uff0c\u5e76\u4e14\u4e3a\u7f51\u7edc\u4f7f\u7528 OpenContrail neutron \u63d2\u4ef6\u3002</p>\n<p><strong>\u8fb9\u754c\u8def\u7531\u5668</strong>\nOpenContrail \u521b\u5efa iBGP \uff0c iBGP \u4e0e\u6570\u636e\u4e2d\u5fc3\u8fb9\u754c\u8def\u7531\u5668\u5bf9\u7b49\uff0c\u5728\u8fb9\u754c\u8def\u7531\u5668\u4e0a\uff0c\u4ece OpenStack \u865a\u62df\u673a\u548c\u7269\u8054\u7f51\u7f51\u5173\u4e0a\u7684 Kubernetes pods \u53ef\u4ee5\u4f20\u64ad\u52a8\u6001\u7f51\u7edc\u8def\u7531\u3002\u5b83\u521b\u5efa\u4e86\u6807\u51c6\u7684 L3VPN \uff0c MPLSoverGRE \u6216\u8005 MPLSoverUDP \u3002</p>\n<p>\u8fdc\u7a0b\u7f51\u5173\u5305\u62ec\u7684\u7ec4\u4ef6\uff1a</p>\n<p><strong>Kubernetes Minion</strong>\nKubernetes minion \u4e0e Kubernetes master \u5728\u6570\u636e\u4e2d\u5fc3\u8fdb\u884c\u4ea4\u6d41\uff0c\u5e76\u4e14\u901a\u8fc7 kubelet \u7ba1\u7406 PODs \u3002 Kubelet \u4f7f\u7528 opencontrail \u63d2\u4ef6\uff0c\u8fd9\u4e2a\u63d2\u4ef6\u53ef\u4ee5\u7528 vRouter \u4ee3\u7406\u8fde\u63a5 Docker \u5bb9\u5668\u3002</p>\n<p><strong>Kubernetes PODs</strong>\nKubernetes PODs \u8fde\u63a5\u5230 vRouter \u7684\u5355\u4e2a\u6216\u8005\u591a\u4e2a\u5bb9\u5668\u7ec4\u3002 PODs \u7531\u6807\u7b7e\u8fdb\u884c\u5206\u7c7b\u3002\u8fd9\u5c31\u53ef\u4ee5\u5f00\u542f\u4e0d\u540c\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u5c31\u53ef\u4ee5\u4ece\u50cf IQRF \uff0c Bluetooth \u6216\u8005 GPIO \u8fd9\u6837\u7684\u6d88\u606f\u603b\u7ebf\u8bfb\u53d6\u3002</p>\n<p><strong>Docker \u5bb9\u5668</strong>\nKubernetes PODs \u4e2d\u7684 Docker \u5bb9\u5668\u5e26\u6765\u65e0\u987b\u4efb\u4f55\u7279\u6b8a\u88c5\u7f6e\u5c31\u53ef\u4ee5\u8f7b\u677e\u64cd\u4f5c\u7cfb\u7edf\u7684\u5de8\u5927\u597d\u5904\u3002\u6bd4\u5982 IQRF \u7528\u7279\u5b9a\u7248\u672c\u6765\u4f7f\u7528\u7b80\u5355\u7684 Java \u5e94\u7528\u7a0b\u5e8f\uff0c\u8fd9\u4e2a\u7248\u672c\u7528\u5bb9\u5668\u53ef\u4ee5\u5728\u51e0\u5206\u949f\u5185\u8fdb\u884c\u4ea4\u4ed8\uff0c\u800c\u4e14\u4e0d\u4f1a\u5bfc\u81f4\u8ddf\u64cd\u4f5c\u7cfb\u7edf\u7f51\u5173\u4e0d\u5339\u914d\u7684\u72b6\u51b5\u3002</p>\n<h1><strong>\u5e94\u7528\u89c6\u56fe</strong></h1>\n<p>\u4e0b\u56fe\u63d0\u4f9b\u4e86\u5e94\u7528\u89c6\u56fe\u7684\u6a21\u5f0f\u3002\u5c55\u793a\u4e86\u865a\u62df\u673a\u5185\u90e8 OpenStack \u4e91\u80fd\u591f\u5728\u4efb\u610f\u5730\u7406\u4f4d\u7f6e L2 \u6216\u8005 L3 \u4e0a\u8054\u7cfb\u5230 Docker \u5bb9\u5668\u7684\u72b6\u51b5\uff0c\u8fd9\u5f97\u76ca\u4e8e OpenContrail \u7684\u8986\u76d6\u3002\u56e0\u6b64\uff0c\u5e94\u7528\u7a0b\u5e8f\u5f00\u53d1\u8005\u80fd\u591f\u4f7f\u7528\u76f8\u540c\u7684\u5de5\u5177\uff0c\u5c31\u5982\u540c\u4ed6\u4eec\u5728\u6807\u51c6\u4e91\u4e2d\u4f7f\u7528\u7684\u90a3\u6837\u3002</p>\n<p><img alt=\"\" src=\"http://i1.piimg.com/567571/edecbfc8f9db2f4f.jpg\"></p>\n<p>\u6bd4\u5982\uff0c\u6211\u4eec\u4ece\u73af\u5883\u4f20\u611f\u5668\u6536\u96c6\u6570\u636e\u3002\u4f20\u611f\u5668\u76f4\u63a5\u8fde\u63a5\u5230\u5bb9\u5668\uff0c\u6570\u636e\u5728\u5bb9\u5668\u4e2d\u5904\u7406\uff0c\u4e4b\u540e\u53d1\u9001\u5230 Graphite \u65f6\u95f4\u5e8f\u5217\u6570\u636e\u5e93\u3002\u56e0\u4e3a\u6211\u4eec\u60f3\u8981\u751f\u52a8\u5730\u5b9e\u65f6\u663e\u793a\u6570\u636e\uff0c\u6211\u4eec\u7528\u8bfb\u53d6 GraphiyeAPI \u63a5\u53e3\u7684 Leonardo CMS \u6765\u4f7f\u7528\u53e6\u4e00\u4e2a\u865a\u62df\u673a\uff0c\u5e76\u5728\u7f51\u9875\u4e0a\u5c55\u73b0\u6570\u636e\u3002\u6839\u636e\u8fd9\u4e2a\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5728\u540c\u4e00\u4e2a\u7531\u591a\u4e2a\u8f93\u5165\u548c\u8f93\u51fa\u7684\u4e91\u4e2d\uff0c\u4f9d\u636e\u76f8\u540c\u7684\u51c6\u5219\u6765\u521b\u5efa\u4e0d\u540c\u7684\u9879\u76ee\u3002</p>\n<h1><strong>\u7ed3\u8bba</strong></h1>\n<p>\u4ee5\u4e0a\u7b80\u8ff0\u4e86\u5982\u4f55\u57fa\u4e8e Kubernetes \u548c OpenStack \u6765\u505a\u7269\u8054\u7f51\u5e73\u53f0\u7684\u539f\u578b\u90e8\u7f72\uff0c\u76ee\u524d\u6211\u4eec\u6b63\u5728\u4e3a\u6574\u4e2a Smart City \u5904\u7406\u7ec6\u8282\u4e0a\u7684\u8bbe\u8ba1\u3002\n\u4eca\u5e74\uff0c\u5728 Austin \u7684 OpenStack \u5cf0\u4f1a\uff0c\u4ee5\u53ca London \u7684 KubeCon \u4e0a\uff0c\u6211\u4eec\u5f97\u5230\u4e86\u5f88\u591a\u53cd\u9988\u3002\u5bf9\u4e8e\u5904\u7406\u5b89\u5168\u95ee\u9898\uff0c\u5927\u5bb6\u89c9\u5f97\u6211\u4eec\u63d0\u4f9b\u7684\u65b9\u6cd5\u601d\u8def\u662f\u53ef\u884c\u7684\uff0c\u62b5\u6297\u5c5e\u6027\u548c\u6027\u80fd\u5173\u7cfb\u5230\u7269\u8054\u7f51\u5e73\u53f0\uff0c\u4ee5\u53ca\u5f88\u591a\u6280\u672f\u5408\u4f5c\u4f19\u4f34\u90fd\u60f3\u8981\u52a0\u5165\u6211\u4eec\uff0c\u8ddf\u6211\u4eec\u4e00\u8d77\u52aa\u529b\uff0c\u7136\u540e\u62d3\u5c55\u6211\u4eec\u7684\u7269\u8054\u7f51\u5e73\u53f0\u5230\u4ed6\u4eec\u7684\u89e3\u51b3\u65b9\u6848\u3002</p>\n<p>\u539f\u6587\u94fe\u63a5\uff1a <a href=\"http://www.tcpcloud.eu/en/blog/2016/05/12/open-source-iot-platform-based-openstack-and-kubernetes/#rd?sukey=3903d1d3b699c208ac603dd2f535c040389099d07242e0c7a36550f7ec7411d1ea291bb4b5bc71f08193e25b1aae095e\" rel=\"nofollow\">http://www.tcpcloud.eu/en/blog/2016/05/12/open-source-iot-platform-based-openstack-and-kubernetes/#rd?sukey=3903d1d3b699c208ac603dd2f535c040389099d07242e0c7a36550f7ec7411d1ea291bb4b5bc71f08193e25b1aae095e</a></p>\n<p>\uff08\u5982\u679c\u9700\u8981\u8f6c\u8f7d\uff0c\u8bf7\u8054\u7cfb\u6211\u4eec\uff0c\u5c0a\u91cd\u77e5\u8bc6\u4ea7\u6743\u4eba\u4eba\u6709\u8d23:\uff09</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/yuedingwangji", 
        "name": "yuedingwangji", 
        "avatar": "https://cdn.v2ex.com/gravatar/09e92b80190546bb9be09b6b9511cc46?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/293775", 
      "date_modified": "2016-07-20T12:19:33+00:00", 
      "content_html": "<p>RT \uff0c\u6700\u8fd1\u642d\u5efa devstack \u7684\u73af\u5883\uff0c \u66f4\u6362 source.list  \u4e3a\u963f\u72f8\u6e90\uff0c  \u66f4\u6362 PIP \u4e3a\u8c46\u74e3\uff0c\u7cfb\u7edf\u4e3a ubuntu 14.04.4 server x64 \uff0c\u53ea\u5b89\u88c5\u4e86 openssh-server \uff0c mirror \u4e3a <a href=\"http://git.trystack.cn\" rel=\"nofollow\">http://git.trystack.cn</a>  \uff0c \u53c2\u8003\u5b89\u88c5\u6587\u6863\u4e3a <a href=\"http://www.chenshake.com/openstack-project-series-3-devstack/\" rel=\"nofollow\">http://www.chenshake.com/openstack-project-series-3-devstack/</a> \uff08\u76ee\u524d\u8fd9\u57df\u540d\u597d\u50cf\u8fc7\u671f\u4e86\uff09\n\u95ee\u9898\u6765\u4e86\uff0c \u5b89\u88c5\u5b8c\u8bbf\u95ee UI \u7684\u65f6\u5019 \uff0c\u63d0\u793a\u5982\u4e0b</p>\n<pre><code> python compress.py compress\nTraceback (most recent call last):\n  File \"compress.py\", line 5, in &lt;module&gt;\n    from compressor.cache import (cache_get, cache_set, get_offline_hexdigest,\n  File \"/usr/local/lib/python2.7/dist-packages/compressor/cache.py\", line 8, in &lt;module&gt;\n    from django.core.cache import caches\n  File \"/usr/local/lib/python2.7/dist-packages/django/core/cache/__init__.py\", line 34, in &lt;module&gt;\n    if DEFAULT_CACHE_ALIAS not in settings.CACHES:\n  File \"/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py\", line 48, in __getattr__\n    self._setup(name)\n  File \"/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py\", line 42, in _setup\n    % (desc, ENVIRONMENT_VARIABLE))\ndjango.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.\n</code></pre>\n<p>\u63d0\u793a\u5f88\u957f\uff0c\u8fd9\u91cc\u53ea \u63d0\u53d6\u4e86\u90e8\u5206\u8ba4\u4e3a\u6709\u7528\u7684</p>\n<p>\u5230\u73b0\u5728\u6211\u90fd\u8fd8\u4e0d\u6210\u529f\u662f\u5426\u5b89\u88c5\u6210\u529f\uff0c \u5404\u7ec4\u4ef6\u8fd8\u4e0d\u719f\u6089\uff0c\u4e5f\u4e0d\u77e5\u9053\u67e5\u770b\uff0c google \u5230\u7684\u5927\u90fd\u662f\u82f1\u6587\uff0c\u628a\u6211\u90fd\u770b\u8499\u853d\u4e86\uff0c \u5e0c\u671b\u5404\u4f4d\u6307\u70b9\u4e0b\u8ff7\u6d25\uff0c\u544a\u8bc9\u6211\u600e\u4e48\u624d\u7b97\u5b89\u88c5\u6210\u529f \uff0c\u8c22\u8c22\uff01</p>\n", 
      "date_published": "2016-07-20T12:17:48+00:00", 
      "title": "devstack \u5b89\u88c5 \u7591\u60d1", 
      "id": "https://www.v2ex.com/t/293775"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/littlewey", 
        "name": "littlewey", 
        "avatar": "https://cdn.v2ex.com/avatar/6ecb/dd6e/426_large.png?m=1750824239"
      }, 
      "url": "https://www.v2ex.com/t/291735", 
      "title": "\u6c42\u52a9\u5173\u4e8e openstack \u5f00\u53d1\u4e00\u4e2a\u8d44\u6e90\u81ea\u52a9\u7cfb\u7edf\u7684\u601d\u8def", 
      "id": "https://www.v2ex.com/t/291735", 
      "date_published": "2016-07-11T07:49:45+00:00", 
      "content_html": "<p>\u80cc\u666f\uff1a Team \u5185\u6709 openstack \uff0c\u540c\u4e8b\u4eec\u6709\u9700\u6c42\u4f7f\u7528\u51e0\u79cd\u89c4\u683c\u51e0\u79cd\u76ee\u7684\u7684\u865a\u62df\u673a\u3002\n\u9700\u6c42\uff1a \u6b63\u5e38\u6211\u4eec\u540c\u4e8b\u9700\u6c42\u4e0d\u4e00\u6837\u7684 vm \u9700\u8981\u4eba\u5de5\u53bb\u63d0\u4ea4 ticket \u7b49\u4eba\u6765\u5904\u7406\uff0c\u6211\u60f3\u505a\u4e00\u4e2a web service \uff08\u57fa\u4e8e flask \u6700\u597d\uff09\uff0c\u5b9e\u73b0\u540c\u4e8b\u4eec\u81ea\u52a9\u53bb\u9009\u62e9\u4e00\u4e2a\u9700\u6c42\uff0c\u7136\u540e web \u540e\u7aef\u53bb\u8ddf openstack \u7684 ochestration API \u505a\u76f8\u5e94\u7684\u64cd\u4f5c\u8fd4\u56de\u7ed9\u524d\u7aef\u72b6\u6001\u548c\u4fe1\u606f\u3002</p>\n<p>\u6211\u9700\u8981\u5b66\u54ea\u4e9b\u4e1c\u897f\u54c8\uff1f\u6280\u80fd\u6811\uff1f\u6709\u73b0\u6210\u7684\u8f6e\u5b50\u4e48\uff1f</p>\n<p>\u6211\u53ea\u7528 flask \u5199\u8fc7\u7b80\u5355\u7684 web tool \uff0c openstack \u5f00\u53d1\u6ca1\u6709\u505a\u8fc7\uff0c\u60f3\u54a8\u8be2\u4e0b\u5927\u5bb6\u7684\u4e00\u4e9b\u5efa\u8bae\u3002 Google \u4e86\u4e00\u4e9b\u6ca1\u6709\u627e\u5230\u9002\u5408\u7684\u8f6e\u5b50\u6216\u8005\u5b66\u4e60 dev \u7684 demo \u8d44\u6599\u3002</p>\n<p>\u591a\u8c22:-D \u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/myyou", 
        "name": "myyou", 
        "avatar": "https://cdn.v2ex.com/avatar/bbaf/e3f1/135646_large.png?m=1440754497"
      }, 
      "url": "https://www.v2ex.com/t/270936", 
      "title": "\u56fd\u5185\u7684\u65b0\u5174\u4e91\u670d\u52a1\u662f\u4e0d\u662f\u90fd\u662f\u4ee5 openstack \u4e3a\u57fa\u7840\u7684\u4e91\u5e73\u53f0\uff1f", 
      "id": "https://www.v2ex.com/t/270936", 
      "date_published": "2016-04-14T01:48:40+00:00", 
      "content_html": ""
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/wsgzao", 
        "name": "wsgzao", 
        "avatar": "https://cdn.v2ex.com/avatar/10c8/844e/57018_large.png?m=1731505795"
      }, 
      "url": "https://www.v2ex.com/t/261159", 
      "date_modified": "2016-03-04T09:38:38+00:00", 
      "content_html": "<a target=\"_blank\" href=\"/i/Cn77HG14.png\" target=\"_blank\" title=\"\u5728\u65b0\u7a97\u53e3\u6253\u5f00\u56fe\u7247 Cn77HG14.png\"><img src=\"//i.v2ex.co/Cn77HG14.png\" style=\"max-width: 660px; image-orientation: from-image;\" /></a>\r<br />\r<br />## \u524d\u8a00\r<br />\r<br />\u4e3a\u671f 6 \u5929\u7684 Red Hat OpenStack \u57f9\u8bad\u53d7\u76ca\u826f\u591a\uff0c\u5b9e\u9a8c\u8fc7\u7a0b\u4e5f\u975e\u5e38\u4e30\u6ee1\uff0c\u6709\u5f88\u591a\u77e5\u8bc6\u9700\u8981\u5438\u6536\u548c\u6d88\u5316\uff0c\u6587\u7ae0\u4e2d\u628a\u8be6\u7ec6\u7684\u5b9e\u9a8c\u8fc7\u7a0b\u5168\u90e8\u5206\u4eab\u51fa\u6765\u3002\u5b9e\u9a8c\u73af\u5883\u662f\u901a\u8fc7 Vagrant \u90e8\u7f72 rhel7.1 \u5feb\u901f\u751f\u6210\uff0c\u4f7f\u7528 4G \u4ee5\u4e0a\u7b14\u8bb0\u672c\u7535\u8111\u5c31\u53ef\u4ee5\u5b8c\u6210\u642d\u5efa\u3002\u6240\u6709\u7684\u914d\u7f6e\u53c2\u6570\u90fd\u6709\u5907\u6ce8\u8bf4\u660e\uff0c\u5e0c\u671b\u53ef\u4ee5\u5e2e\u52a9\u5927\u5bb6\u5feb\u901f\u5b66\u4e60\u548c\u719f\u6089 OpenStack \u3002\u8fd9\u6216\u8bb8\u4e5f\u662f\u6211 Blog \u4e2d\u6700\u957f\u7684\u4e00\u7bc7\u51d1\u5b57\u6570\u6587\u7ae0\u3002\r<br />\r<br />OpenStack \u662f\u4ee3\u66ff VMware \u79c1\u6709\u4e91\u7684\u6700\u4f73\u65b9\u6848\u4e4b\u4e00\r<br />\r<br />\r<br />## \u66f4\u65b0\u8bb0\u5f55\r<br />\r<br />2016 \u5e74 03 \u6708 04 \u65e5 - \u521d\u7a3f\r<br />\r<br />\u9605\u8bfb\u539f\u6587 - <a target=\"_blank\" href=\"http://wsgzao.github.io/post/openstack/\" rel=\"nofollow\">http://wsgzao.github.io/post/openstack/</a>\r<br />\r<br />**\u6269\u5c55\u9605\u8bfb**\r<br />\r<br />- OpenStack | \u7ea2\u5e3d - <a target=\"_blank\" href=\"https://www.redhat.com/zh/insights/openstack\" rel=\"nofollow\">https://www.redhat.com/zh/insights/openstack</a>", 
      "date_published": "2016-03-04T09:38:23+00:00", 
      "title": "Red Hat OpenStack \u5b98\u65b9\u57f9\u8bad\u7b14\u8bb0", 
      "id": "https://www.v2ex.com/t/261159"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/vonnyfly", 
        "name": "vonnyfly", 
        "avatar": "https://cdn.v2ex.com/avatar/7a06/e8b4/71154_large.png?m=1454911609"
      }, 
      "url": "https://www.v2ex.com/t/247135", 
      "date_modified": "2015-12-30T03:08:14+00:00", 
      "content_html": "", 
      "date_published": "2015-12-30T03:06:51+00:00", 
      "title": "\u63a8\u8350\u7b80\u5355\u70b9\u7684\u865a\u62df\u673a\u7f51\u9875\u7ba1\u7406\u7684\u5f00\u6e90\u7a0b\u5e8f", 
      "id": "https://www.v2ex.com/t/247135"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/smartdie", 
        "name": "smartdie", 
        "avatar": "https://cdn.v2ex.com/avatar/a4a5/4916/104838_large.png?m=1428849887"
      }, 
      "url": "https://www.v2ex.com/t/233903", 
      "title": "\u505a openstack \u4e8c\u6b21\u5f00\u53d1\u6709\u76f8\u5173\u7684\u6280\u672f\u6587\u7ae0\u90ae\u4ef6\u8ba2\u9605\u5417\uff1f", 
      "id": "https://www.v2ex.com/t/233903", 
      "date_published": "2015-11-05T09:02:34+00:00", 
      "content_html": "<p>\u7c7b\u4f3c\u597d\u4e1c\u897f\u4f20\u9001\u95e8\u90a3\u79cd\uff0c\u6700\u597d\u662f\u4e2d\u6587\u7684\u3002\u6c42\u63a8\u8350</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/njustyw", 
        "name": "njustyw", 
        "avatar": "https://cdn.v2ex.com/avatar/dfed/b135/17493_large.png?m=1433004506"
      }, 
      "url": "https://www.v2ex.com/t/195595", 
      "title": "OpenStack \u91cc\u9762 Windows \u865a\u62df\u673a\u65e0\u6cd5\u4e0a\u7f51", 
      "id": "https://www.v2ex.com/t/195595", 
      "date_published": "2015-06-02T10:22:58+00:00", 
      "content_html": "Linux\u662f\u53ef\u4ee5\u7684<br />Windows\u865a\u62df\u673a\u5b89\u88c5\u4e86virtio\u9a71\u52a8 \u5916\u90e8\u7f51\u7edc\u662f\u53ef\u4ee5ping\u901a\u7684 \u4f46\u662f\u7f51\u9875\u65e0\u6cd5\u8bbf\u95ee \u6293\u5305\u770b\u4e86\u4e0btcp\u8fde\u63a5\u662f\u5efa\u7acb\u4e86 \u4f46\u662f\u4e4b\u540e\u6ca1\u6709\u4efb\u4f55\u8fdb\u51fa\u6570\u636e\u6d41<br />\u7eb3\u95f7 \u6709\u78b0\u5230\u7c7b\u4f3c\u7684\u60c5\u51b5\u5417"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/turingbook", 
        "name": "turingbook", 
        "avatar": "https://cdn.v2ex.com/gravatar/ebf1e186ee6f68892427d92a786e5fca?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/183448", 
      "title": "ZStack\uff1a CloudStack \u6838\u5fc3\u4eba\u5458\u63a8\u51fa\u7684\u65b0\u5f00\u6e90 IaaS \u9879\u76ee", 
      "id": "https://www.v2ex.com/t/183448", 
      "date_published": "2015-04-13T09:27:13+00:00", 
      "content_html": "<p><a target=\"_blank\" rel=\"nofollow\" href=\"http://www.csdn.net/article/2015-04-10/2824443\">http://www.csdn.net/article/2015-04-10/2824443</a> <br>\nCloudStack\u524d\u6838\u5fc3\u5f00\u53d1\u4eba\u5458\u5f20\u946b\u56e2\u961f\u7684\u4f5c\u54c1\uff0c\u5e0c\u671b\u4ece\u67b6\u6784\u4e0a\u89e3\u51b3\u56db\u4e2a\u95ee\u9898\uff1a\u6613\u7528\u6027\uff0c\u7a33\u5b9a\u6027\uff0c\u9ad8\u6027\u80fd\uff0c\u4ee5\u53ca\u6269\u5c55\u6027\u3002\u63d2\u4ef6\u67b6\u6784\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/aarwwefdds", 
        "name": "aarwwefdds", 
        "avatar": "https://cdn.v2ex.com/avatar/07e3/b175/42014_large.png?m=1414744979"
      }, 
      "url": "https://www.v2ex.com/t/180931", 
      "title": "OpenStack \u548c SaaS \u6709\u4ec0\u4e48\u5173\u7cfb\u4e48\uff1f", 
      "id": "https://www.v2ex.com/t/180931", 
      "date_published": "2015-04-01T10:44:42+00:00", 
      "content_html": "<p>\u6211\u5370\u8c61\u91ccOpenStack\u662fIaaS\u6765\u7740 \u8c37\u6b4c\u4e86\u4e5f\u6ca1\u4ec0\u4e48\u5934\u7eea\u3002\u3002\u90a3\u4e48\u95ee\u9898\u6765\u4e86\u3002\u3002OpenStack\u6709\u6ca1\u6709\u529e\u6cd5\u63d0\u4f9bSaaS\u6216\u8005\u662f\u6574\u5408\u4ec0\u4e48\u7684\uff1f<br>\n\u8bf7\u4e0d\u8981\u89c9\u5f97\u697c\u4e3b\u5f88\u86cb\u75bc\uff0c\u56e0\u4e3a\u4e0a\u9762\u7ed9\u7684\u8bf4\u660e\u5c31\u8fd9\u4e48\u7684\u86cb\u75bc\uff0c\u6211\u662f\u6478\u4e0d\u5230\u5934\u7eea<br>\np.s.\u548c\u53d1\u5e16\u65e5\u65e0\u5173</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/biwangshen", 
        "name": "biwangshen", 
        "avatar": "https://cdn.v2ex.com/avatar/3a66/cb77/102931_large.png?m=1500185910"
      }, 
      "url": "https://www.v2ex.com/t/177776", 
      "title": "opensatcke \u4e0b selinux \u7684\u6587\u4ef6\u914d\u7f6e\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/177776", 
      "date_published": "2015-03-18T07:43:47+00:00", 
      "content_html": "<p>\u6574\u4e2aopenstack\u7684\u6574\u4e2a\u8fd0\u7ef4\u5b9e\u5728ubuntu\u4e0b\u8fdb\u884c\u7684\uff0cubuntu12.04\u548c14.04\u4e2d\u7684selinux\u5305\u662f\u4e0d\u662f\u5168\u7684\u989d\uff0c\u8fd8\u6709\u8981\u5bf9openstack\u7684\u5404\u4e2a\u670d\u52a1\u8fdb\u884cselinux\u7684\u914d\u7f6e\uff0c\u8be5\u4ece\u54ea\u4e2a\u65b9\u9762\u5165\u624b\u989d\uff1f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/pfitseng", 
        "name": "pfitseng", 
        "avatar": "https://cdn.v2ex.com/avatar/a727/afed/47191_large.png?m=1405478278"
      }, 
      "url": "https://www.v2ex.com/t/164192", 
      "title": "\u8bd5\u4e86\u4e00\u4e0b RDO\uff0c\u8bf7\u6559\u4e0b\u5f53\u5b9e\u4f8b\u8d77\u6765\u540e\uff0c\u5206\u914d\u5230\u79c1\u6709 ip\uff0c\u9ed8\u8ba4\u662f 10.0.0.x\uff0c\u8fd9\u4e2a\u65f6\u5019\u5bbf\u4e3b\u673a\u80fd ping \u901a\u8fd9\u4e2a\u5730\u5740\u5417\uff1f", 
      "id": "https://www.v2ex.com/t/164192", 
      "date_published": "2015-01-21T08:34:08+00:00", 
      "content_html": "\u6211\u641e\u4e86\u534a\u5929\uff0c\u4e0d\u7ba1\u662f\u79c1\u6709ip10.0.0.x\uff0c\u8fd8\u662f\u6d6e\u52a8ip172.24.4x\u90fdping\u4e0d\u901a\u3002\u662f\u54ea\u91cc\u9700\u8981\u8bbe\u7f6e\u5417\uff1f\u521a\u5f00\u59cb\u63a5\u89e6\uff0c\u4e0d\u662f\u5f88\u4e86\u89e3\u3002"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xnhp0320", 
        "name": "xnhp0320", 
        "avatar": "https://cdn.v2ex.com/gravatar/09f119d5c3f61f37bd34e227af77a9f0?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/159204", 
      "title": "\u5927\u5bb6\u6709\u8c01\u6210\u529f\u90e8\u7f72\u8fc7 OpenContrail \u4e48\uff1f", 
      "id": "https://www.v2ex.com/t/159204", 
      "date_published": "2015-01-04T14:09:56+00:00", 
      "content_html": "<p>\u6700\u8fd1\u9879\u76ee\u7ec4\u8c03\u7814OpenContrail\uff0c\u5c0f\u5f1f\u8d1f\u8d23\u8c03\u7814OpenStack\u548cOpenContrail\u4e24\u4e2a\u8d85\u5927\u578b\u9879\u76ee\uff0c\u76ee\u524d\u5c1a\u5904\u5728\u5b89\u88c5\u9636\u6bb5\u3002OpenStack\u8fd8\u6bd4\u8f83\u597d\u89e3\u51b3\uff0cOpenContrail\u5b9e\u5728\u662f\u592a\u5927\uff0c\u7ec4\u4ef6\u4e5f\u592a\u591a\u4e86\uff0c\u6587\u6863\u4e5f\u5f88\u4e0d\u5b8c\u5584\uff0c\u4e0d\u77e5\u9053\u6709\u6ca1\u6709\u4eba\u7528\u8fc7OpenContrail?</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/codeninja", 
        "name": "codeninja", 
        "avatar": "https://cdn.v2ex.com/gravatar/57ff84322306fb2dcf0e1053a7798ca5?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/144646", 
      "date_modified": "2014-11-07T05:05:44+00:00", 
      "content_html": "Installing Ubuntu OpenStack requires at least six machines with two disks, one of which with two network interfaces (NICs).<br /><br />\u540e\u534a\u53e5\u4e3b\u8981\u662f\uff0c\u5230\u5e95\u662f\u6bcf\u53f0\u4e24\u5757\u7f51\u5361\u5462\uff0c\u8fd8\u662f\u5176\u4e2d\u4e00\u53f0\u6709\u4e24\u5757\u7f51\u5361\uff1f", 
      "date_published": "2014-11-07T04:28:59+00:00", 
      "title": "\u8fd9\u53e5\u82f1\u6587\u5e94\u8be5\u600e\u4e48\u7406\u89e3\uff1f", 
      "id": "https://www.v2ex.com/t/144646"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/hepin1989", 
        "name": "hepin1989", 
        "avatar": "https://cdn.v2ex.com/avatar/df1d/d8b2/39820_large.png?m=1775552138"
      }, 
      "url": "https://www.v2ex.com/t/118784", 
      "date_modified": "2014-06-21T09:22:57+00:00", 
      "content_html": "\u95ee\u9898\uff1a<br />\u6211\u516c\u53f8\u7684\u5b9e\u65bd\u544a\u8bc9\u6211\uff0copenstack\u53ef\u4ee5\u628a\u5f88\u591a\u53f0\u673a\u5668\u53d8\u6210\u4e00\u4e2a\u673a\u5668\uff0c\u6bd4\u598210\u4e2a4g\u7684\u673a\u5668\uff0c\u4f60\u53ef\u4ee5\u5b89\u88c5\u4e2a\u865a\u62df\u673a\uff0c\u670932g\u7684\u5185\u5b58\u7b49\u7b49\u3002<br /><br />\u8fd9\u662f\u4e0d\u53ef\u80fd\u7684\u5427\u3002<br />\u4ed6\u7ed9\u6211\u7684\u56de\u7b54\u5f88\u660e\u786e\u7684\u5c31\u662f\u4f60\u5b89\u88c5\u4e2aubuntu\u7684instance\uff0c\u8fd9\u4e2ainstance\u53ef\u4ee5\u5229\u7528\u5230openstack\u7684\u8282\u70b9\u7684\u6240\u6709\u7684\u8fd0\u7b97\u529b\u3002\u60f3\u591a\u5927\u5c31\u591a\u5927", 
      "date_published": "2014-06-21T07:17:29+00:00", 
      "title": "openstack \u53ef\u4ee5\u628a\u591a\u4e2a\u7269\u7406\u673a\u53d8\u6210\u4e00\u4e2a\u865a\u62df\u673a\uff1f", 
      "id": "https://www.v2ex.com/t/118784"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Ryans", 
        "name": "Ryans", 
        "avatar": "https://cdn.v2ex.com/avatar/4271/8466/9071_large.png?m=1537320407"
      }, 
      "url": "https://www.v2ex.com/t/114458", 
      "title": "OpenStack \u5b89\u88c5 keystone\uff0c\u542f\u52a8\u670d\u52a1\u5931\u8d25", 
      "id": "https://www.v2ex.com/t/114458", 
      "date_published": "2014-05-27T05:00:16+00:00", 
      "content_html": "\u6309\u7167\u5b98\u65b9\u6587\u6863\u64cd\u4f5c\u7684\uff0c\u4f46\u662fkeystone\u670d\u52a1\u65e0\u6cd5\u542f\u52a8\u3002<br />\u600e\u4e48\u67e5\u770b\u9519\u8bef\u4fe1\u606f\u6216\u8005\u65e5\u5fd7\u5206\u6790\uff1f"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/pyKun", 
        "name": "pyKun", 
        "avatar": "https://cdn.v2ex.com/avatar/5580/d031/23741_large.png?m=1356574533"
      }, 
      "url": "https://www.v2ex.com/t/112694", 
      "date_modified": "2014-09-02T11:38:30+00:00", 
      "content_html": "OpenStack \u7684\u613f\u666f<br /><br />\u524d\u8a00\uff1a<br />\u672c\u4eba\u662f\u5728 OpenStack \u5708\u5b50\u7684\u65b0\u4eba\uff0c\u4e0d\u5230\u4e24\u5e74\u7684 contributing \u65f6\u95f4\uff0c\u662f\u4e2a\u5de5\u7a0b\u5e08\uff0cdeveloper\u3002\u6240\u4ee5\u5f88\u591a\u601d\u8003\u95ee\u9898\u7684\u89d2\u5ea6\u90fd\u5e76\u975e\u5904\u5728\u4e00\u4e2a\u591a\u9ad8\u5927\u7684\u4f4d\u7f6e\u3002\u5c31\u5de5\u7a0b\u5e08\u800c\u5df2\uff0c\u6211\u601d\u8003\u8fd9\u4e9b\u7684\u5f15\u5b50\uff0c\u65e0\u975e\u5c31\u662f\u6211\u4eec\u521b\u9020\u7684\uff0c\u53d1\u5c55\u7684\u8fd9\u4e2a\u5de5\u5177\uff08OpenStack\uff09\u4f1a\u6709\u600e\u4e48\u6837\u7684\u672a\u6765\u3002<br /><br />\u201cOpenStack \u592a\u5f3a\u4e86\uff0c\u4ed6\u5c31\u662f\u672a\u6765\u201d vs \u201cOpenStack \u592a\u5f31\u4e86\uff0c\u67b6\u6784\u548c\u6027\u80fd\u90fd\u592a\u5dee\u4e86\uff01\u201d<br /><br />\u770b\u5f85\u4efb\u4f55\u4e00\u4e2a\u4e8b\u7269\uff0c\u90fd\u8981\u53bb\u5c55\u671b\u5b83\u7684\u4e0a\u9650\u548c\u4f30\u91cf\u5176\u4e0b\u9650\uff0c\u5bf9 OpenStack \u4ea6\u5982\u6b64\u3002\u9119\u89c6 OpenStack \u7684\u4eba\u65e0\u975e\u4e24\u79cd\uff0c\u4e00\u79cd\u5728\u5927\u578b\u4e92\u8054\u7f51\u516c\u53f8\u6709\u7740\u5f88\u5f3a\u7684\u5206\u5e03\u5f0f\u7ecf\u9a8c\u7684\u4e2a\u4eba\u6216\u8005\u56e2\u961f\uff0c\u8bf8\u5982\u767e\u5ea6\uff0c\u6dd8\u5b9d\uff0c\u817e\u8baf\u3002\u4ed6\u4eec\u62e5\u6709\u7684\u7ecf\u9a8c\u5df2\u7ecf\u8fdc\u8fdc\u8d85\u8fc7 OpenStack \u5f88\u8fdc\uff0c\u5bf9\u4e8e\u4ed6\u4eec\u6765\u8bf4\uff0c\u90a3\u6837\u7684\u8bc4\u4ef7\u662f\u7b26\u5408\u7684\u3002\u800c\u53e6\u4e00\u7fa4\u9119\u89c6 OpenStack \u7684\u4eba\u7fa4\u5927\u90e8\u5206\u53ea\u662f\u542c\u4e0a\u9762\u90a3\u4e00\u7fa4\u4eba\u7684\u8a00\u8bba\u540e\u7684\u8ddf\u98ce\u7684\u7ed3\u679c\u3002\u56e0\u4e3a\u4ed6\u4eec\u6ca1\u6709\u601d\u8003\u8fc7 OpenStack \u7684\u4e0a\u9650\u5728\u54ea\u3002\u5c31\u4ee5 VPS \u4e3a\u57fa\u7840\u7684\u4e91\u8ba1\u7b97\u800c\u5df2\uff0cOpenStack \u8981\u89e3\u51b3\u7684\u95ee\u9898\uff0c\u9664\u4e86\u5b58\u50a8\uff0c\u7f51\u7edc\uff0c\u865a\u62df\u5316\u4e4b\u5916\uff0c\u8fd8\u8981\u90e8\u7f72\uff0c\u901a\u4fe1\uff0c\u76d1\u63a7\u7b49\u7b49\u57fa\u672c\u7684\u5206\u5e03\u5f0f\u95ee\u9898\u8981\u89e3\u51b3\u3002\u5982\u679c\u8bf4\u8fd9\u4e9b\u6280\u672f\u5728 OpenStack \u91cc\u505a\u7684\u7edf\u7edf\u90fd\u5f88\u5dee\uff0cOpenStack\u4f1a\u7acb\u523b\u6b7b\u6389\u4e48\uff1f\u4e0d\u4f1a\u7684\u3002\u56e0\u4e3aOpenStack \u505a\u4e86\u53e6\u4e00\u4e2a\u4e8b\uff0c\u5c31\u662f\u901a\u8fc7\u5f88\u5f00\u653e\uff08open\uff09\u7684\u65b9\u5f0f\u628a\u4e91\u8ba1\u7b97\u91cc\u7684\u5404\u79cd\u6982\u5ff5\u548c\u6280\u672f\u62bd\u8c61\u6210\u4e86\u5404\u79cd\u5bcc\u6709\u542b\u4e49\u7684\u64cd\u4f5c\uff0c\u6216\u8005\u76f4\u63a5\u8bf4\u662fAPI\u3002\u5728\u505a\u4e86\u8fd9\u4e2a\u5f88\u57fa\u7840\u7684\u4e8b\u60c5\u540e\uff0cOpenStack \u7684\u601d\u60f3\u548c\u80cc\u4e66\u5c31\u5f00\u59cb\u88ab\u4f20\u64ad\u4e86\u3002\u4e3e\u4e2a\u5f88\u7b80\u5355\u7684\u4f8b\u5b50\uff0c\u4e00\u4e2a\u505a\u4e8620\u5e74\u7684\u6280\u672f\u4eba\u521b\u4e1a\uff0c\u505a\u51fa\u4e86\u4e00\u4e2a\u51fa\u7c7b\u62d4\u8403\u7684\u4e00\u4e2a\u4e91\uff0c\u5176\u5b9e\u4ed6\u7684\u4ee3\u7801\u662f\u81ea\u5df1\u5199\u7684\uff0c\u53c2\u7167 OpenStack \u90fd\u7b97\u4e0d\u4e0a\uff0c\u4f46\u662f\u4ece\u4ed6\u7684\u9762\u677f\u4e0a\u6765\u770b\uff0c\u6ee1\u6ee1\u662f OpenStack \u7684\u5f71\u5b50\u3002\u8bf4\u4e2a\u66f4\u9760\u8c31\u7684\u4f8b\u5b50\uff0c\u5728 OpenStack \u5230\u6765\u4e4b\u540e\uff0cIBM\u6709\u673a\u4f1a\u505a\u4e91\u4e86\uff0c\u534e\u4e3a\u6709\u673a\u4f1a\u505a\u4e91\u4e86\uff0cvmware \u6709\u673a\u4f1a\u628a\u6838\u5fc3\u4ef7\u503c\u6269\u5c55\u5230\u865a\u62df\u5316\u4e4b\u5916\u7684\u5730\u65b9\u3002\u56e0\u4e3a\u6709\u4eba\u4e00\u65b9\u9762\u501f\u7740\u4e00\u4e2a\u516c\u5f00\u7684\u540d\u8bcd\u6211\u4eec\u53ef\u4ee5\u628a\u81ea\u5df1\u7684\u4e91\u4ea7\u54c1\u653e\u5230\u4e00\u8d77\u53bb\u6bd4\u4e00\u6bd4\u4e86\uff0c\u53e6\u4e00\u65b9\u9762 OpenStack \u5bf9\u4e91\u8ba1\u7b97\u8fd9\u4e2a\u4e8b\u60c5\u62bd\u8c61\u51fa\u6765\u7684\u79cd\u79cd\uff0c\u514d\u53bb\u4e86\u5404\u65b9\u6f2b\u957f\u7684\u63a2\u7d22\u7684\u9053\u8def\uff08\u535a\u58eb\u4eec\u53ef\u80fd\u66f4\u591a\u7684\u4f1a\u53bb\u7545\u60f3\u4e91\u4f1a\u5982\u4f55\uff0c\u5e76\u975e\u5982\u4f55\u5b9e\u73b0\uff09\u3002\u6700\u540e\u5c31\u662f\u7ed9\u4e86\u5f88\u591a\u5bcc\u6709\u7406\u60f3\u7684\u82f1\u96c4\u5c11\u5e74\u4e00\u4e2a\u53bb pk \u4f20\u7edf IT \u7684\u673a\u4f1a\u3002<br /><br />\u201cOpenStack \u7684\u7ade\u4e89\u5bf9\u624b\u662f vmware\u201d<br /><br />\u55ef...\u8fd9\u53e5\u8bdd\u5bf9\u4e8e\u6211\u4eec\u89c2\u4f17\u800c\u8a00\u5728\u5927\u591a\u6570\u65f6\u5019\u662f\u5bf9\u7684\uff0c\u4f46\u8fd9\u771f\u7684\u4e0d\u51c6\u786e\u3002\u51c6\u786e\u7684\u8bf4\u7ade\u4e89\u5173\u7cfb\u662f vmware \u548c kvm\u6216xen\uff0cvmware\u7684\u4e91\u4ea7\u54c1\u548c\u4ee5\u5f00\u6e90\u6280\u672f\u4e3a\u6838\u5fc3\u7684 OpenStack\u3002vmware \u662f\u4e2a\u865a\u62df\u5316\u6280\u672f\uff0c\u5e76\u4e14\u6709\u7740\u81ea\u5df1\u7684\u4e91\u89e3\u51b3\u65b9\u6848\u3002OpenStack \u4e0d\u662f*\u4e00\u4e2a*\u6280\u672f\uff0c\u662f\u4e00\u4e2a\u5f00\u653e\u7684\u6808\uff0ckvm\uff0cxen\uff0c\u751a\u81f3vmware\u81ea\u5df1\u7684\u6280\u672f\u4e5f\u53ef\u4ee5\u653e\u5230\u8fd9\u4e2a\u6808\u4e86\u3002\u5176\u5b9e OpenStack \u4e0e vmware\u4e4b\u95f4\u4e0d\u9700\u8981\u7ade\u4e89\uff01vmware \u8981\u505a\u7684\u5c31\u662f\u8ba9 OpenStack \u5f7b\u5e95\u652f\u6301\u81ea\u5bb6\u7684\u865a\u62df\u5316\u6280\u672f\uff0c\u7136\u540e\u548c RDO \u6bd4\uff0c\u548c\u534e\u4e3a\u7684\u4e91\u53bb\u6bd4\uff0c\u548c IBM \u7684\uff0c\u751a\u81f3\u548c\u5176\u4ed6\u521b\u4e1a\u56e2\u961f\u7684\u4e91\u53bb\u6bd4\u3002\u7136\u540e\u544a\u8bc9\u6d88\u8d39\u8005\uff0cvmware \u7684\u8d27\u624d\u662f\u6700\u725b\u7684\u3002\u4e5f\u6b63\u662f\u5982\u6b64\uff0cvmware\u4ee3\u8868\u7684\u662f\u4e00\u7cfb\u5217\u6280\u672f\uff0cOpenStack \u4fe8\u7136\u5df2\u7ecf\u6210\u4e3a\u4e86\u4e00\u79cd\u6807\u51c6\u4e86\u3002<br /><br />\u201cOpenStack \u7684\u5de5\u4f5c\u524d\u666f\u5982\u4f55\uff1f\u201d<br /><br />\u8fd9\u4e2a\u4e8b\u60c5\u53ea\u6709\u8eab\u5728\u5176\u4e2d\u7684\u5de5\u7a0b\u5e08\u624d\u66f4\u6709\u53d1\u8a00\u6743\u3002\u7531\u4e8e OpenStack \u672c\u8eab\u662f\u4e2a\u7528\u6765\u653e\u5404\u79cd\u6280\u672f\u7684\u6808\uff0c\u5e76\u975e\u6280\u672f\u672c\u8eab\uff0c\u5bf9\u4e8e\u5f88\u591a\u5de5\u7a0b\u5e08\u6765\u8bf4\uff0c\u81ea\u5df1\u5584\u4e8e OpenStack \u4e00\u65b9\u9762\u662f\u5584\u4e8e\u54ea\u5957\u6280\u672f\uff0c\u4e00\u65b9\u9762\u5584\u4e8e\u4e91\u8ba1\u7b97\u4e2d\u7684\u90a3\u4e9b\u6982\u5ff5\u548c\u62bd\u8c61\u3002\u5584\u4e8e\u524d\u8005\u7684\u4eba\u4e0d\u5fc5\u591a\u8bf4\u6709\u81ea\u8eab\u7684\u771f\u529f\u592b\u4e0d\u7528\u62c5\u5fc3\u5de5\u4f5c\u524d\u666f\u95ee\u9898\uff0c\u800c\u4ec5\u5584\u4e8e\u540e\u8005\u7684\u4eba\u6765\u8bf4\u6709\u81f3\u5c11\u4e24\u7c7b\u51fa\u8def\uff0c\u4e00\u4e2a\u662f\u505a operator\uff0c\u53e6\u4e00\u4e2a\u662f\u505a developer\u3002\u5373\u505a\u4f7f\u7528 OpenStack \u7684\u4e13\u5bb6\u6216\u8005\u505a\u5f00\u53d1 OpenStack \u7684\u4eba\uff08\u6709\u4eba\u8bf4\u4e8c\u8005\u53ef\u4ee5\u4e3a\u4e00\uff0c\u4f46\u5b9e\u9645\u60c5\u51b5\u5e76\u975e\u5982\u6b64\uff0c\u820d\u5f97\u82b1\u94b1\u8ba9\u4f60\u505a\u5f00\u6e90\u4ef7\u503c\u7684\u516c\u53f8\u6ca1\u51e0\u5bb6\uff0c\u800c\u4e14\u4e0d\u5e78\u7684\u662f redhat \u5728\u56fd\u5185\u4e0d\u62db OpenStack \u5f00\u53d1\u8005\uff09\u3002\u4f7f\u7528 OpenStack \u7684\u4e13\u5bb6\u5728\u5e02\u573a\u4e0a\u662f\u5341\u5206\u5341\u5206\u5341\u5206\u62a2\u624b\u7684\uff0c\u5728\u8bba\u575b\u4e0a\uff0c\u964c\u964c\uff0c\u9ad8\u5fb7\uff0c\u7f8e\u56e2\uff0c\u643a\u7a0b\uff0c360\uff0c\u751a\u81f3\u5f88\u591a\u4f20\u7edf\u4f01\u4e1a\u90fd\u9700\u8981\u62db\u8fd9\u6837\u7684\u4eba\uff08\u5f53\u7136\uff0c\u6709\u8fd9\u4e9b\u771f\u5b9e\u7684\u9700\u6c42\u5728\uff0cOpenStack\u4e5f\u4e0d\u4f1a\u6b7b\u7684\uff09\u3002\u800c\u5bf9\u4e8e\u90a3\u4e9b\u6709\u5fc3\u7ee7\u7eed\u521b\u9020\u548c\u53d1\u5c55 OpenStack \u8fd9\u4e2a\u5de5\u5177\u7684\u5de5\u7a0b\u5e08\u4eec\u80af\u5b9a\u4f1a\u5e0c\u671b\u6709\u90a3\u4e48\u4e00\u4efd\u5de5\u4f5c\u80fd\u8ba9\u4f60\u4e13\u6ce8\u5728\u8bbe\u8ba1\u548c\u7814\u53d1\u725b\u903c\u7684\u6846\u67b6\u4e0a\u5e76\u4e14\u6709\u80fd\u7ed9\u4f60\u5145\u5206\u65f6\u95f4\u548c\u73af\u5883\u7684\u5de5\u4f5c\u673a\u4f1a\u3002\u5f88\u4e0d\u5e78\u7684\u662f\uff0c\u8fd9\u6837\u7684\u5de5\u4f5c\u673a\u4f1a\u8d8a\u6765\u8d8a\u5c11\u4e86\uff0c\u67d0\u4eba\u5fc3\u5b58\u7406\u60f3\u7684\u56e2\u961f\u9047\u5230\u4e86\u7b2c\u4e00\u6b21\u7ecf\u6d4e\u5371\u673a\uff0cIBM \u80fd\u63d0\u4f9b\u81ea\u7531\u98ce\u6c14\u7684\u56e2\u961f\u4e5f\u4e0d\u518d\u62db\u4eba\uff08\u6709\u65b0\u7684\u56e2\u961f\u51fa\u73b0\u4e86\uff09\uff0credhat \u548c mirantis \u5728\u56fd\u5185\u5c1a\u672a\u5b9e\u65bd\u8ba1\u5212\uff0c\u6211\u8ba4\u8bc6\u7684\u4e00\u4e2a\u4eba\uff0c\u5728\u8fd1\u671f\u79bb\u804c\u7684\u8fd9\u6bb5\u65f6\u95f4\u5c31\u4e0d\u5f97\u4e0d\u9762\u5bf9\u7740\u8981\u53bb\u627e\u4e00\u4e2a\u5f88\u4e0d\u5f00\u5fc3\u7684\u5de5\u4f5c\u3002\u4e5f\u6b63\u56e0\u4e3a\u5982\u6b64\uff0c\u5f88\u591a\u56fd\u5916\u7684 offer \u4f1a\u771f\u6b63\u7684\u5411\u4f60\u62db\u624b\uff0c\u56e0\u4e3a\u5728\u5168\u7403\u5e02\u573a\u4e0a\uff0c\u9700\u8981\u7740\u5927\u91cf\u7684 operator \u548c developer\u3002\u5728\u8fd1\u51e0\u5e74\u80fd\u8d70\u5728\u524d\u5217\u7684\u4eba\uff0c\u80fd\u5728\u5f88\u77ed\u7684\u65f6\u95f4\uff0c\u61c2\u7cfb\u7edf\u61c2\u5206\u5e03\u5f0f\u8fdb\u800c\u6210\u4e3a\u66f4\u88ab\u9700\u8981\u7684\u4eba\u624d\u3002<br /><br />\u8fd1\u671f\uff0credhat china \u5df2\u7ecf\u5728\u62db\u552e\u524d\uff0c\u8fd9\u4f1a\u662f\u4e00\u4e2a\u9884\u5146\u4e48\uff1fmirantis \u5728\u5185\u90e8\u6d88\u606f\u91cc\u5df2\u7ecf\u6709\u4eba\u8981\u8bf4\u4ed6\u4eec\u8981\u8fdb\u519b\u4e2d\u56fd\uff0c\u518d\u6709\u5c31\u662f vmware \u5df2\u7ecf\u653e\u51fa\u4e86\u5927\u91cf\u62db\u6536 \u9ad8\u7ea7 OpenStack \u5f00\u53d1\u5de5\u7a0b\u5e08\u7684 JD\uff08\u8fd9\u4e2a\u5df2\u7ecf\u4e0d\u662f\u9884\u5146\u4e86 : )\uff09\u3002<br /><br />\u613f\u666f\uff1a\u672a\u6765\u4f1a\u6709\u4ec0\u4e48\u4e8b\u60c5\u53d1\u751f\uff1f<br /><br />\u4efb\u4f55\u4ea7\u4e1a\u90fd\u662f\u5728\u4e00\u6ce2\u6ce2\u6d6a\u6f6e\u4e2d\u4e0d\u65ad\u63a8\u8fdb\uff0c\u5982\u679c\u6682\u4e0d\u8003\u8651\u53ef\u80fd\u51fa\u73b0\u7684\u6d6a\u6f6e\uff0c\u6211\u731c\u6d4b\u672a\u6765\u7684 OpenStack \u5e02\u573a\u4f1a\u53d8\u6210\u5f88\u591a\u62e5\u6709\u5b58\u50a8\u7f51\u7edc\u865a\u62df\u5316\u5b9e\u9645\u6280\u672f\u7684\u516c\u53f8\u901a\u8fc7 OpenStack \u7684\u5f62\u5f0f\u8fdb\u884c pk\uff0c\u6bd4\u5982\u534e\u4e3a\u7684\u4e91\uff0cvmware \u7684\u4e91\u7b49\u7b49\u3002\u7eaf\u4e2a\u4eba\u731c\u6d4b\u800c\u5df2\u3002\u53e6\u5916\uff0c\u672a\u6765\u51fa\u73b0\u7684\u6d6a\u6f6e\u5df2\u7ecf\u51fa\u73b0\u7684\u96cf\u5f62\u662f\u9752\u4e91\uff0c\u800c\u4e14\u57fa\u4e8e vps \u7684\u4e91\u53ea\u662f\u4ed6\u4eec\u521b\u4e1a\u521d\u59cb\u7684\u7b2c\u4e00\u6b65\uff0c\u63a5\u4e0b\u6765\uff0c\u4f1a\u6709\u66f4\u591a\u6765\u81ea\u4e8e\u4ed6\u4eec\u7684\u613f\u666f\u4f1a\u6d6e\u73b0\u5728\u4eba\u4eec\u773c\u524d\u3002\u8fd8\u6ca1\u6709\u51fa\u73b0\u7684\uff0c\u6211\u4eec\u53ef\u4ee5\u5c3d\u53ef\u80fd\u7684\u60f3\u60f3\u8fd8\u4f1a\u51fa\u73b0\u4ec0\u4e48\uff1fOpenStack \u7684API\u8d8a\u6765\u8d8a\u81c3\u80bf\uff0c\u8d8a\u6765\u8d8a\u5931\u53bb\u62bd\u8c61\u7684\u610f\u4e49\uff0c\u90a3\u4e00\u4e2a API \u7b80\u6d01\uff0c\u5065\u58ee\uff0c\u517c\u5bb9\u6027\u5f3a\u7684\u53d1\u884c\u7248\u4f1a\u51fa\u73b0\u4e48\uff1fOpenStack \u914d\u7f6e\u8d8a\u6765\u8d8a\u591a\uff0c\u4f55\u65f6\u80fd\u51fa\u73b0\u4e00\u4e2a\u7b80\u5316\u914d\u7f6e\u7684\u6539\u8fdb\uff1f\u652f\u6301\u4e86 docker \u7684 OpenStack \u4f55\u65f6\u80fd\u66f4\u8fdb\u4e00\u6b65\u8ddf\u4e0a\u6dd8\u6c70 vps \u7684\u6b65\u4f10\uff1f\u57fa\u4e8e\u64e6\u9664\u7801\u7684\u5b58\u50a8\u65b9\u6848\uff0c\u600e\u4e48\u53bb\u5212\u5206 region \u548c cells\uff1f\u7b49\u7b49\u7b49\u7b49\uff0c\u4efb\u4f55\u80fd\u6539\u8fdb\u80fd\u9769\u65b0\u7684\u5730\u65b9\u9047\u5230\u4e86\u4efb\u4f55\u6709\u6267\u884c\u529b push \u7684\u4eba\uff0c\u5c31\u4f1a\u51fa\u73b0 OpenStack \u7684\u613f\u666f\u3002\u8fd9\u4e2a\u4e16\u754c\u91cc\uff0c\u8fd8\u9700\u8981\u66f4\u591a\u66f4\u597d\u7684\u7f16\u5267 : )<br /><br />\u8865\u6700\u540e\u4e00\u53e5\uff1a<br /><br />\u521b\u9020\u793e\u4f1a\u7684\u4ef7\u503c\uff0c\u9700\u8981\u4e91\u8ba1\u7b97\u7684\u5b8c\u7f8e\u7f16\u5267\uff1b\u4e91\u8ba1\u7b97\u7684\u5b8c\u7f8e\u7f16\u5267\uff0c\u9700\u8981\u5168\u4e16\u754c\u5404\u79cd\u6280\u672f\uff0c\u6846\u67b6\uff0c\u6807\u51c6\u7b49\u7b49\u7684\u63a8\u52a8\uff1b\u5728\u8fd9\u4e2a\u5de8\u5927\u7684\u6d6a\u6f6e\u4e4b\u4e2d\uff0c\u9700\u8981\u4e0d\u61c8\u7684\u5f00\u53d1\u8005\uff0c\u79ef\u6781\u7684\u601d\u8003\u8005\uff0c\u5927\u80c6\u7684\u5984\u60f3\u8005\u5728\u4e00\u8d77\u76f8\u4e92\u6392\u65a5\u548c\u5408\u4f5c\u5171\u540c\u5b8c\u6210\u8fd9\u4e00\u80a1\u6d6a\u6f6e \uff08\u4e00\u4e2a\u63a8\u8350\u8bfb\u7269\uff1a <a target=\"_blank\" href=\"http://www.csdn.net/article/2013-07-08/2815539\" rel=\"nofollow\">http://www.csdn.net/article/2013-07-08/2815539</a> \uff09", 
      "date_published": "2014-05-15T08:35:24+00:00", 
      "title": "[\u8f7b\u55b7] OpenStack \u7684\u613f\u666f", 
      "id": "https://www.v2ex.com/t/112694"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/106898", 
      "date_modified": "2014-04-01T22:02:11+00:00", 
      "content_html": "<a target=\"_blank\" href=\"http://openstack.redhat.com/Image_resources\" rel=\"nofollow\">http://openstack.redhat.com/Image_resources</a><br /><br /><a target=\"_blank\" href=\"https://github.com/rackerjoe/oz-image-build\" rel=\"nofollow\">https://github.com/rackerjoe/oz-image-build</a><br /><br />OpenStack \u5b9e\u5728\u662f\u592a\u9700\u8981\u4e00\u4e2a\u50cf <a target=\"_blank\" href=\"http://vagrantbox.es\" rel=\"nofollow\">http://vagrantbox.es</a> \u90a3\u6837\u7684\u7f51\u7ad9\u4e86\uff0c\u6216\u8005\u5176\u5b9e\u5df2\u7ecf\u6709\u4e86\u4f46\u662f\u6211\u4e0d\u77e5\u9053\uff1f", 
      "date_published": "2014-04-01T21:34:17+00:00", 
      "title": "Pre-Built OpenStack Images", 
      "id": "https://www.v2ex.com/t/106898"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/96387", 
      "title": "openstack-debian-images", 
      "id": "https://www.v2ex.com/t/96387", 
      "date_published": "2014-01-09T18:36:32+00:00", 
      "content_html": "<a href=\"http://packages.debian.org/search?keywords=openstack-debian-images\" rel=\"nofollow\">http://packages.debian.org/search?keywords=openstack-debian-images</a><br /><br />\u53ef\u4ee5\u7528\u6765\u521b\u5efa OpenStack image \u7684 Debian \u5de5\u5177\u5305\u3002"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/96386", 
      "title": "\u73b0\u5728\u7f51\u4e0a\u6709\u6ca1\u6709\u90a3\u79cd\u6bd4\u8f83\u9760\u8c31\u53ef\u4ee5\u76f4\u63a5\u7ed9 glance \u5bfc\u5165\u7684 OpenStack Linux \u7cfb\u7edf\u6a21\u677f\u5e93\uff1f", 
      "id": "https://www.v2ex.com/t/96386", 
      "date_published": "2014-01-09T18:32:39+00:00", 
      "content_html": "\u6216\u8005\uff0c\u5176\u5b9e\u5927\u5bb6\u4e3b\u8981\u9700\u8981\u7684\u5c31\u662f\u4e0b\u9762 6 \u4e2a\u6a21\u677f\uff1a<br /><br />- Ubuntu 12.04 LTS<br />- Ubuntu \u6700\u65b0\u7248<br />- CentOS 5<br />- CentOS 6<br />- Debian 6<br />- Debian 7"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/95353", 
      "title": "\u5173\u4e8e\u516c\u53f8\u5185\u90e8\u4e91\u7684\u5c0f\u8c03\u67e5", 
      "id": "https://www.v2ex.com/t/95353", 
      "date_published": "2014-01-02T04:21:09+00:00", 
      "content_html": "\u5411\u5927\u5bb6\u505a\u4e00\u4e2a\u8c03\u67e5\uff0c\u4f60\u4eec\u5728\u7684\u516c\u53f8\uff0c\u662f\u5426\u6709\u63d0\u4f9b\u53ef\u4ee5\u81ea\u7531\u7533\u8bf7\u7684\u7528\u4e8e\u5f00\u53d1\u548c\u6d4b\u8bd5\u7684\u5185\u90e8\u4e91\u670d\u52a1\uff1f<br /><br />\u5982\u679c\u6709\uff0c\u662f\u7528 OpenStack \u8fd8\u662f\u5176\u4ed6\u7684\u4ec0\u4e48\u4ea7\u54c1\u642d\u5efa\u7684\u5462\uff1f<br /><br />\u89c4\u6a21\u5927\u6982\u5982\u4f55\uff1f\u6bd4\u5982\u603b\u5185\u5b58\u6570\uff1f"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ihacku", 
        "name": "ihacku", 
        "avatar": "https://cdn.v2ex.com/avatar/c8cd/63e1/3073_large.png?m=1675398764"
      }, 
      "url": "https://www.v2ex.com/t/92453", 
      "title": "Rally - a Benchmark-as-a-Service project for OpenStack", 
      "id": "https://www.v2ex.com/t/92453", 
      "date_published": "2013-12-09T13:01:08+00:00", 
      "content_html": "<a href=\"https://wiki.openstack.org/wiki/Rally\" rel=\"nofollow\">https://wiki.openstack.org/wiki/Rally</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/82781", 
      "title": "Ironic", 
      "id": "https://www.v2ex.com/t/82781", 
      "date_published": "2013-09-17T05:16:37+00:00", 
      "content_html": "<a href=\"http://www.ustack.com/blog/ironic/\" rel=\"nofollow\">http://www.ustack.com/blog/ironic/</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/pscl", 
        "name": "pscl", 
        "avatar": "https://cdn.v2ex.com/avatar/89e3/b2c8/23420_large.png?m=1386922321"
      }, 
      "url": "https://www.v2ex.com/t/81867", 
      "title": "OpenStack\u4e2d\uff0cwindows\u865a\u62df\u673a\u5982\u4f55\u901a\u8fc7\u4e32\u53e3\u8f93\u51fa\u542f\u52a8\u4fe1\u606f\u7b49\u5230console.log\uff1f", 
      "id": "https://www.v2ex.com/t/81867", 
      "date_published": "2013-09-09T11:57:41+00:00", 
      "content_html": "\u5927\u5bb6\u597d\uff0c\u6bcf\u4e2a\u865a\u62df\u673a\u76ee\u5f55\u4e0b\u90fd\u6709\u4e2aconsole.log\uff0clinux\u901a\u8fc7\u914d\u7f6econsole=ttyS0\u53ef\u4ee5\u5c06\u63a7\u5236\u53f0\u4fe1\u606f\u8f93\u51fa\u5230console.log\uff0c\u4f46\u662fwindows\u7cfb\u7edf\u5982\u4f55\u5b9e\u73b0\u8fd9\u4e2a\u529f\u80fd\uff1f\u6216\u8005\u6709\u5176\u4ed6\u5b9e\u73b0\u65b9\u6cd5\uff1f<br />\u8c22\u8c22\uff01"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ihacku", 
        "name": "ihacku", 
        "avatar": "https://cdn.v2ex.com/avatar/c8cd/63e1/3073_large.png?m=1675398764"
      }, 
      "url": "https://www.v2ex.com/t/81269", 
      "title": "OpenStack\u96c6\u7fa4\u914d\u7f6e\u8ba1\u7b97\u5668", 
      "id": "https://www.v2ex.com/t/81269", 
      "date_published": "2013-09-04T05:30:47+00:00", 
      "content_html": "<a href=\"http://www.mirantis.com/openstack-services/bom-calculator/\" rel=\"nofollow\">http://www.mirantis.com/openstack-services/bom-calculator/</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/80097", 
      "date_modified": "2013-08-24T12:49:38+00:00", 
      "content_html": "<a href=\"http://youtu.be/owpi1WF9dws\" rel=\"nofollow\">http://youtu.be/owpi1WF9dws</a><br /><br /><a href=\"https://forge.puppetlabs.com/puppetlabs/openstack\" rel=\"nofollow\">https://forge.puppetlabs.com/puppetlabs/openstack</a>", 
      "date_published": "2013-08-24T12:44:34+00:00", 
      "title": "\u901a\u8fc7 Puppet \u5b89\u88c5 OpenStack", 
      "id": "https://www.v2ex.com/t/80097"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/78773", 
      "title": "DevStack in 1 Minute", 
      "id": "https://www.v2ex.com/t/78773", 
      "date_published": "2013-08-11T16:54:09+00:00", 
      "content_html": "<a href=\"http://www.sebastien-han.fr/blog/2013/08/08/devstack-in-1-minute/\" rel=\"nofollow\">http://www.sebastien-han.fr/blog/2013/08/08/devstack-in-1-minute/</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/76773", 
      "title": "C2 Pandora", 
      "id": "https://www.v2ex.com/t/76773", 
      "date_published": "2013-07-23T22:16:28+00:00", 
      "content_html": "<a href=\"https://code.google.com/p/c2-pandora/\" rel=\"nofollow\">https://code.google.com/p/c2-pandora/</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/76535", 
      "date_modified": "2013-07-22T00:52:22+00:00", 
      "content_html": "<a href=\"https://wiki.openstack.org/wiki/Trove\" rel=\"nofollow\">https://wiki.openstack.org/wiki/Trove</a><br /><br />DB as a service.", 
      "date_published": "2013-07-22T00:51:27+00:00", 
      "title": "Trove", 
      "id": "https://www.v2ex.com/t/76535"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/71668", 
      "title": "OpenStack 2013.1.2 Released", 
      "id": "https://www.v2ex.com/t/71668", 
      "date_published": "2013-06-07T23:17:10+00:00", 
      "content_html": "<a href=\"http://lists.openstack.org/pipermail/openstack-announce/2013-June/000109.html\" rel=\"nofollow\">http://lists.openstack.org/pipermail/openstack-announce/2013-June/000109.html</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/71553", 
      "title": "Moniker", 
      "id": "https://www.v2ex.com/t/71553", 
      "date_published": "2013-06-07T01:33:11+00:00", 
      "content_html": "<a href=\"https://wiki.openstack.org/wiki/Moniker\" rel=\"nofollow\">https://wiki.openstack.org/wiki/Moniker</a><br /><br />DNS-as-a-service for OpenStack."
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/67298", 
      "title": "UnitedStack is hiring", 
      "id": "https://www.v2ex.com/t/67298", 
      "date_published": "2013-04-29T02:35:53+00:00", 
      "content_html": "<a href=\"http://www.ustack.com/unitedstack-first-recruiment/\" rel=\"nofollow\">http://www.ustack.com/unitedstack-first-recruiment/</a><br /><br />\u539f\u65b0\u6d6a\u4e91\u7684\u8d44\u6df1\u6280\u672f\u540c\u5b66 @<a href=\"/member/freedomhui\">freedomhui</a> \u51fa\u6765\u521b\u4e1a\uff0c\u5f97\u5230\u7845\u8c37\u9876\u7ea7 VC \u652f\u6301\uff0c\u5728\u7845\u8c37\u6ce8\u518c\u4e86\u516c\u53f8\uff0c\u5317\u4eac\u7845\u8c37\u4e24\u5730\u529e\u516c\u3002<br /><br />\u4e00\u4e2a\u5f88\u52b1\u5fd7\u7684\u6545\u4e8b\uff0c\u521a\u521a\u5f00\u59cb\u3002"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/66071", 
      "title": "Red Hat \u63a8\u51fa\u7684 OpenStack \u53d1\u884c\u7248", 
      "id": "https://www.v2ex.com/t/66071", 
      "date_published": "2013-04-16T18:04:26+00:00", 
      "content_html": "<a href=\"http://openstack.redhat.com/\" rel=\"nofollow\">http://openstack.redhat.com/</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/66066", 
      "title": "OpenStack Summit 2013 \u7684\u89c6\u9891\u76f4\u64ad", 
      "id": "https://www.v2ex.com/t/66066", 
      "date_published": "2013-04-16T15:57:01+00:00", 
      "content_html": "<a href=\"http://www.openstack.org/\" rel=\"nofollow\">http://www.openstack.org/</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/62760", 
      "title": "OpenStack Operations Guide", 
      "id": "https://www.v2ex.com/t/62760", 
      "date_published": "2013-03-12T18:03:54+00:00", 
      "content_html": "<a href=\"http://docs.openstack.org/ops/\" rel=\"nofollow\">http://docs.openstack.org/ops/</a><br /><br />\u4e00\u672c\u5173\u4e8e\u8bbe\u8ba1\u548c\u90e8\u7f72 OpenStack \u7684\u6700\u65b0\u6587\u6863\u3002"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/59440", 
      "title": "OpenStack 2012.2.3 Released", 
      "id": "https://www.v2ex.com/t/59440", 
      "date_published": "2013-02-01T00:28:42+00:00", 
      "content_html": "<a href=\"http://wiki.openstack.org/ReleaseNotes/2012.2.3\" rel=\"nofollow\">http://wiki.openstack.org/ReleaseNotes/2012.2.3</a>"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Livid", 
        "name": "Livid", 
        "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776328067"
      }, 
      "url": "https://www.v2ex.com/t/58227", 
      "title": "Heat", 
      "id": "https://www.v2ex.com/t/58227", 
      "date_published": "2013-01-20T16:23:45+00:00", 
      "content_html": "<a href=\"http://wiki.openstack.org/Heat\" rel=\"nofollow\">http://wiki.openstack.org/Heat</a><br /><br />OpenStack \u65b0\u7ec4\u4ef6\u3002"
    }
  ]
}