{"id":8650,"date":"2023-03-06T16:28:06","date_gmt":"2023-03-06T12:58:06","guid":{"rendered":"https:\/\/hostida.com\/blog\/?p=8650"},"modified":"2024-11-12T16:51:31","modified_gmt":"2024-11-12T13:21:31","slug":"openstack-grizzly","status":"publish","type":"post","link":"https:\/\/hostida.com\/blog\/openstack-grizzly\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly"},"content":{"rendered":"<p>OpenStack Grizzly \u0631\u0627\u0647\u06cc \u0622\u0633\u0627\u0646 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u0644\u062a\u0641\u0631\u0645 OpenStack \u0634\u062e\u0635\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a.<\/p>\n<p>\u062d\u062a\u0645\u0627 \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u06a9\u0645\u06a9 OpenStack \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0633\u0631\u0648\u0631\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u0631\u0627 \u0641\u0636\u0627\u06cc \u0627\u0628\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0686\u0637\u0648\u0631 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 OpenStack Grizzly \u0628\u0647 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0645\u0645\u06a9\u0646 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<h2>\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0646\u0635\u0628 OpenStack Grizzly<\/h2>\n<p>\u067e\u06cc\u0634 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0646\u0635\u0628 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8651\" src=\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/1-1.jpg\" alt=\"\" width=\"608\" height=\"164\" srcset=\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/1-1.jpg 608w, https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/1-1-300x81.jpg 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8652\" src=\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/2-3.jpg\" alt=\"\" width=\"974\" height=\"647\" srcset=\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/2-3.jpg 974w, https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/2-3-300x199.jpg 300w, https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/2-3-768x510.jpg 768w\" sizes=\"auto, (max-width: 974px) 100vw, 974px\" \/><\/p>\n<h2>\u0622\u0645\u0627\u062f\u0647 \u200c\u0633\u0627\u0632\u06cc Ubuntu<\/h2>\n<p>\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 12.04 \u06cc\u0627 13.04 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 64 \u0628\u06cc\u062a\u06cc\u060c \u0628\u0627\u06cc\u062f \u0627\u0632 Sudo mode \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0644\u0637\u0641\u0627 \u062a\u0627 \u067e\u0627\u06cc\u0627\u0646 \u0646\u0635\u0628 \u0628\u0627 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<pre>sudo su<\/pre>\n<p>\u0627\u06af\u0631 \u0627\u0632 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 12.04 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0628\u0627\u06cc\u062f \u0645\u062e\u0627\u0632\u0646 \u06cc\u0627 Grizzly Repositories \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<pre>apt-get install -y ubuntu-cloud-keyring\r\necho deb http:\/\/ubuntu-cloud.archive.canonical.com\/ubuntu precise-updates\/grizzly main &gt;&gt; \/etc\/apt\/sources.list.d\/grizzly.list\r\n<\/pre>\n<p dir=\"auto\">\u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get update -y\r\napt-get upgrade -y\r\napt-get dist-upgrade -y<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0634\u0628\u06a9\u0647<\/h3>\n<p dir=\"auto\">\u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0641\u0642\u0637 \u06cc\u06a9 <a href=\"https:\/\/www.techtarget.com\/searchnetworking\/definition\/network-interface-card\" target=\"_blank\" rel=\"noopener\">NIC<\/a> \u0628\u0627\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<pre>#For Exposing OpenStack API over the internet\r\nauto eth1\r\niface eth1 inet static\r\naddress 192.168.100.51\r\nnetmask 255.255.255.0\r\ngateway 192.168.100.1\r\ndns-nameservers 8.8.8.8\r\n\r\n#Not internet connected(used for OpenStack management)\r\nauto eth0\r\niface eth0 inet static\r\naddress 10.10.10.51\r\nnetmask 255.255.255.0\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u062d\u0627\u0644\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0634\u0628\u06a9\u0647 \u0631\u0627 restart \u06a9\u0646\u06cc\u062f.<\/p>\n<pre>service networking restart<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\">\u00a0MySQL &amp; RabbitMQ<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 MySQL \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y mysql-server python-mysqldb\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u062d\u0627\u0644\u0627 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0627\u06cc \u067e\u0630\u06cc\u0631\u0634 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>sed -i 's\/127.0.0.1\/0.0.0.0\/g' \/etc\/mysql\/my.cnf\r\nservice mysql restart\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-24-rabbitmq\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#24-rabbitmq\" aria-hidden=\"true\"><\/a>RabbitMQ<\/h3>\n<p>RabbitMQ \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y rabbitmq-server\r\n<\/pre>\n<p>\u0646\u0635\u0628 \u0633\u0631\u0648\u06cc\u0633 NTP:<\/p>\n<pre>apt-get install -y ntp\r\n<\/pre>\n<p>\u0627\u06cc\u0646 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>mysql -u root -p\r\n\r\n#Keystone\r\nCREATE DATABASE keystone;\r\nGRANT ALL ON keystone.* TO 'keystoneUser'@'%' IDENTIFIED BY 'keystonePass';\r\n\r\n#Glance\r\nCREATE DATABASE glance;\r\nGRANT ALL ON glance.* TO 'glanceUser'@'%' IDENTIFIED BY 'glancePass';\r\n\r\n#Quantum\r\nCREATE DATABASE quantum;\r\nGRANT ALL ON quantum.* TO 'quantumUser'@'%' IDENTIFIED BY 'quantumPass';\r\n\r\n#Nova\r\nCREATE DATABASE nova;\r\nGRANT ALL ON nova.* TO 'novaUser'@'%' IDENTIFIED BY 'novaPass';\r\n\r\n#Cinder\r\nCREATE DATABASE cinder;\r\nGRANT ALL ON cinder.* TO 'cinderUser'@'%' IDENTIFIED BY 'cinderPass';\r\n\r\nquit;\r\n<a id=\"user-content-25-others\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#25-others\" aria-hidden=\"true\"><\/a><\/pre>\n<p>\u0646\u0635\u0628 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631:<\/p>\n<pre>apt-get install -y vlan bridge-utils\r\n<\/pre>\n<p>\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 IP_Forwarding:<\/p>\n<pre>sed -i 's\/#net.ipv4.ip_forward=1\/net.ipv4.ip_forward=1\/' \/etc\/sysctl.conf\r\n\r\n# To save you from rebooting, perform the following\r\nsysctl net.ipv4.ip_forward=1\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-26-keystone\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#26-keystone\" aria-hidden=\"true\"><\/a>Keystone<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0627 Keystone package\u00a0 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y keystone\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0648\u06cc\u0698\u06af\u06cc \u0627\u062a\u0635\u0627\u0644 \u062f\u0631 \/etc\/keystone\/keystone.conf \u0631\u0627 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062c\u062f\u06cc\u062f \u062a\u0637\u0628\u06cc\u0642 \u062f\u0647\u06cc\u062f:<\/p>\n<pre>connection = mysql:\/\/keystoneUser:keystonePass@10.10.10.51\/keystone\r\n<\/pre>\n<p dir=\"auto\">\u0633\u0631\u0648\u06cc\u0633 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc\u00a0 \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>service keystone restart\r\nkeystone-manage db_sync\r\n<\/pre>\n<p>\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 keystone \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0648 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0648\u062c\u0648\u062f \u062f\u0631 <a href=\"https:\/\/github.com\/mseknibilel\/OpenStack-Grizzly-Install-Guide\/tree\/OVS_MultiNode\/KeystoneScripts\" target=\"_blank\" rel=\"noopener\">Scripts folder<\/a> \u0627\u06cc\u0646 \u0645\u062e\u0632\u0646 git \u067e\u0631 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>#Modify the **HOST_IP** and **EXT_HOST_IP** variables before executing the scripts\r\n\r\nwget https:\/\/raw.github.com\/mseknibilel\/OpenStack-Grizzly-Install-Guide\/OVS_MultiNode\/KeystoneScripts\/keystone_basic.sh\r\nwget https:\/\/raw.github.com\/mseknibilel\/OpenStack-Grizzly-Install-Guide\/OVS_MultiNode\/KeystoneScripts\/keystone_endpoints_basic.sh\r\n\r\nchmod +x keystone_basic.sh\r\nchmod +x keystone_endpoints_basic.sh\r\n\r\n.\/keystone_basic.sh\r\n.\/keystone_endpoints_basic.sh\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u062f\u0647 (credential file) \u0627\u06cc\u062c\u0627\u062f\u00a0 \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0639\u062f\u0627\u064b \u0627\u0630\u06cc\u062a \u0646\u0634\u0648\u06cc\u062f:<\/p>\n<pre>nano creds\r\n\r\n#Paste the following:\r\nexport OS_TENANT_NAME=admin\r\nexport OS_USERNAME=admin\r\nexport OS_PASSWORD=admin_pass\r\nexport OS_AUTH_URL=\"http:\/\/192.168.100.51:5000\/v2.0\/\"\r\n\r\n# Load it:\r\nsource creds\r\n<\/pre>\n<p>\u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 Keystone\u060c \u0627\u0632 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0633\u0627\u062f\u0647 CLI \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<pre>keystone user-list\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-27-glance\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#27-glance\" aria-hidden=\"true\"><\/a>Glance<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f Glance \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645:<\/p>\n<pre>apt-get install -y glance\r\n<\/pre>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \/etc\/glance\/glance-api-paste.ini \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>[filter:authtoken]\r\npaste.filter_factory = keystoneclient.middleware.auth_token:filter_factory\r\ndelay_auth_decision = true\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = glance\r\nadmin_password = service_pass\r\n<\/pre>\n<p>\/etc\/glance\/glance-registry-paste.ini \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>[filter:authtoken]\r\npaste.filter_factory = keystoneclient.middleware.auth_token:filter_factory\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = glance\r\nadmin_password = service_pass\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \/etc\/glance\/glance-api.conf \u0628\u0627:<\/p>\n<pre>sql_connection = mysql:\/\/glanceUser:glancePass@10.10.10.51\/glance\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0647\u0645\u0686\u0646\u06cc\u0646<\/p>\n<pre>[paste_deploy]\r\nflavor = keystone\r\n<\/pre>\n<p>\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc\/etc\/glance\/glance-registry.conf \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632:<\/p>\n<pre>sql_connection = mysql:\/\/glanceUser:glancePass@10.10.10.51\/glance\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0648<\/p>\n<pre>[paste_deploy]\r\nflavor = keystone\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc glance-api \u0648 glance-registry \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>service glance-api restart; service glance-registry restart\r\n<\/pre>\n<p>\u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 glance:<\/p>\n<pre>glance-manage db_sync\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-28-quantum\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#28-quantum\" aria-hidden=\"true\"><\/a>Quantum<\/h3>\n<p>\u0633\u0631\u0648\u0631 \u06a9\u0648\u0627\u0646\u062a\u0648\u0645\u06cc \u0648 \u0645\u062c\u0645\u0648\u0639\u0647 \u0628\u0633\u062a\u0647 OpenVSwitch \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y quantum-server\r\n<\/pre>\n<p>\u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0644\u0627\u06af\u06cc\u0646 \u0627\u0648 \u0648\u06cc \u0627\u0633 \/etc\/quantum\/plugins\/openvswitch\/ovs_quantum_plugin.ini \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>#Under the database section\r\n[DATABASE]\r\nsql_connection = mysql:\/\/quantumUser:quantumPass@10.10.10.51\/quantum\r\n\r\n#Under the OVS section\r\n[OVS]\r\ntenant_network_type = gre\r\ntunnel_id_ranges = 1:1000\r\nenable_tunneling = True\r\n\r\n#Firewall driver for realizing quantum security group function\r\n[SECURITYGROUP]\r\nfirewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0648\u06cc\u0631\u0627\u06cc\u0634 \/etc\/quantum\/api-paste.ini<\/p>\n<pre>[filter:authtoken]\r\npaste.filter_factory = keystoneclient.middleware.auth_token:filter_factory\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = quantum\r\nadmin_password = service_pass\r\n<\/pre>\n<p>\/etc\/quantum\/quantum.conf \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>[keystone_authtoken]\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = quantum\r\nadmin_password = service_pass\r\nsigning_dir = \/var\/lib\/quantum\/keystone-signing\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0633\u0631\u0648\u0631 \u06a9\u0648\u0627\u0646\u062a\u0648\u0645\u06cc \u0631\u0627 \u0645\u062c\u062f\u062f\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>service quantum-server restart\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-29-nova\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#29-nova\" aria-hidden=\"true\"><\/a>Nova<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0627 \u0646\u0635\u0628 \u0627\u062c\u0632\u0627\u06cc nova \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y nova-api nova-cert novnc nova-consoleauth nova-scheduler nova-novncproxy nova-doc nova-conductor\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u062e\u0634 authtoken \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \/etc\/nova\/api-paste.ini \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<pre>[filter:authtoken]\r\npaste.filter_factory = keystoneclient.middleware.auth_token:filter_factory\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = nova\r\nadmin_password = service_pass\r\nsigning_dirname = \/tmp\/keystone-signing-nova\r\n# Workaround for https:\/\/bugs.launchpad.net\/nova\/+bug\/1154809\r\nauth_version = v2.0\r\n<\/pre>\n<p>\/etc\/nova\/nova.conf \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<pre>[DEFAULT]\r\nlogdir=\/var\/log\/nova\r\nstate_path=\/var\/lib\/nova\r\nlock_path=\/run\/lock\/nova\r\nverbose=True\r\napi_paste_config=\/etc\/nova\/api-paste.ini\r\ncompute_scheduler_driver=nova.scheduler.simple.SimpleScheduler\r\nrabbit_host=10.10.10.51\r\nnova_url=http:\/\/10.10.10.51:8774\/v1.1\/\r\nsql_connection=mysql:\/\/novaUser:novaPass@10.10.10.51\/nova\r\nroot_helper=sudo nova-rootwrap \/etc\/nova\/rootwrap.conf\r\n\r\n# Auth\r\nuse_deprecated_auth=false\r\nauth_strategy=keystone\r\n\r\n# Imaging service\r\nglance_api_servers=10.10.10.51:9292\r\nimage_service=nova.image.glance.GlanceImageService\r\n\r\n# Vnc configuration\r\nnovnc_enabled=true\r\nnovncproxy_base_url=http:\/\/192.168.100.51:6080\/vnc_auto.html\r\nnovncproxy_port=6080\r\nvncserver_proxyclient_address=10.10.10.51\r\nvncserver_listen=0.0.0.0\r\n\r\n# Network settings\r\nnetwork_api_class=nova.network.quantumv2.api.API\r\nquantum_url=http:\/\/10.10.10.51:9696\r\nquantum_auth_strategy=keystone\r\nquantum_admin_tenant_name=service\r\nquantum_admin_username=quantum\r\nquantum_admin_password=service_pass\r\nquantum_admin_auth_url=http:\/\/10.10.10.51:35357\/v2.0\r\nlibvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver\r\nlinuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver\r\n#If you want Quantum + Nova Security groups\r\nfirewall_driver=nova.virt.firewall.NoopFirewallDriver\r\nsecurity_group_api=quantum\r\n#If you want Nova Security groups only, comment the two lines above and uncomment line -1-.\r\n#-1-firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver\r\n\r\n#Metadata\r\nservice_quantum_metadata_proxy = True\r\nquantum_metadata_proxy_shared_secret = helloOpenStack\r\n\r\n# Compute #\r\ncompute_driver=libvirt.LibvirtDriver\r\n\r\n# Cinder #\r\nvolume_api_class=nova.volume.cinder.API\r\nosapi_volume_listen_port=5900\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>nova-manage db sync\r\n<\/pre>\n<p>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u062e\u062f\u0645\u0627\u062a nova-*:<\/p>\n<pre>cd \/etc\/init.d\/; for i in $( ls nova-* ); do sudo service $i restart; done<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-210-cinder\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#210-cinder\" aria-hidden=\"true\"><\/a>\u00a0Cinder<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y cinder-api cinder-scheduler cinder-volume iscsitarget open-iscsi iscsitarget-dkms\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc iscsi \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>sed -i 's\/false\/true\/g' \/etc\/default\/iscsitarget\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627:<\/p>\n<pre>service iscsitarget start\r\nservice open-iscsi start\r\n<\/pre>\n<p>\/etc\/cinder\/api-paste.ini \u0631\u0627 \u0645\u0637\u0627\u0628\u0642 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>[filter:authtoken]\r\npaste.filter_factory = keystoneclient.middleware.auth_token:filter_factory\r\nservice_protocol = http\r\nservice_host = 192.168.100.51\r\nservice_port = 5000\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = cinder\r\nadmin_password = service_pass\r\nsigning_dir = \/var\/lib\/cinder\r\n<\/pre>\n<p>\/etc\/cinder\/cinder.conf \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>[DEFAULT]\r\nrootwrap_config=\/etc\/cinder\/rootwrap.conf\r\nsql_connection = mysql:\/\/cinderUser:cinderPass@10.10.10.51\/cinder\r\napi_paste_config = \/etc\/cinder\/api-paste.ini\r\niscsi_helper=ietadm\r\nvolume_name_template = volume-%s\r\nvolume_group = cinder-volumes\r\nverbose = True\r\nauth_strategy = keystone\r\niscsi_ip_address=10.10.10.51\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0633\u067e\u0633 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>cinder-manage db sync\r\n<\/pre>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 volumegroup\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0627\u0645 \u0622\u0646 \u0631\u0627 cinder-volumes \u0628\u06af\u0630\u0627\u0631\u06cc\u062f:<\/p>\n<pre>dd if=\/dev\/zero of=cinder-volumes bs=1 count=0 seek=2G\r\nlosetup \/dev\/loop2 cinder-volumes\r\nfdisk \/dev\/loop2\r\n#Type in the followings:\r\nn\r\np\r\n1\r\nENTER\r\nENTER\r\nt\r\n8e\r\nw\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0647 \u0627\u06cc\u062c\u0627\u062f physical volume \u0648 \u0633\u067e\u0633 volume group \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f:<\/p>\n<pre>pvcreate \/dev\/loop2\r\nvgcreate cinder-volumes \/dev\/loop2\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u062e\u062f\u0645\u0627\u062a \u0633\u06cc\u0646\u062f\u0631:<\/p>\n<pre>cd \/etc\/init.d\/; for i in $( ls cinder-* ); do sudo service $i restart; done\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc cinder \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0647\u0633\u062a\u0646\u062f:<\/p>\n<pre>cd \/etc\/init.d\/; for i in $( ls cinder-* ); do sudo service $i status; done\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-211-horizon\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#211-horizon\" aria-hidden=\"true\"><\/a>Horizon<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Horizon \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0639\u0645\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y openstack-dashboard memcached\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u06af\u0631 \u062a\u0645 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 OpenStack \u0631\u0627 \u062f\u0648\u0633\u062a \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062d\u0630\u0641 \u0627\u06cc\u0646 \u0628\u0633\u062a\u0647 \u060c \u0622\u0646 \u0631\u0627 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>dpkg --purge openstack-dashboard-ubuntu-theme\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0622\u067e\u0627\u0686\u06cc \u0648 memcached \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>service apache2 restart; service memcached restart\r\n<\/pre>\n<aside class=\"link-preview\"><fieldset><legend>\u0628\u06cc\u0634\u062a\u0631 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f<\/legend><a target=\"_blank\" href=\"https:\/\/hostida.com\/blog\/what-is-apache-web-server\/\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2020\/09\/apache.jpg\" alt=\"\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\" width=\"100\"\/><p>\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0648\u0628 \u0633\u0631\u0648\u0631 \u0622\u067e\u0627\u0686\u06cc | \u06a9\u0627\u0631\u0628\u0631\u062f \u0647\u0627 \u0648 \u0645\u0632\u0627\u06cc\u0627\u06cc Apache - \u0647\u0627\u0633\u062a\u06cc\u062f\u0627<\/p><p><span><\/span><\/p><\/a><\/fieldset><\/aside>\n<p>\u062f\u0627\u0634\u0628\u0648\u0631\u062f OpenStack \u0631\u0627 \u062f\u0631 <a href=\"http:\/\/192.168.100.51\/horizon\" target=\"_blank\" rel=\"noopener\">http:\/\/192.168.100.51\/horizon<\/a> \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 admin \/ admin_pass \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u0645<\/p>\n<h2 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-3-network-node\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#3-network-node\" aria-hidden=\"true\"><\/a>Network Node<\/h2>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-31-preparing-the-node\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#31-preparing-the-node\" aria-hidden=\"true\"><\/a>\u00a0Node \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 12.04 \u06cc\u0627 \u0633\u0631\u0648\u0631 13.04 64 \u0628\u06cc\u062a\u06cc\u060c sudo \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>sudo su\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u06af\u0631 \u0627\u0632 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 12.04 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0628\u0627\u06cc\u062f\u00a0 Grizzly Repositories \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<pre>apt-get install -y ubuntu-cloud-keyring\r\necho deb http:\/\/ubuntu-cloud.archive.canonical.com\/ubuntu precise-updates\/grizzly main &gt;&gt; \/etc\/apt\/sources.list.d\/grizzly.list\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f\u00bb<\/p>\n<pre>apt-get update -y\r\napt-get upgrade -y\r\napt-get dist-upgrade -y\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0633\u0631\u0648\u06cc\u0633 npt \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y ntp\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0633\u0631\u0648\u0631 NTP \u0631\u0627 \u0628\u0631\u0627\u06cc controller node \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>#Comment the ubuntu NTP servers\r\nsed -i 's\/server 0.ubuntu.pool.ntp.org\/#server 0.ubuntu.pool.ntp.org\/g' \/etc\/ntp.conf\r\nsed -i 's\/server 1.ubuntu.pool.ntp.org\/#server 1.ubuntu.pool.ntp.org\/g' \/etc\/ntp.conf\r\nsed -i 's\/server 2.ubuntu.pool.ntp.org\/#server 2.ubuntu.pool.ntp.org\/g' \/etc\/ntp.conf\r\nsed -i 's\/server 3.ubuntu.pool.ntp.org\/#server 3.ubuntu.pool.ntp.org\/g' \/etc\/ntp.conf\r\n\r\n#Set the network node to follow up your conroller node\r\nsed -i 's\/server ntp.ubuntu.com\/server 10.10.10.51\/g' \/etc\/ntp.conf\r\n\r\nservice ntp restart\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0646\u0635\u0628 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631:<\/p>\n<pre>apt-get install -y vlan bridge-utils<\/pre>\n<div class=\"usGWQd\" aria-live=\"polite\">\n<div class=\"KkbLmb\">\n<div class=\"lRu31\"><span class=\"HwtZe\" lang=\"fa\"><span class=\"jCAhz ChMk0b\"><span class=\"ryNqvb\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 IP_Forwarding:<\/span><\/span><\/span><\/div>\n<\/div>\n<\/div>\n<pre>sed -i 's\/#net.ipv4.ip_forward=1\/net.ipv4.ip_forward=1\/' \/etc\/sysctl.conf\r\n\r\n# To save you from rebooting, perform the following\r\nsysctl net.ipv4.ip_forward=1\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-32networking\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#32networking\" aria-hidden=\"true\"><\/a>Networking<\/h3>\n<p>3 NIC \u0628\u0627\u06cc\u062f \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f:<\/p>\n<pre># OpenStack management\r\nauto eth0\r\niface eth0 inet static\r\naddress 10.10.10.52\r\nnetmask 255.255.255.0\r\n\r\n# VM Configuration\r\nauto eth1\r\niface eth1 inet static\r\naddress 10.20.20.52\r\nnetmask 255.255.255.0\r\n\r\n# VM internet Access\r\nauto eth2\r\niface eth2 inet static\r\naddress 192.168.100.52\r\nnetmask 255.255.255.0\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-34-openvswitch-part1\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#34-openvswitch-part1\" aria-hidden=\"true\"><\/a>\u0628\u062e\u0634 \u0627\u0648\u0644 OpenVSwitch<\/h3>\n<p>OpenVSwitch \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y openvswitch-switch openvswitch-datapath-dkms\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u06cc\u062c\u0627\u062f \u067e\u0644 \u0647\u0627:<\/p>\n<pre>#br-int will be used for VM integration\r\novs-vsctl add-br br-int\r\n\r\n#br-ex is used to make to VM accessible from the internet\r\novs-vsctl add-br br-ex\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-35-quantum\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#35-quantum\" aria-hidden=\"true\"><\/a>Quantum<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0639\u0627\u0645\u0644 Quantum openvswitch\u060c l3 agent \u0648 dhcp agent \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get -y install quantum-plugin-openvswitch-agent quantum-dhcp-agent quantum-l3-agent quantum-metadata-agent\r\n<\/pre>\n<p>\u0648\u06cc\u0631\u0627\u06cc\u0634 \/etc\/quantum\/api-paste.ini:<\/p>\n<pre>[filter:authtoken]\r\npaste.filter_factory = keystoneclient.middleware.auth_token:filter_factory\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = quantum\r\nadmin_password = service_pass\r\n<\/pre>\n<p>\u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0644\u0627\u06af\u06cc\u0646 OVS<\/p>\n<p>\/etc\/quantum\/plugins\/openvswitch\/ovs_quantum_plugin.ini \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>#Under the database section\r\n[DATABASE]\r\nsql_connection = mysql:\/\/quantumUser:quantumPass@10.10.10.51\/quantum\r\n\r\n#Under the OVS section\r\n[OVS]\r\ntenant_network_type = gre\r\ntunnel_id_ranges = 1:1000\r\nintegration_bridge = br-int\r\ntunnel_bridge = br-tun\r\nlocal_ip = 10.20.20.52\r\nenable_tunneling = True\r\n\r\n#Firewall driver for realizing quantum security group function\r\n[SECURITYGROUP]\r\nfirewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver\r\n<\/pre>\n<p>\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \/etc\/quantum\/metadata_agent.ini:<\/p>\n<pre># The Quantum user information for accessing the Quantum API.\r\nauth_url = http:\/\/10.10.10.51:35357\/v2.0\r\nauth_region = RegionOne\r\nadmin_tenant_name = service\r\nadmin_user = quantum\r\nadmin_password = service_pass\r\n\r\n# IP address used by Nova metadata server\r\nnova_metadata_ip = 10.10.10.51\r\n\r\n# TCP Port used by Nova metadata server\r\nnova_metadata_port = 8775\r\n\r\nmetadata_proxy_shared_secret = helloOpenStack\r\n<\/pre>\n<p>\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 IP rabbitMQ \u0634\u0645\u0627 \u062f\u0631 \/etc\/quantum\/quantum.conf \u0631\u0648\u06cc controller node \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f:<\/p>\n<pre>rabbit_host = 10.10.10.51\r\n\r\n#And update the keystone_authtoken section\r\n\r\n[keystone_authtoken]\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = quantum\r\nadmin_password = service_pass\r\nsigning_dir = \/var\/lib\/quantum\/keystone-signing\r\n<\/pre>\n<p>\/etc\/sudoers.d\/quantum_sudoers \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0645\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f (\u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u0627\u062c\u0628\u0627\u0631\u06cc \u0627\u0633\u062a)<\/p>\n<pre>nano \/etc\/sudoers.d\/quantum_sudoers\r\n\r\n#Modify the quantum user\r\nquantum ALL=NOPASSWD: ALL\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>cd \/etc\/init.d\/; for i in $( ls quantum-* ); do sudo service $i restart; done\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\">\u0628\u062e\u0634 \u062f\u0648\u0645 OpenVSwitch<\/h3>\n<p>Eth2 \u0631\u0627 \u062f\u0631 \/etc\/network\/interfaces \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0634\u0648\u062f:<\/p>\n<pre># VM internet Access\r\nauto eth2\r\niface eth2 inet manual\r\nup ifconfig $IFACE 0.0.0.0 up\r\nup ip link set $IFACE promisc on\r\ndown ip link set $IFACE promisc off\r\ndown ifconfig $IFACE down\r\n<\/pre>\n<p>Eth2 \u0631\u0627 \u0628\u0647 br-ex \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>#Internet connectivity will be lost after this step but this won't affect OpenStack's work\r\novs-vsctl add-port br-ex eth2\r\n\r\n#If you want to get internet connection back, you can assign the eth2's IP address to the br-ex in the \/etc\/network\/interfaces file.<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\">KVM<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0633\u062e\u062a \u0627\u0641\u0632\u0627\u0631 \u0634\u0645\u0627 \u0627\u0632 \u0645\u062c\u0627\u0632\u06cc \u0633\u0627\u0632\u06cc \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<pre>apt-get install -y cpu-checker\r\nkvm-ok\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0633\u0631\u0627\u063a \u0646\u0635\u0628 kvm \u0628\u0631\u0648\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y kvm libvirt-bin pm-utils\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0622\u0631\u0627\u06cc\u0647 cgroup_device_acl \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \/etc\/libvirt\/qemu.conf \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>cgroup_device_acl = [\r\n\"\/dev\/null\", \"\/dev\/full\", \"\/dev\/zero\",\r\n\"\/dev\/random\", \"\/dev\/urandom\",\r\n\"\/dev\/ptmx\", \"\/dev\/kvm\", \"\/dev\/kqemu\",\r\n\"\/dev\/rtc\", \"\/dev\/hpet\",\"\/dev\/net\/tun\"\r\n]\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u00a0 virtual bridge \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>virsh net-destroy default\r\nvirsh net-undefine default\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0641\u0627\u06cc\u0644 \/etc\/libvirt\/libvirtd.conf\u060c \u0627\u0646\u062a\u0642\u0627\u0644 \u0632\u0646\u062f\u0647 live migration \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>listen_tls = 0\r\nlisten_tcp = 1\r\nauth_tcp = \"none\"\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0645\u062a\u063a\u06cc\u0631 libvirtd_opts \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \/etc\/init\/libvirt-bin.conf \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>env libvirtd_opts=\"-d -l\"\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0641\u0627\u06cc\u0644 \/etc\/default\/libvirt-bin \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>libvirtd_opts=\"-d -l\"\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0631\u0627\u06cc \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u062c\u062f\u06cc\u062f\u060c \u0633\u0631\u0648\u06cc\u0633 libvirt \u0648 dbus \u0631\u0627 \u0645\u062c\u062f\u062f\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>service dbus restart &amp;&amp; service libvirt-bin restart\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-44-openvswitch\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#44-openvswitch\" aria-hidden=\"true\"><\/a>OpenVSwitch<\/h3>\n<div class=\"usGWQd\" aria-live=\"polite\">\n<div class=\"KkbLmb\">\n<div class=\"lRu31\"><span class=\"HwtZe\" lang=\"fa\"><span class=\"jCAhz ChMk0b\"><span class=\"ryNqvb\">OpenVSwitch \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/span><\/span><\/span><\/div>\n<\/div>\n<\/div>\n<pre>apt-get install -y openvswitch-switch openvswitch-datapath-dkms\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u00a0 :bridge<\/p>\n<pre>#br-int will be used for VM integration\r\novs-vsctl add-br br-int\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-45-quantum\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#45-quantum\" aria-hidden=\"true\"><\/a>Quantum<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0639\u0627\u0645\u0644 Quantum openvswitch \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get -y install quantum-plugin-openvswitch-agent\r\n<\/pre>\n<p>\u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0644\u0627\u06af\u06cc\u0646 OVS<\/p>\n<p>\/etc\/quantum\/plugins\/openvswitch\/ovs_quantum_plugin.ini \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>#Under the database section\r\n[DATABASE]\r\nsql_connection = mysql:\/\/quantumUser:quantumPass@10.10.10.51\/quantum\r\n\r\n#Under the OVS section\r\n[OVS]\r\ntenant_network_type = gre\r\ntunnel_id_ranges = 1:1000\r\nintegration_bridge = br-int\r\ntunnel_bridge = br-tun\r\nlocal_ip = 10.20.20.53\r\nenable_tunneling = True\r\n\r\n#Firewall driver for realizing quantum security group function\r\n[SECURITYGROUP]\r\nfirewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 IP rabbitMQ \u0634\u0645\u0627 \u062f\u0631 \/etc\/quantum\/quantum.conf \u0631\u0648\u06cc controller node \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f:<\/p>\n<pre>rabbit_host = 10.10.10.51\r\n\r\n#And update the keystone_authtoken section\r\n\r\n[keystone_authtoken]\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = quantum\r\nadmin_password = service_pass\r\nsigning_dir = \/var\/lib\/quantum\/keystone-signing\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u062a\u0645\u0627\u0645 \u062e\u062f\u0645\u0627\u062a:<\/p>\n<pre>service quantum-plugin-openvswitch-agent restart\r\n<\/pre>\n<h3 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-46-nova\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#46-nova\" aria-hidden=\"true\"><\/a>Nova<\/h3>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u062c\u0632\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 nova \u0631\u0627 \u0628\u0631\u0627\u06cc compute node \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>apt-get install -y nova-compute-kvm\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u06a9\u0646\u0648\u0646 \u0628\u062e\u0634 authtoken \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \/etc\/nova\/api-paste.ini \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<pre>[filter:authtoken]\r\npaste.filter_factory = keystoneclient.middleware.auth_token:filter_factory\r\nauth_host = 10.10.10.51\r\nauth_port = 35357\r\nauth_protocol = http\r\nadmin_tenant_name = service\r\nadmin_user = nova\r\nadmin_password = service_pass\r\nsigning_dirname = \/tmp\/keystone-signing-nova\r\n# Workaround for https:\/\/bugs.launchpad.net\/nova\/+bug\/1154809\r\nauth_version = v2.0\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0641\u0627\u06cc\u0644 \/etc\/nova\/nova-compute.conf \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>[DEFAULT]\r\nlibvirt_type=kvm\r\nlibvirt_ovs_bridge=br-int\r\nlibvirt_vif_type=ethernet\r\nlibvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver\r\nlibvirt_use_virtio_for_bridges=True\r\n<\/pre>\n<p>\/etc\/nova\/nova.conf \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<pre>[DEFAULT]\r\nlogdir=\/var\/log\/nova\r\nstate_path=\/var\/lib\/nova\r\nlock_path=\/run\/lock\/nova\r\nverbose=True\r\napi_paste_config=\/etc\/nova\/api-paste.ini\r\ncompute_scheduler_driver=nova.scheduler.simple.SimpleScheduler\r\nrabbit_host=10.10.10.51\r\nnova_url=http:\/\/10.10.10.51:8774\/v1.1\/\r\nsql_connection=mysql:\/\/novaUser:novaPass@10.10.10.51\/nova\r\nroot_helper=sudo nova-rootwrap \/etc\/nova\/rootwrap.conf\r\n\r\n# Auth\r\nuse_deprecated_auth=false\r\nauth_strategy=keystone\r\n\r\n# Imaging service\r\nglance_api_servers=10.10.10.51:9292\r\nimage_service=nova.image.glance.GlanceImageService\r\n\r\n# Vnc configuration\r\nnovnc_enabled=true\r\nnovncproxy_base_url=http:\/\/192.168.100.51:6080\/vnc_auto.html\r\nnovncproxy_port=6080\r\nvncserver_proxyclient_address=10.10.10.53\r\nvncserver_listen=0.0.0.0\r\n\r\n# Network settings\r\nnetwork_api_class=nova.network.quantumv2.api.API\r\nquantum_url=http:\/\/10.10.10.51:9696\r\nquantum_auth_strategy=keystone\r\nquantum_admin_tenant_name=service\r\nquantum_admin_username=quantum\r\nquantum_admin_password=service_pass\r\nquantum_admin_auth_url=http:\/\/10.10.10.51:35357\/v2.0\r\nlibvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver\r\nlinuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver\r\n#If you want Quantum + Nova Security groups\r\nfirewall_driver=nova.virt.firewall.NoopFirewallDriver\r\nsecurity_group_api=quantum\r\n#If you want Nova Security groups only, comment the two lines above and uncomment line -1-.\r\n#-1-firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver\r\n\r\n#Metadata\r\nservice_quantum_metadata_proxy = True\r\nquantum_metadata_proxy_shared_secret = helloOpenStack\r\n\r\n# Compute #\r\ncompute_driver=libvirt.LibvirtDriver\r\n\r\n# Cinder #\r\nvolume_api_class=nova.volume.cinder.API\r\nosapi_volume_listen_port=5900\r\ncinder_catalog_info=volume:cinder:internalURL\r\n<\/pre>\n<p>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u062e\u062f\u0645\u0627\u062a nova-*:<\/p>\n<pre>cd \/etc\/init.d\/; for i in $( ls nova-* ); do sudo service $i restart; done<\/pre>\n<h2 dir=\"auto\" style=\"text-align: right;\"><a id=\"user-content-5-your-first-vm\" class=\"anchor\" target=\"_blank\" href=\"https:\/\/github.com\/bilelmsekni\/OpenStack-Grizzly-Install-Guide\/blob\/OVS_MultiNode\/OpenStack_Grizzly_Install_Guide.rst#5-your-first-vm\" aria-hidden=\"true\"><\/a>\u0627\u0648\u0644\u06cc\u0646 \u0645\u0627\u0634\u06cc\u0646 \u0645\u062c\u0627\u0632\u06cc \u0634\u0645\u0627<\/h2>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0645\u0627\u0634\u06cc\u0646 \u0645\u062c\u0627\u0632\u06cc \u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 tenant\u060c \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0634\u0628\u06a9\u0647 \u062f\u0627\u062e\u0644\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<pre>keystone tenant-create --name project_one\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0642\u0634 \u0639\u0636\u0648 \u0631\u0627 \u062f\u0631 tenant \u062c\u062f\u06cc\u062f \u0628\u0647 \u0622\u0646 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0647\u06cc\u062f:<\/p>\n<pre>keystone user-create --name=user_one --pass=user_one --tenant-id $put_id_of_project_one --email=user_one@domain.com\r\nkeystone user-role-add --tenant-id $put_id_of_project_one  --user-id $put_id_of_user_one --role-id $put_id_of_member_role\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum net-create --tenant-id $put_id_of_project_one net_proj_one\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u06cc\u06a9 \u0632\u06cc\u0631 \u0634\u0628\u06a9\u0647 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0634\u0628\u06a9\u0647 tenant \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum subnet-create --tenant-id $put_id_of_project_one net_proj_one 50.50.1.0\/24 --dns_nameservers list=true 8.8.8.7 8.8.8.8\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u06cc\u06a9 \u0631\u0648\u062a\u0631 \u0628\u0631\u0627\u06cc tenant \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum router-create --tenant-id $put_id_of_project_one router_proj_one\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0631\u0648\u062a\u0631 \u0631\u0627 \u0628\u0647 \u0639\u0627\u0645\u0644 l3 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f (\u0627\u06af\u0631 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0636\u0627\u0641\u0647 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f):<\/p>\n<pre>quantum agent-list (to get the l3 agent ID)\r\nquantum l3-agent-router-add $l3_agent_ID router_proj_one\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0631\u0648\u062a\u0631 \u0631\u0627 \u0628\u0647 subnet \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum router-interface-add $put_router_proj_one_id_here $put_subnet_id_here\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u06a9\u0648\u0627\u0646\u062a\u0648\u0645\u06cc:<\/p>\n<pre>cd \/etc\/init.d\/; for i in $( ls quantum-* ); do sudo service $i restart; done\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u062e\u0627\u0631\u062c\u06cc \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 tenant \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 admin tenant \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<pre>quantum net-create --tenant-id $put_id_of_admin_tenant ext_net --router:external=True\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u06cc\u06a9 \u0632\u06cc\u0631 \u0634\u0628\u06a9\u0647 \u0628\u0631\u0627\u06cc IP \u0647\u0627\u06cc \u0634\u0646\u0627\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum subnet-create --tenant-id $put_id_of_admin_tenant --allocation-pool start=192.168.100.102,end=192.168.100.126 --gateway 192.168.100.1 ext_net 192.168.100.100\/24 --enable_dhcp=False\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u062d\u0627\u0644\u0627 router&#8217;s gateway\u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0634\u0628\u06a9\u0647 \u062e\u0627\u0631\u062c\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum router-gateway-set $put_router_proj_one_id_here $put_id_of_ext_net_here<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0627\u06cc\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06cc\u0646\u06af \u0645\u0627\u0634\u06cc\u0646 \u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u0631\u0627 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n<pre>nova --no-cache secgroup-add-rule default icmp -1 -1 0.0.0.0\/0\r\nnova --no-cache secgroup-add-rule default tcp 22 22 0.0.0.0\/0\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0628\u0627 \u0627\u062e\u062a\u0635\u0627\u0635 \u06cc\u06a9 IP \u0634\u0646\u0627\u0648\u0631 \u0628\u0647 tenant \u067e\u0631\u0648\u0698\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum floatingip-create ext_net\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u06cc\u06a9 VM \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>nova --no-cach\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ne boot --image $id_myFirstImage --flavor 1 my_first_vm\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u0634\u0646\u0627\u0633\u0647 \u067e\u0648\u0631\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 VM \u062e\u0648\u062f \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum port-list\r\n<\/pre>\n<p>IP \u0634\u0646\u0627\u0648\u0631 \u0631\u0627 \u0628\u0647 VM \u0645\u062a\u0635\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre>quantum floatingip-associate $put_id_floating_ip $put_id_vm_port\r\n<\/pre>\n<p dir=\"auto\" style=\"text-align: right;\">\u062a\u0645\u0627\u0645 \u0634\u062f!\u00a0 \u067e\u06cc\u0646\u06af VM \u062e\u0648\u062f \u0631\u0627 \u0628\u06af\u06cc\u0631\u06cc\u062f \u0648 \u0627\u0632 OpenStack \u0644\u0630\u062a \u0628\u0628\u0631\u06cc\u062f.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenStack Grizzly \u0631\u0627\u0647\u06cc \u0622\u0633\u0627\u0646 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u0644\u062a\u0641\u0631\u0645 OpenStack \u0634\u062e\u0635\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a. \u062d\u062a\u0645\u0627 \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u06a9\u0645\u06a9 OpenStack \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0633\u0631\u0648\u0631\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u0631\u0627 \u0641\u0636\u0627\u06cc \u0627\u0628\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0686\u0637\u0648\u0631 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 OpenStack Grizzly \u0628\u0647 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0645\u0645\u06a9\u0646 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0646\u0635\u0628 OpenStack Grizzly \u067e\u06cc\u0634 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0646\u0635\u0628 \u0645\u0637\u0645\u0626\u0646 [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":8654,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[69,210,65],"tags":[],"class_list":["post-8650","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-network","category-database","category-services"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.4 (Yoast SEO v24.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly - \u0647\u0627\u0633\u062a\u06cc\u062f\u0627<\/title>\n<meta name=\"description\" content=\"Openstack \u0686\u06cc\u0633\u062a | \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc openstack\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hostida.com\/blog\/openstack-grizzly\/\" \/>\n<meta property=\"og:locale\" content=\"fa_IR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly\" \/>\n<meta property=\"og:description\" content=\"Openstack \u0686\u06cc\u0633\u062a | \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc openstack\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hostida.com\/blog\/openstack-grizzly\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0648\u0628\u0644\u0627\u06af \u0647\u0627\u0633\u062a\u06cc\u062f\u0627\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-06T12:58:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-12T13:21:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u0628\u062f\u0633\u062a\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0632\u0645\u0627\u0646 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u062f\u0642\u06cc\u0642\u0647\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/\"},\"author\":{\"name\":\"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc\",\"@id\":\"https:\/\/hostida.com\/blog\/#\/schema\/person\/7d039ba4cbc200b19069532e6e3e6d35\"},\"headline\":\"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly\",\"datePublished\":\"2023-03-06T12:58:06+00:00\",\"dateModified\":\"2024-11-12T13:21:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/\"},\"wordCount\":277,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/hostida.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png\",\"articleSection\":[\"\u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0648 \u0634\u0628\u06a9\u0647\",\"\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\",\"\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0648 \u062e\u062f\u0645\u0627\u062a\"],\"inLanguage\":\"fa-IR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/hostida.com\/blog\/openstack-grizzly\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/\",\"url\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/\",\"name\":\"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly - \u0647\u0627\u0633\u062a\u06cc\u062f\u0627\",\"isPartOf\":{\"@id\":\"https:\/\/hostida.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png\",\"datePublished\":\"2023-03-06T12:58:06+00:00\",\"dateModified\":\"2024-11-12T13:21:31+00:00\",\"description\":\"Openstack \u0686\u06cc\u0633\u062a | \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc openstack\",\"breadcrumb\":{\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/#breadcrumb\"},\"inLanguage\":\"fa-IR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hostida.com\/blog\/openstack-grizzly\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/#primaryimage\",\"url\":\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png\",\"contentUrl\":\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png\",\"width\":1024,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hostida.com\/blog\/openstack-grizzly\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u062e\u0627\u0646\u0647\",\"item\":\"https:\/\/hostida.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hostida.com\/blog\/#website\",\"url\":\"https:\/\/hostida.com\/blog\/\",\"name\":\"\u0648\u0628\u0644\u0627\u06af \u0647\u0627\u0633\u062a\u06cc\u062f\u0627\",\"description\":\"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0622\u0645\u0648\u0632\u0634 \u0647\u0627\u06cc \u0648\u0628 \u0647\u0627\u0633\u062a\u06cc\u0646\u06af\",\"publisher\":{\"@id\":\"https:\/\/hostida.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hostida.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fa-IR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/hostida.com\/blog\/#organization\",\"name\":\"\u0647\u0627\u0633\u062a\u06cc\u062f\u0627\",\"url\":\"https:\/\/hostida.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\/\/hostida.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2020\/08\/logo-w-1.png\",\"contentUrl\":\"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2020\/08\/logo-w-1.png\",\"width\":885,\"height\":774,\"caption\":\"\u0647\u0627\u0633\u062a\u06cc\u062f\u0627\"},\"image\":{\"@id\":\"https:\/\/hostida.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/hostida.com\/blog\/#\/schema\/person\/7d039ba4cbc200b19069532e6e3e6d35\",\"name\":\"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fa-IR\",\"@id\":\"https:\/\/hostida.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8bb44acf4a13923c1c812b0f4fc62f19?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8bb44acf4a13923c1c812b0f4fc62f19?s=96&d=mm&r=g\",\"caption\":\"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly - \u0647\u0627\u0633\u062a\u06cc\u062f\u0627","description":"Openstack \u0686\u06cc\u0633\u062a | \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc openstack","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hostida.com\/blog\/openstack-grizzly\/","og_locale":"fa_IR","og_type":"article","og_title":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly","og_description":"Openstack \u0686\u06cc\u0633\u062a | \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc openstack","og_url":"https:\/\/hostida.com\/blog\/openstack-grizzly\/","og_site_name":"\u0648\u0628\u0644\u0627\u06af \u0647\u0627\u0633\u062a\u06cc\u062f\u0627","article_published_time":"2023-03-06T12:58:06+00:00","article_modified_time":"2024-11-12T13:21:31+00:00","og_image":[{"width":1024,"height":512,"url":"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png","type":"image\/png"}],"author":"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc","twitter_card":"summary_large_image","twitter_misc":{"\u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u0628\u062f\u0633\u062a":"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc","\u0632\u0645\u0627\u0646 \u062a\u0642\u0631\u06cc\u0628\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646":"7 \u062f\u0642\u06cc\u0642\u0647"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/#article","isPartOf":{"@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/"},"author":{"name":"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc","@id":"https:\/\/hostida.com\/blog\/#\/schema\/person\/7d039ba4cbc200b19069532e6e3e6d35"},"headline":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly","datePublished":"2023-03-06T12:58:06+00:00","dateModified":"2024-11-12T13:21:31+00:00","mainEntityOfPage":{"@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/"},"wordCount":277,"commentCount":0,"publisher":{"@id":"https:\/\/hostida.com\/blog\/#organization"},"image":{"@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/#primaryimage"},"thumbnailUrl":"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png","articleSection":["\u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0648 \u0634\u0628\u06a9\u0647","\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647","\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0648 \u062e\u062f\u0645\u0627\u062a"],"inLanguage":"fa-IR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hostida.com\/blog\/openstack-grizzly\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/","url":"https:\/\/hostida.com\/blog\/openstack-grizzly\/","name":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly - \u0647\u0627\u0633\u062a\u06cc\u062f\u0627","isPartOf":{"@id":"https:\/\/hostida.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/#primaryimage"},"image":{"@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/#primaryimage"},"thumbnailUrl":"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png","datePublished":"2023-03-06T12:58:06+00:00","dateModified":"2024-11-12T13:21:31+00:00","description":"Openstack \u0686\u06cc\u0633\u062a | \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc openstack","breadcrumb":{"@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/#breadcrumb"},"inLanguage":"fa-IR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hostida.com\/blog\/openstack-grizzly\/"]}]},{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/#primaryimage","url":"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png","contentUrl":"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2023\/03\/cloud-computing-trends-1024x512-1.png","width":1024,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/hostida.com\/blog\/openstack-grizzly\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u062e\u0627\u0646\u0647","item":"https:\/\/hostida.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 OpenStack Grizzly"}]},{"@type":"WebSite","@id":"https:\/\/hostida.com\/blog\/#website","url":"https:\/\/hostida.com\/blog\/","name":"\u0648\u0628\u0644\u0627\u06af \u0647\u0627\u0633\u062a\u06cc\u062f\u0627","description":"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0622\u0645\u0648\u0632\u0634 \u0647\u0627\u06cc \u0648\u0628 \u0647\u0627\u0633\u062a\u06cc\u0646\u06af","publisher":{"@id":"https:\/\/hostida.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hostida.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fa-IR"},{"@type":"Organization","@id":"https:\/\/hostida.com\/blog\/#organization","name":"\u0647\u0627\u0633\u062a\u06cc\u062f\u0627","url":"https:\/\/hostida.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/hostida.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2020\/08\/logo-w-1.png","contentUrl":"https:\/\/hostida.com\/blog\/wp-content\/uploads\/2020\/08\/logo-w-1.png","width":885,"height":774,"caption":"\u0647\u0627\u0633\u062a\u06cc\u062f\u0627"},"image":{"@id":"https:\/\/hostida.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/hostida.com\/blog\/#\/schema\/person\/7d039ba4cbc200b19069532e6e3e6d35","name":"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc","image":{"@type":"ImageObject","inLanguage":"fa-IR","@id":"https:\/\/hostida.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8bb44acf4a13923c1c812b0f4fc62f19?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8bb44acf4a13923c1c812b0f4fc62f19?s=96&d=mm&r=g","caption":"\u0634\u0631\u0627\u0631\u0647 \u062a\u0627\u062c \u062f\u06cc\u0646\u06cc"}}]}},"my_custom_field":"","_links":{"self":[{"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/posts\/8650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/comments?post=8650"}],"version-history":[{"count":13,"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/posts\/8650\/revisions"}],"predecessor-version":[{"id":12773,"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/posts\/8650\/revisions\/12773"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/media\/8654"}],"wp:attachment":[{"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/media?parent=8650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/categories?post=8650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hostida.com\/blog\/wp-json\/wp\/v2\/tags?post=8650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}