{"id":261242,"date":"2015-07-13T10:11:07","date_gmt":"2015-07-13T06:11:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=261242"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=261242","title":{"rendered":"OpenStack \u2014 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u00ab\u0440\u0443\u043a\u0430\u043c\u0438\u00bb Kilo"},"content":{"rendered":"<p>     \t\u041f\u0440\u0438\u0432\u0435\u0442 \u0432\u0441\u0435\u043c \u0425\u0430\u0431\u0440\u0430\u043b\u044e\u0434\u044f\u043c!<\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 <a href=\"http:\/\/habrahabr.ru\/post\/261715\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 DevStack. \u0412 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0451 \u00ab\u043e\u0431\u043b\u0430\u043a\u043e\u00bb OpenStack \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 (Controller, Compute) \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438:  <\/p>\n<ul>\n<li>Keystone<\/li>\n<li>Glance<\/li>\n<li>Nova<\/li>\n<li>Neutron<\/li>\n<li>Cinder<\/li>\n<li>Horizon<\/li>\n<\/ul>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u044d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d (\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 CPU \u043d\u0430 <i>compute<\/i>), \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0441\u043a\u0438 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0445 \u043a VM, \u043d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434.<\/p>\n<p>  \u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e! \u041c\u043d\u043e\u0433\u043e \u00ab\u043f\u043e\u0440\u0442\u044f\u043d\u043e\u043a\u00bb \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438!<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443:  <\/p>\n<ul>\n<li>\u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u044f \u043c\u043e\u0433 \u0437\u0430\u0431\u044b\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0434\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u0445, \u0437\u0430\u0431\u044b\u0442\u044c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u043b\u0438 \u0435\u0449\u0451 \u0447\u0442\u043e-\u0442\u043e.<\/li>\n<li>\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0442, \u043d\u043e \u0431\u0435\u0440\u0451\u0442 \u0441\u0432\u043e\u0438 \u043a\u043e\u0440\u043d\u0438 \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0441\u0442\u044c <a href=\"http:\/\/docs.openstack.org\/kilo\/install-guide\/install\/apt\/content\/\">\u0437\u0434\u0435\u0441\u044c<\/a> (<i>\u0430\u043d\u0433\u043b.<\/i>)<\/li>\n<li>\u0426\u0435\u043b\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u043d \u043f\u043e OpenStack \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435. \u041d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0443 \u043c\u0435\u043d\u044f, \u043d\u043e \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u044d\u0442\u043e \u043f\u043e\u0431\u0443\u0434\u0438\u0442 \u043a\u043e\u0433\u043e-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435. \u0422\u0430\u043a \u0436\u0435, \u0433\u043e\u0442\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0440\u0430\u0432\u043a\u0430\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0434\u0430\u0431\u044b \u043e\u043d\u0430 \u0441\u0442\u0430\u043b\u0430 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0439.<\/li>\n<\/ul>\n<p>  \u041d\u0435 \u043d\u0430\u0434\u043e \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e \u00ab\u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u044c\u00bb. \u042d\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c OpenStack-\u0441\u0440\u0435\u0434\u0443 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443, \u043d\u043e \u043d\u0435 \u043d\u0430\u0443\u0447\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0437\u043d\u0430\u043d\u0438\u0435 \u0432 \u043f\u043e\u043b\u0435\u0432\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445.<\/p>\n<h5><b>\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?<\/b><\/h5>\n<p>  <\/p>\n<ul>\n<li>Controller <i>i3-540\/8Gb\/2x120Gb + 2x500Gb\/2NIC<\/i><\/li>\n<li>Compute <i>i7-2600\/32Gb\/2x500Gb\/1NIC<\/i><\/li>\n<\/ul>\n<p>  \u041e\u0421: <i>Ubuntu 14.04<\/i> (\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c CentOS, \u043d\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 Ubuntu).<br \/>  \u0420\u0435\u0434\u0430\u043a\u0446\u0438\u044f OpenStack: <i>Kilo<\/i><\/p>\n<h5><b>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/b><\/h5>\n<p>  <\/p>\n<h6>\u0421\u0435\u0442\u044c<\/h6>\n<p>  \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f 4 \u0441\u0435\u0442\u0438:<br \/>  Management \u2014 10.0.0.0\/24 \u2014 VLAN 10<br \/>  Tunnel \u2014 10.0.1.0\/24 \u2014 VLAN 11<br \/>  Storage \u2014 10.0.2.0\/24 \u2014 VLAN 12<br \/>  External \u2014 192.168.1.0\/24<\/p>\n<p>  External-\u0441\u0435\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043a\u0443\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c, \u043d\u043e \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0451\u0442\u0443 \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u043e\u0436\u0435\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u0432\u043e \u00ab\u0432\u0441\u0435\u043c\u0438\u0440\u043d\u0443\u044e \u043f\u0430\u0443\u0442\u0438\u043d\u0443\u00bb \u2014 \u0432\u0441\u0451 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0435 \u043e\u0431\u043b\u0430\u043a\u043e.<\/p>\n<p>  \u0411\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 dns-server. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b dnsmasq.  <\/p>\n<pre><code class=\"bash\"># cat \/etc\/hosts 10.0.0.11        controller 10.0.0.31        compute1 <\/code><\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># cat \/etc\/network\/interfaces auto p2p1.10 iface p2p1.10 inet static     address 10.0.0.11     netmask 255.255.255.0     gateway 10.0.0.1     dns-nameservers 10.0.0.1  auto p2p1.11 iface p2p1.11 inet static     address 10.0.1.11     netmask 255.255.255.0  auto p2p1.12 iface p2p1.12 inet static     address 10.0.2.11     netmask 255.255.255.0  # \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438 auto p3p1 iface p3p1 inet manual         up ip link set dev $IFACE up         down ip link set dev $IFACE down  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0443\u0437\u043b\u0435:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># cat \/etc\/network\/interfaces auto p2p1.10 iface p2p1.10 inet static     address 10.0.0.31     netmask 255.255.255.0     gateway 10.0.0.1     dns-nameservers 10.0.0.1  auto p2p1.11 iface p2p1.11 inet static     address 10.0.1.31     netmask 255.255.255.0  auto p2p1.12 iface p2p1.12 inet static     address 10.0.2.31     netmask 255.255.255.0  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0445\u043e\u0434\u0438\u043b\u0438 \u0432 \u0441\u0435\u0442\u044c.<\/p>\n<h6>NTP<\/h6>\n<p>  \u041d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435:  <\/p>\n<pre><code class=\"bash\"># apt-get install ntp -y # cat \/etc\/ntp.conf  server ntp.oceantelecom.ru iburst restrict -4 default kod notrap nomodify restrict -6 default kod notrap nomodify # service ntp stop # ntpdate ntp.oceantelecom.ru # service ntp start <\/code><\/pre>\n<p>  \u041d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u043e\u0434\u0435:  <\/p>\n<pre><code class=\"bash\"># apt-get install ntp -y # cat \/etc\/ntp.conf  server controller iburst # service ntp stop # ntpdate controller # service ntp start <\/code><\/pre>\n<h6>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Kilo<\/h6>\n<pre><code class=\"bash\"># apt-get install ubuntu-cloud-keyring # echo &quot;deb http:\/\/ubuntu-cloud.archive.canonical.com\/ubuntu&quot; &quot;trusty-updates\/kilo main&quot; &gt; \/etc\/apt\/sources.list.d\/cloudarchive-kilo.list <\/code><\/pre>\n<p>  Kilo \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043e\u043b\u043e\u0434\u043e\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u2014 \u0430\u043f\u0440\u0435\u043b\u044c 2015 \u0433\u043e\u0434\u0430. \u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 Horizon.<br \/>  \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/wiki.openstack.org\/wiki\/ReleaseNotes\/Kilo\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u0441\u044f:  <\/p>\n<pre><code class=\"bash\"># apt-get update && apt-get dist-upgrade -y <\/code><\/pre>\n<h6>SQL + RabbitMQ<\/h6>\n<p>  \u0412 \u0440\u043e\u043b\u0438 SQL \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c MySQL, PostgreSQL, Oracle \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f SQLAlchemy. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c MariaDB \u043a\u0430\u043a \u0438 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0430\u043d\u0443\u0430\u043b\u0435.  <\/p>\n<pre><code class=\"bash\"># apt-get install mariadb-server python-mysqldb -y # cat \/etc\/mysql\/conf.d\/mysqld_openstack.cnf [mysqld] bind-address = 10.0.0.11 default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci init-connect = 'SET NAMES utf8' character-set-server = utf8  # service mysql restart # mysql_secure_installation <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 HDD \u0441 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0442\u043e \u0444\u0430\u0439\u043b\u044b \u0411\u0414 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0438 \u044d\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u043d\u0438\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0435\u043d\u0434 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u043e\u0434\u0430\u043c\u0438.<\/p>\n<p>  \u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 RabbitMQ:  <\/p>\n<pre><code class=\"bash\"># apt-get install rabbitmq-server # rabbitmq-plugins enable rabbitmq_management # service rabbitmq-server restart <\/code><\/pre>\n<p>  \u041c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u044d\u044d\u0431\u0438\u0442\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e WebGUI, \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0441\u043b\u0435\u0436\u0435\u043d\u0438\u044f \u0437\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u043c\u0438.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u0435\u043c\u0443:  <\/p>\n<pre><code class=\"bash\">rabbitmqctl add_user openstack RABBIT_PASS rabbitmqctl set_permissions openstack &quot;.*&quot; &quot;.*&quot; &quot;.*&quot; <\/code><\/pre>\n<h5><b>Keystone<\/b><\/h5>\n<p>  Keystone \u2014 \u0446\u0435\u043d\u0442\u0440 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f OpenStack. \u0412\u0441\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e. \u0414\u0430\u043d\u043d\u044b\u0435 Keystone \u0445\u0440\u0430\u043d\u0438\u0442 \u0432 SQL-\u0411\u0414, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0430\u043a \u0436\u0435 \u0438 memcache.<\/p>\n<p>  \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0411\u0414:  <\/p>\n<pre><code class=\"bash\"># mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS'; <\/code><\/pre>\n<p>  \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u0430\u043a \u0438 \u0432\u0435\u0437\u0434\u0435.<\/p>\n<p>  \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 keystone \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:  <\/p>\n<pre><code class=\"bash\"># echo &quot;manual&quot; &gt; \/etc\/init\/keystone.override # apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache <\/code><\/pre>\n<p>  \u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 <i>\/etc\/keystone\/keystone.conf<\/i> \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:  <\/p>\n<pre><code class=\"bash\">[DEFAULT] admin_token = ADMIN_TOKEN  [database] connection = mysql:\/\/keystone:KEYSTONE_DBPASS@controller\/keystone  [memcache] servers = localhost:11211  [token] provider = keystone.token.providers.uuid.Provider driver = keystone.token.persistence.backends.memcache.Token  [revoke] driver = keystone.contrib.revoke.backends.sql.Revoke <\/code><\/pre>\n<p>  <i>ADMIN_TOKEN<\/i> \u0433\u0435\u043d\u0435\u0440\u0438\u043c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 &quot;<i>openssl rand -hex 16<\/i>&quot;.<br \/>  \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0411\u0414 \u0441 SQL \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c  <\/p>\n<pre><code class=\"bash\"># su -s \/bin\/sh -c &quot;keystone-manage db_sync&quot; keystone <\/code><\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0430\u043f\u0430\u0447:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># cat \/etc\/apache2\/apache2.conf ... ServerName controller ... # cat \/etc\/apache2\/sites-available\/wsgi-keystone.conf Listen 5000 Listen 35357  &lt;VirtualHost *:5000&gt;     WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP}     WSGIProcessGroup keystone-public     WSGIScriptAlias \/ \/var\/www\/cgi-bin\/keystone\/main     WSGIApplicationGroup %{GLOBAL}     WSGIPassAuthorization On     &lt;IfVersion &gt;= 2.4&gt;       ErrorLogFormat &quot;%{cu}t %M&quot;     &lt;\/IfVersion&gt;     LogLevel info     ErrorLog \/var\/log\/apache2\/keystone-error.log     CustomLog \/var\/log\/apache2\/keystone-access.log combined &lt;\/VirtualHost&gt;  &lt;VirtualHost *:35357&gt;     WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone display-name=%{GROUP}     WSGIProcessGroup keystone-admin     WSGIScriptAlias \/ \/var\/www\/cgi-bin\/keystone\/admin     WSGIApplicationGroup %{GLOBAL}     WSGIPassAuthorization On     &lt;IfVersion &gt;= 2.4&gt;       ErrorLogFormat &quot;%{cu}t %M&quot;     &lt;\/IfVersion&gt;     LogLevel info     ErrorLog \/var\/log\/apache2\/keystone-error.log     CustomLog \/var\/log\/apache2\/keystone-access.log combined &lt;\/VirtualHost&gt;  # ln -s \/etc\/apache2\/sites-available\/wsgi-keystone.conf \/etc\/apache2\/sites-enabled # mkdir -p \/var\/www\/cgi-bin\/keystone # curl http:\/\/git.openstack.org\/cgit\/openstack\/keystone\/plain\/httpd\/keystone.py?h=stable\/kilo | tee \/var\/www\/cgi-bin\/keystone\/main \/var\/www\/cgi-bin\/keystone\/admin # chown -R keystone:keystone \/var\/www\/cgi-bin\/keystone # chmod 755 \/var\/www\/cgi-bin\/keystone\/* # service apache2 restart # rm -f \/var\/lib\/keystone\/keystone.db <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041c\u044b \u043c\u0435\u043d\u044f\u0435\u043c <i>ServerName<\/i> \u043d\u0430 \u0438\u043c\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<br \/>  \u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043c\u044b \u0431\u0435\u0440\u0451\u043c \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f openstack.<\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c endpoint`\u044b. \u0412\u043e\u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f endpoint`\u0430\u043c openstack \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 keystone:  <\/p>\n<pre><code class=\"bash\"># export OS_TOKEN=ADMIN_TOKEN # export OS_URL=http:\/\/controller:35357\/v2.0 <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0435\u0440\u0432\u0438\u0441:  <\/p>\n<pre><code class=\"bash\"># openstack service create  --name keystone --description &quot;OpenStack Identity&quot; identity <\/code><\/pre>\n<p>  \u041d\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u043c API endpoint:  <\/p>\n<pre><code class=\"bash\"># openstack endpoint create  --publicurl http:\/\/controller:5000\/v2.0 --internalurl http:\/\/controller:5000\/v2.0 --adminurl http:\/\/controller:35357\/v2.0 --region RegionOne  identity <\/code><\/pre>\n<p>  <i>RegionOne<\/i> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u0435 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u0438\u043c\u044f. \u042f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u00ab\u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0440\u043e\u043b\u0438.<\/p>\n<p>  \u0411\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043c\u0430\u043d\u0443, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0451 \u0442\u0430\u043a \u0436\u0435: \u0430\u0434\u043c\u0438\u043d \u0438 \u0434\u0435\u043c\u043e  <\/p>\n<pre><code class=\"bash\"># openstack project create --description &quot;Admin Project&quot; admin # openstack user create --password-prompt admin # openstack role create admin # openstack role add --project admin --user admin admin <\/code><\/pre>\n<p>  \u041f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0430 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u0438. \u041f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443: \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u00abAdmin Project\u00bb, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0440\u043e\u043b\u044c admin, \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0440\u043e\u043b\u044c\u044e.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442<i>service<\/i>:  <\/p>\n<pre><code class=\"bash\"># openstack project create --description &quot;Service Project&quot; service <\/code><\/pre>\n<p>  \u041f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 admin`\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u043c demo:  <\/p>\n<pre><code class=\"bash\"># openstack project create --description &quot;Demo Project&quot; demo # openstack user create --password-prompt demo # openstack role create user # openstack role add --project demo --user demo user <\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0441\u043a\u0440\u0438\u043f\u0442\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># cat admin-openrc.sh export OS_PROJECT_DOMAIN_ID=default export OS_USER_DOMAIN_ID=default export OS_PROJECT_NAME=admin export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_AUTH_URL=http:\/\/controller:35357\/v3 export OS_IMAGE_API_VERSION=2 export OS_VOLUME_API_VERSION=2  # cat demo-openrc.sh export OS_PROJECT_DOMAIN_ID=default export OS_USER_DOMAIN_ID=default export OS_PROJECT_NAME=demo export OS_TENANT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=DEMO_PASS export OS_AUTH_URL=http:\/\/controller:5000\/v3 export OS_IMAGE_API_VERSION=2 export OS_VOLUME_API_VERSION=2  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e:  <\/p>\n<pre><code class=\"bash\"># source admin-openrc.sh <\/code><\/pre>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 <i>keystone<\/i> \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430.<\/p>\n<h5><b>Glance<\/b><\/h5>\n<p>  Glance \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 OpenStack \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 (\u043e\u0431\u0440\u0430\u0437\u043e\u0432) \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u041e\u0431\u0440\u0430\u0437\u044b \u043c\u043e\u0433\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 Swift, \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Glance`\u0430, \u043d\u043e \u0438 \u0433\u0434\u0435-\u0442\u043e \u0435\u0449\u0451 \u2014 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0442 \u043e\u0431\u0440\u0430\u0437 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e http.<\/p>\n<p>  \u041d\u0430\u0447\u043d\u0451\u043c \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u0441 <i>mysql<\/i>:  <\/p>\n<pre><code class=\"bash\"># mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS'; <\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 <i>keystone<\/i> \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435:  <\/p>\n<pre><code class=\"bash\"># openstack user create --password-prompt glance # openstack role add --project service --user glance admin # openstack service create --name glance  --description &quot;OpenStack Image service&quot; image # openstack endpoint create --publicurl http:\/\/controller:9292 --internalurl http:\/\/controller:9292 --adminurl http:\/\/controller:9292 --region RegionOne image <\/code><\/pre>\n<p>  \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <i>glance<\/i> \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0435\u0433\u043e \u043a \u0440\u043e\u043b\u0438 <i>admin<\/i>, \u0442.\u043a. \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442 \u044d\u0442\u043e\u0439 \u0440\u043e\u043b\u0438, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0435\u0440\u0432\u0438\u0441 <i>glance<\/i>, \u0437\u0430\u0434\u0430\u0451\u043c endpoint.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435:  <\/p>\n<pre><code class=\"bash\"># apt-get install glance python-glanceclient <\/code><\/pre>\n<p>  \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># cat \/etc\/glance\/glance-api.conf [DEFAULT] ... notification_driver = noop  [database] connection = mysql:\/\/glance:GLANCE_DBPASS@controller\/glance  [keystone_authtoken] auth_uri = http:\/\/controller:5000 auth_url = http:\/\/controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = glance password = GLANCE_PASS   [paste_deploy] flavor = keystone  [glance_store] default_store = file filesystem_store_datadir = \/var\/lib\/glance\/images\/ <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0427\u0442\u043e \u0431\u044b \u043d\u0438 \u0431\u044b\u043b\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <i>[keystone_authtoken]<\/i> \u2014 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c. GLANCE_PASS \u2014 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f glance \u0432 keystone. <i>filesystem_store_datadir<\/i> \u044d\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043e\u0431\u0440\u0430\u0437\u044b. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u0434\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438\u043b\u0438 \u0440\u0435\u0439\u0434-\u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043b\u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u043e\u0431\u0440\u0430\u0437\u044b \u0438\u0437-\u0437\u0430 \u043e\u0442\u043a\u0430\u0437\u0430 \u0434\u0438\u0441\u043a\u0430.<\/p>\n<p>  \u0412 <i>\/etc\/glance\/glance-registry.conf<\/i> \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u0442\u0443 \u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u0441\u0435\u043a\u0446\u0438\u0439 <i>database, keystone_authtoken, paste_deploy, DEFAULT<\/i>.<\/p>\n<p>  \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0411\u0414:  <\/p>\n<pre><code class=\"bash\"># su -s \/bin\/sh -c &quot;glance-manage db_sync&quot; glance <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0411\u0414:  <\/p>\n<pre><code class=\"bash\"># service glance-registry restart # service glance-api restart # rm -f \/var\/lib\/glance\/glance.sqlite <\/code><\/pre>\n<p>  \u0412 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0430\u043d\u0443\u0430\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f <i>cirros<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u043e\u0431\u0440\u0430\u0437 Ubuntu:  <\/p>\n<pre><code class=\"bash\"># mkdir \/tmp\/images # wget -P \/tmp\/images http:\/\/cloud-images.ubuntu.com\/releases\/14.04.2\/release\/ubuntu-14.04-server-cloudimg-amd64-disk1.img # glance image-create --name &quot;Ubuntu-Server-14.04.02-x86_64&quot; --file \/tmp\/images\/ubuntu-14.04-server-cloudimg-amd64-disk1.img  --disk-format qcow2 --container-format bare --visibility public --progress # rm -r \/tmp\/images <\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043e\u0431\u0440\u0430\u0437\u044b, \u043d\u043e \u0434\u0443\u043c\u0430\u044e \u0434\u043e\u0436\u0434\u0451\u043c\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f Dashboard.<br \/>  \u0426\u0435\u043b\u043e\u043c \u2014 \u043d\u0430\u0448 \u0441\u0435\u0440\u0432\u0438\u0441 Glance \u0433\u043e\u0442\u043e\u0432.<\/p>\n<h5><b>Nova<\/b><\/h5>\n<p>  Nova \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c IaaS \u0432 OpenStack. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Nova \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. Nova \u043c\u043e\u0436\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 KVM, Xen, Hyper-V, VMware \u0438 \u043a\u0430\u0436\u0435\u0442\u0441\u044f Ironic (\u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442). \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c KVM, \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f.<\/p>\n<h6>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/h6>\n<p>  \u041e\u043f\u044f\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u0411\u0414:  <\/p>\n<pre><code class=\"bash\"># mysql -u root -p CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; <\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 keystone:  <\/p>\n<pre><code class=\"bash\"># openstack user create --password-prompt nova # openstack role add --project service --user nova admin # openstack service create --name nova --description &quot;OpenStack Compute&quot; compute # openstack endpoint create --publicurl http:\/\/controller:8774\/v2\/%\\(tenant_id\\)s --internalurl http:\/\/controller:8774\/v2\/%\\(tenant_id\\)s --adminurl http:\/\/controller:8774\/v2\/%\\(tenant_id\\)s --region RegionOne compute <\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:  <\/p>\n<pre><code class=\"bash\"># apt-get install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/nova\/nova.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone my_ip = 10.0.0.11 vncserver_listen = 10.0.0.11 vncserver_proxyclient_address = 10.0.0.11  [database] connection = mysql:\/\/nova:NOVA_DBPASS@controller\/nova  [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS  [keystone_authtoken] auth_uri = http:\/\/controller:5000 auth_url = http:\/\/controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = nova password = NOVA_PASS  [glance] host = controller  [oslo_concurrency] lock_path = \/var\/lib\/nova\/tmp <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0411\u0414, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0411\u0414.  <\/p>\n<pre><code class=\"bash\"># su -s \/bin\/sh -c &quot;nova-manage db sync&quot; nova # service nova-api restart # service nova-cert restart # service nova-consoleauth restart # service nova-scheduler restart # service nova-conductor restart # service nova-novncproxy restart # rm -f \/var\/lib\/nova\/nova.sqlite <\/code><\/pre>\n<h6>\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0437\u0435\u043b<\/h6>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043d\u0430\u0447\u043d\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0443\u0437\u043b\u043e\u043c. \u0412\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.  <\/p>\n<pre><code class=\"bash\"># apt-get install nova-compute sysfsutils <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/nova\/nova.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] ... verbose = True rpc_backend = rabbit auth_strategy = keystone my_ip = 10.0.0.31 #MANAGEMENT_INTERFACE_IP_ADDRESS vnc_enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = 10.0.0.31 #MANAGEMENT_INTERFACE_IP_ADDRESS novncproxy_base_url = http:\/\/controller:6080\/vnc_auto.html  [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS  [keystone_authtoken] auth_uri = http:\/\/controller:5000 auth_url = http:\/\/controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = nova password = NOVA_PASS  [glance] host = controller  [oslo_concurrency] lock_path = \/var\/lib\/nova\/tmp  [libvirt] virt_type = kvm <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <i>MANAGEMENT_INTERFACE_IP_ADDRESS<\/i> \u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u0438\u0437 VLAN 10.<br \/>  \u0412 <i>novncproxy_base_url<\/i> controller \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 Web-browser. \u0418\u043d\u0430\u0447\u0435 \u0432\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f vnc-\u043a\u043e\u043d\u0441\u043e\u043b\u044c\u044e \u0438\u0437 Horizon.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0411\u0414:  <\/p>\n<pre><code class=\"bash\"># service nova-compute restart # rm -f \/var\/lib\/nova\/nova.sqlite <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u0441\u0451 \u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:  <\/p>\n<pre><code class=\"bash\"># nova service-list +----+------------------+------------+----------+---------+-------+----------------------------+-----------------+ | Id | Binary           | Host       | Zone     | Status  | State | Updated_at                 | Disabled Reason | +----+------------------+------------+----------+---------+-------+----------------------------+-----------------+ | 1  | nova-conductor   | controller | internal | enabled | up    | 2014-09-16T23:54:02.000000 | -               | | 2  | nova-consoleauth | controller | internal | enabled | up    | 2014-09-16T23:54:04.000000 | -               | | 3  | nova-scheduler   | controller | internal | enabled | up    | 2014-09-16T23:54:07.000000 | -               | | 4  | nova-cert        | controller | internal | enabled | up    | 2014-09-16T23:54:00.000000 | -               | | 5  | nova-compute     | compute1   | nova     | enabled | up    | 2014-09-16T23:54:06.000000 | -               | +----+------------------+------------+----------+---------+-------+----------------------------+-----------------+ <\/code><\/pre>\n<p>  5\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0432\u0441\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438.<\/p>\n<p>  \u041c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c IaaS.<\/p>\n<h5><b>Neutron<\/b><\/h5>\n<p>  Neutron \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0435\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u043b\u0443\u0433\u0430 (NaaS). \u0412\u043e\u043e\u0431\u0449\u0435 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u0451\u0442, \u043d\u043e \u0442\u0430\u043a \u0434\u0443\u043c\u0430\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435. Nova-networking \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0432 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 OpenStack, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u0414\u0430 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0443 neutron \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0448\u0438\u0440\u0435.<\/p>\n<h6>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/h6>\n<p>  \u041c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u044f\u0434\u0440\u043e \u0441\u0435\u0442\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u0445\u043e\u0442\u044f \u0432 \u043c\u0430\u043d\u0443\u0430\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f 3\u044f \u043d\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e (&gt;10) \u0438\/\u0438\u043b\u0438 \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0430\u044f, \u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 Network-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043d\u043e\u0434\u0443.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u0411\u0414  <\/p>\n<pre><code class=\"bash\"># mysql -u root -p CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS'; <\/code><\/pre>\n<p>  Keystone:  <\/p>\n<pre><code class=\"bash\"># openstack user create --password-prompt neutron # openstack role add --project service --user neutron admin # openstack service create --name neutron --description &quot;OpenStack Networking&quot; network # openstack endpoint create --publicurl http:\/\/controller:9696 --adminurl http:\/\/controller:9696 --internalurl http:\/\/controller:9696 --region RegionOne network <\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:  <\/p>\n<pre><code class=\"bash\"># apt-get install neutron-server neutron-plugin-ml2 python-neutronclient neutron-plugin-openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c <i>\/etc\/sysctl.conf<\/i>  <\/p>\n<pre><code class=\"bash\"># cat \/etc\/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0  # sysctl -p <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/neutron\/neutron.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone core_plugin = ml2 service_plugins = router allow_overlapping_ips = True notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True nova_url = http:\/\/controller:8774\/v2  [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS  [database] connection = mysql:\/\/neutron:NEUTRON_DBPASS@controller\/neutron  [keystone_authtoken] auth_uri = http:\/\/controller:5000 auth_url = http:\/\/controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = neutron password = NEUTRON_PASS  [nova] auth_url = http:\/\/controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default region_name = RegionOne project_name = service username = nova password = NOVA_PASS <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044f \u043a\u043e\u043d\u0444\u0438\u0433 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0442\u0442\u0443\u0434\u0430 \u0443\u0434\u0430\u043b\u044f\u0442\u044c, \u043a\u0440\u043e\u043c\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/neutron\/plugins\/ml2\/ml2_conf.ini<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[ml2] type_drivers = flat,vlan,gre,vxlan tenant_network_types = gre mechanism_drivers = openvswitch  [ml2_type_gre] tunnel_id_ranges = 1000:2000  [ml2_type_flat] flat_networks = external  [securitygroup] enable_security_group = True enable_ipset = True firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver  [ovs] local_ip = 10.0.1.11 #INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS bridge_mappings = external:br-ex  [agent] tunnel_types = gre  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/neutron\/l3_agent.ini<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver external_network_bridge = router_delete_namespaces = True  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/neutron\/dhcp_agent.ini<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq dhcp_delete_namespaces = True dnsmasq_config_file = \/etc\/neutron\/dnsmasq-neutron.conf <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/neutron\/dnsmasq-neutron.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">dhcp-option-force=26,1454 <\/code><\/pre>\n<p>  \u0412 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u044d\u0442\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0434\u043b\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 jumbo frames, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f dnsmasq.  <\/div>\n<\/div>\n<p>  \u0423\u0431\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b dnsmasq  <\/p>\n<pre><code class=\"bash\"># pkill dnsmasq <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/neutron\/metadata_agent.ini<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] auth_uri = http:\/\/controller:5000 auth_url = http:\/\/controller:35357 auth_region = RegionOne auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = neutron password = NEUTRON_PASS nova_metadata_ip = controller metadata_proxy_shared_secret = METADATA_SECRET  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/nova\/nova.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] ... network_api_class = nova.network.neutronv2.api.API security_group_api = neutron linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver  [neutron] url = http:\/\/controller:9696 auth_strategy = keystone admin_auth_url = http:\/\/controller:35357\/v2.0 admin_tenant_name = service admin_username = neutron admin_password = NEUTRON_PASS service_metadata_proxy = True metadata_proxy_shared_secret = METADATA_SECRET <\/code><\/pre>\n<p>  <i>METADATA_SECRET<\/i> \u044d\u0442\u043e \u0442\u0430\u043a \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0442 10 \u0434\u043e 16 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432  <\/div>\n<\/div>\n<p>  \u0418\u0437 <i>nova.conf<\/i> \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c.<\/p>\n<p>  \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0411\u0414 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b:  <\/p>\n<pre><code class=\"bash\"># su -s \/bin\/sh -c &quot;neutron-db-manage --config-file \/etc\/neutron\/neutron.conf --config-file \/etc\/neutron\/plugins\/ml2\/ml2_conf.ini upgrade head&quot; neutron # service nova-api restart # service neutron-server restart # service openvswitch-switch restart <\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043c\u043e\u0441\u0442 \u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0441 external-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c  <\/p>\n<pre><code class=\"bash\"># ovs-vsctl add-br br-ex # ovs-vsctl add-port br-ex p3p1 <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b  <\/p>\n<pre><code class=\"bash\"># service neutron-plugin-openvswitch-agent restart # service neutron-l3-agent restart # service neutron-dhcp-agent restart # service neutron-metadata-agent restart <\/code><\/pre>\n<h6>\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0437\u0435\u043b<\/h6>\n<p>  \u0411\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432.  <\/p>\n<pre><code class=\"bash\"># cat \/etc\/sysctl.conf net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1  # sysctl -p <\/code><\/pre>\n<pre><code class=\"bash\"># apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/neutron\/neutron.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone core_plugin = ml2 service_plugins = router allow_overlapping_ips = True    [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS  [keystone_authtoken] auth_uri = http:\/\/controller:5000 auth_url = http:\/\/controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = neutron password = NEUTRON_PASS  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/neutron\/plugins\/ml2\/ml2_conf.ini<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[ml2] type_drivers = flat,vlan,gre,vxlan tenant_network_types = gre mechanism_drivers = openvswitch  [ml2_type_gre] tunnel_id_ranges = 1000:2000  [ml2_type_flat] flat_networks = external  [securitygroup] enable_security_group = True enable_ipset = True firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver  [ovs] local_ip = 10.0.1.31 #INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS bridge_mappings = external:br-ex  [agent] tunnel_types = gre  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c openvswitch  <\/p>\n<pre><code class=\"bash\"># service openvswitch-switch restart <\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0432 <i>\/etc\/nova\/nova.conf<\/i>  <\/p>\n<pre><code class=\"bash\">[DEFAULT] ... network_api_class = nova.network.neutronv2.api.API security_group_api = neutron linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver  [neutron] url = http:\/\/controller:9696 auth_strategy = keystone admin_auth_url = http:\/\/controller:35357\/v2.0 admin_tenant_name = service admin_username = neutron admin_password = NEUTRON_PASS <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b:  <\/p>\n<pre><code class=\"bash\"># service nova-compute restart # service neutron-plugin-openvswitch-agent restart <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u043b \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"bash\"># neutron agent-list +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+ | id                                   | agent_type         | host     | alive | admin_state_up | binary                    | +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+ | 30275801-e17a-41e4-8f53-9db63544f689 | Metadata agent     | network  | :-)   | True           | neutron-metadata-agent    | | 4bd8c50e-7bad-4f3b-955d-67658a491a15 | Open vSwitch agent | network  | :-)   | True           | neutron-openvswitch-agent | | 756e5bba-b70f-4715-b80e-e37f59803d20 | L3 agent           | network  | :-)   | True           | neutron-l3-agent          | | 9c45473c-6d6d-4f94-8df1-ebd0b6838d5f | DHCP agent         | network  | :-)   | True           | neutron-dhcp-agent        | | a5a49051-05eb-4b4f-bfc7-d36235fe9131 | Open vSwitch agent | compute1 | :-)   | True           | neutron-openvswitch-agent | +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+ <\/code><\/pre>\n<h6>\u0421\u0435\u0442\u0438<\/h6>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u0442\u0435\u0439. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0434\u043d\u0443 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c \u0438 \u043e\u0434\u043d\u0443 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c:  <\/p>\n<pre><code class=\"bash\"># neutron net-create ext-net --router:external --provider:physical_network external --provider:network_type flat <\/code><\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0443 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043f\u043e\u0434\u0441\u0435\u0442\u044c:  <\/p>\n<pre><code class=\"bash\"># neutron subnet-create ext-net 192.168.1.0\/24 --name ext-subnet \\   --allocation-pool start=192.168.1.100,end=192.168.1.200 \\   --disable-dhcp --gateway 192.168.1.1 <\/code><\/pre>\n<p>  \u041d\u0430\u0448\u0430 \u0432\u043d\u0435\u0448\u043d\u044f\u044f \u0441\u0435\u0442\u044c 192.168.1.0\/24 \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 192.168.1.1. \u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 192.168.1.101-200.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <i>demo<\/i>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f demo-\u044e\u0437\u0435\u0440\u0430:  <\/p>\n<pre><code class=\"bash\"># source demo-openrc.sh <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0441\u0435\u0442\u044c:  <\/p>\n<pre><code class=\"bash\"># neutron net-create demo-net # neutron subnet-create demo-net 172.16.1.0\/24 --name demo-subnet --gateway 172.168.1.1 <\/code><\/pre>\n<p>  \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0431\u0443\u0434\u0435\u0442 172.16.1.0\/24 \u0438 \u0432\u0441\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b \u0438\u0437 \u043d\u0435\u0451 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430 172.168.1.1.<br \/>  \u0412\u043e\u043f\u0440\u043e\u0441: \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440?<br \/>  \u041e\u0442\u0432\u0435\u0442: \u044d\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440.<\/p>\n<p>  \u00ab\u0424\u0438\u0448\u043a\u0430\u00bb \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 Neutron \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0441 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440. \u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0440\u0442\u044b \u0432 \u043b\u044e\u0431\u0443\u044e \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0435\u0442\u0435\u0439. \u0418 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u00ab\u0441\u0438\u043b\u044c\u043d\u043e\u00bb! \u041c\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0442\u044f\u043c, \u0430 \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 firewall \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0437 \u0433\u0440\u0443\u043f\u043f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e! \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432\u043e \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0435\u0442\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e (\u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Mikrotik).<br \/>  \u0412 \u043e\u0431\u0449\u0435\u043c, Neutron \u0434\u0430\u0451\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0440 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440, \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 demo-subnet \u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438:  <\/p>\n<pre><code class=\"bash\"># neutron router-create demo-router # neutron router-interface-add demo-router demo-subnet # neutron router-gateway-set demo-router ext-net <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0438\u043d\u0433\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0448 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440:  <\/p>\n<pre><code class=\"bash\"># ping 192.168.1.100 PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data. 64 bytes from 192.168.1.100: icmp_req=1 ttl=64 time=0.619 ms 64 bytes from 192.168.1.100: icmp_req=2 ttl=64 time=0.189 ms 64 bytes from 192.168.1.100: icmp_req=3 ttl=64 time=0.165 ms 64 bytes from 192.168.1.100: icmp_req=4 ttl=64 time=0.216 ms ... <\/code><\/pre>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u0441 \u0441\u0435\u0442\u044c\u044e.<\/p>\n<h5><b>Cinder<\/b> (\u0411\u043b\u043e\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435)<\/h5>\n<p>  Cinder \u2014 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u043b\u043e\u0447\u043d\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0438\u0441\u043a\u0430\u043c\u0438), \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u0438\u0445 \u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0441\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u043c\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 VM \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441.<\/p>\n<p>  \u0411\u0414:  <\/p>\n<pre><code class=\"bash\"># mysql -u root -p CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS'; <\/code><\/pre>\n<p>  Keystone:  <\/p>\n<pre><code class=\"bash\"># openstack user create --password-prompt cinder # openstack role add --project service --user cinder admin # openstack service create --name cinder --description &quot;OpenStack Block Storage&quot; volume # openstack service create --name cinderv2 --description &quot;OpenStack Block Storage&quot; volumev2 # openstack endpoint create --publicurl http:\/\/controller:8776\/v2\/%\\(tenant_id\\)s --internalurl http:\/\/controller:8776\/v2\/%\\(tenant_id\\)s --adminurl http:\/\/controller:8776\/v2\/%\\(tenant_id\\)s --region RegionOne volume # openstack endpoint create --publicurl http:\/\/controller:8776\/v2\/%\\(tenant_id\\)s --internalurl http:\/\/controller:8776\/v2\/%\\(tenant_id\\)s --adminurl http:\/\/controller:8776\/v2\/%\\(tenant_id\\)s --region RegionOne volumev2 <\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432:  <\/p>\n<pre><code class=\"bash\"># apt-get install cinder-api cinder-scheduler python-cinderclient <\/code><\/pre>\n<p>  \u041f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/cinder\/cinder.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] ... rpc_backend = rabbit auth_strategy = keystone my_ip = 10.0.0.11   [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS  [database] connection = mysql:\/\/cinder:CINDER_DBPASS@controller\/cinder  [keystone_authtoken] auth_uri = http:\/\/controller:5000 auth_url = http:\/\/controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = cinder password = CINDER_PASS  [oslo_concurrency] lock_path = \/var\/lock\/cinder  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0411\u0414 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b:  <\/p>\n<pre><code class=\"bash\"># su -s \/bin\/sh -c &quot;cinder-manage db sync&quot; cinder # service cinder-scheduler restart # service cinder-api restart <\/code><\/pre>\n<p>  \u0422.\u043a. \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u0436\u0435 \u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u0451\u043c.<br \/>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:  <\/p>\n<pre><code class=\"bash\"># apt-get install qemu lvm2 <\/code><\/pre>\n<p>  \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e \u0434\u0432\u0430 500\u0413\u0431 \u0434\u0438\u0441\u043a\u0430? \u041c\u044b \u0438\u0437 \u043d\u0438\u0445 \u0441\u0434\u0435\u043b\u0430\u0435\u043c RAID 1 (\u0443\u0436 \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044f \u043d\u0435 \u0431\u0443\u0434\u0443). \u0427\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c lvm-\u0440\u0430\u0437\u0434\u0435\u043b \u0438\u0437 \u0434\u0432\u0443\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0438\u0441\u043a\u043e\u0432, \u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043b\u043e\u0445 \u0442\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435 HA-\u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0434\u0438\u0441\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u043c. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c RAID-\u043c\u0430\u0441\u0441\u0438\u0432 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u0433\u0443\u0433\u043b\u0438\u0442\u0441\u044f. \u0411\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0440\u0435\u0439\u0434 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <i>\/dev\/md1<\/i>:  <\/p>\n<pre><code class=\"bash\"># pvcreate \/dev\/md1 # vgcreate cinder-volumes \/dev\/md1 <\/code><\/pre>\n<p>  \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 LVM-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 lvm-\u0433\u0440\u0443\u043f\u043f\u0443 <i>cinder-volumes<\/i>.<br \/>  \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043c <i>\/etc\/lvm\/lvm.conf<\/i>.<br \/>  \u041d\u0430\u0445\u043e\u0434\u0438\u043c (\u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c) \u0442\u0443\u0434\u0430 \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:  <\/p>\n<pre><code class=\"bash\">devices { ... filter = [ &quot;a\/md1\/&quot;, &quot;r\/.*\/&quot;] <\/code><\/pre>\n<p>  \u0411\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u043d\u0430 \u0440\u0435\u0439\u0434-\u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0443 \u043d\u0430\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441 lvm \u043d\u0435\u0442. \u0415\u0441\u043b\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u0442\u0430\u043a \u0436\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442 \u043d\u0430 lvm, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u0430 \u043d\u0430 <i>\/dev\/md0<\/i> \u0438 \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0435\u0451 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442 lvm, \u0442\u043e \u043d\u0430\u0448 \u043a\u043e\u043d\u0444\u0438\u0433 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"bash\">devices { ... filter = [ &quot;a\/md0\/&quot;, &quot;a\/md1\/&quot;, &quot;r\/.*\/&quot;] <\/code><\/pre>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u0434\u0443\u043c\u0430\u044e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 lvm \u044d\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e.<\/p>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:  <\/p>\n<pre><code class=\"bash\"># apt-get install cinder-volume python-mysqldb <\/code><\/pre>\n<p>  \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/cinder\/cinder.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">[DEFAULT] ... enabled_backends = lvm glance_host = controller  [lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = tgtadm  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0418 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b:  <\/p>\n<pre><code class=\"bash\"># service tgt restart # service cinder-scheduler restart # service cinder-api restart # service cinder-volume restart <\/code><\/pre>\n<h5><b>Horizon<\/b> (dashboard)<\/h5>\n<p>  Horizon \u2014 \u0434\u0430\u0448\u0431\u043e\u0430\u0440\u0434 \u0434\u043b\u044f OpenStack, \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Python 2.7, \u0434\u0432\u0438\u0436\u043a\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Django. \u0418\u0437 \u043d\u0435\u0433\u043e \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u0441\u0440\u0435\u0434\u043e\u0439 OpenStack: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438\/\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438\/\u0440\u043e\u043b\u044f\u043c\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0438\u0441\u043a\u0430\u043c\u0438, \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c\u0438, \u0441\u0435\u0442\u044f\u043c\u0438 \u0438 \u0442.\u0434.<\/p>\n<h6>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h6>\n<p>  <\/p>\n<pre><code class=\"bash\"># apt-get install openstack-dashboard <\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a Controller-\u043d\u043e\u0434\u0435, \u043d\u043e \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435.<\/p>\n<p>  \u041f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433 <i>\/etc\/openstack-dashboard\/local_settings.py<\/i>:  <\/p>\n<pre><code class=\"bash\">... OPENSTACK_HOST = &quot;controller&quot; ... ALLOWED_HOSTS = '*' ... CACHES = {    'default': {        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',        'LOCATION': '127.0.0.1:11211',    } } ... OPENSTACK_KEYSTONE_DEFAULT_ROLE = &quot;user&quot; ... TIME_ZONE = &quot;Asia\/Vladivostok&quot; ... <\/code><\/pre>\n<p>  <i>TIME_ZONE<\/i> \u2014 \u0432\u0430\u0448 \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c (\u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442) \u0434\u0440\u0443\u0433\u043e\u0439. <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_tz_database_time_zones\">\u0422\u0443\u0442<\/a> \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u0441\u0432\u043e\u0439.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0410\u043f\u0430\u0447:  <\/p>\n<pre><code class=\"bash\"># service apache2 reload <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 <i><a href=\"http:\/\/controller\/horizon\">controller\/horizon<\/a><\/i>. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043c\u043e\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043a\u0440\u0438\u043d\u044b \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430. \u0412 ubuntu \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442 <i>openstack-dashboard-ubuntu-theme<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 \u043d\u0430\u043c\u0451\u043a\u043e\u043c \u043d\u0430 Juju. \u0415\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442.<\/p>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044f\u0437\u044b\u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <i>\u0420\u0443\u0441\u0441\u043a\u0438\u0439<\/i>, \u0442\u043e \u0438\u0437\u0440\u044f\u0434\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 Developer`\u0430\u043c.<\/p>\n<p>  \u0413\u043e\u0442\u043e\u0432\u043e!<\/p>\n<p>  \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0430\u044f, \u043d\u043e \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c.<br \/>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0443-\u043b\u0438\u0431\u043e.<br \/>  \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 (\u0435\u0441\u043b\u0438 \u043c\u043e\u044e \u043a\u0430\u0440\u043c\u0443 \u043d\u0435 \u0437\u0430\u043a\u0438\u0434\u0430\u044e\u0442 \u00ab\u043f\u043e\u043c\u0438\u0434\u043e\u0440\u0430\u043c\u0438\u00bb) \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Chef-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0440\u0435\u0446\u0435\u043f\u0442\u0430.     \t<\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/262049\/\"> http:\/\/habrahabr.ru\/post\/262049\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>     \t\u041f\u0440\u0438\u0432\u0435\u0442 \u0432\u0441\u0435\u043c \u0425\u0430\u0431\u0440\u0430\u043b\u044e\u0434\u044f\u043c!<\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 <a href=\"http:\/\/habrahabr.ru\/post\/261715\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 DevStack. \u0412 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0451 \u00ab\u043e\u0431\u043b\u0430\u043a\u043e\u00bb OpenStack \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 (Controller, Compute) \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438:  <\/p>\n<ul>\n<li>Keystone<\/li>\n<li>Glance<\/li>\n<li>Nova<\/li>\n<li>Neutron<\/li>\n<li>Cinder<\/li>\n<li>Horizon<\/li>\n<\/ul>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u044d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d (\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 CPU \u043d\u0430 <i>compute<\/i>), \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0441\u043a\u0438 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0445 \u043a VM, \u043d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434.<\/p>\n<p>  \u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e! \u041c\u043d\u043e\u0433\u043e \u00ab\u043f\u043e\u0440\u0442\u044f\u043d\u043e\u043a\u00bb \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438!  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-261242","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/261242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=261242"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/261242\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=261242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=261242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=261242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}