Can specify OpenStack region
Change-Id: I4ae7efb85da9021c20fe988058ad64220371901c
This commit is contained in:
parent
68cab360c8
commit
b6867a4540
17
README.md
17
README.md
@ -1,7 +1,14 @@
|
|||||||
RACK(Real Application Centric Kernel) README
|
# The concept of RACK: "OpenStack Native Application"
|
||||||
=====================
|
|
||||||
|
|
||||||
## RACK Project Resources
|
OpenStack Native Application is the software, which uses OpenStack resource (eg. VM or VNET) directly from application. Recent popular applications are designed before the cloud computing age, so affinity with cloud is not considered. In order to make those applications work on OpenStack, tools such as Chef, Puppet and other tools are required, and it makes systems very complex in design.
|
||||||
|
|
||||||
* [Wiki](https://wiki.openstack.org/wiki/RACK)
|
RACK provides the mechanism to create “After the Cloud” applications. Programmer can write codes that are scalable and migratable on OpenStack platform without cooperating with the external systems.
|
||||||
* [Library](https://github.com/stackforge/python-rackclient)
|
|
||||||
|
Concepts of RACK are as follows:
|
||||||
|
|
||||||
|
1. RACK handles VM with "functions" as a single execution binary file. “Functions” here means OS, middleware and programs that are necessary for application to function. The programs here are made in such a way as to call and operate RACK API.
|
||||||
|
2. When this execution binary is deployed onto OpenStack, the VM will behave like a Linux process and then finish its own task.
|
||||||
|
3. This process is based on the descriptions in the program. It does things such as forking and generating a child process, communicating between processes.
|
||||||
|
|
||||||
|
Please take a look at our Wiki page to understand RACK more!
|
||||||
|
**https://wiki.openstack.org/wiki/RACK**
|
||||||
|
@ -10,5 +10,6 @@
|
|||||||
#os_password = password
|
#os_password = password
|
||||||
#os_tenant_name = demo
|
#os_tenant_name = demo
|
||||||
#os_auth_url = http://localhost:5000/v2.0
|
#os_auth_url = http://localhost:5000/v2.0
|
||||||
|
#os_region_name = RegionOne
|
||||||
#ipc_port = 8888
|
#ipc_port = 8888
|
||||||
#shm_port = 6379
|
#shm_port = 6379
|
@ -1,7 +1,6 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
|
|
||||||
# The list of modules to copy from oslo-incubator.git
|
# The list of modules to copy from oslo-incubator.git
|
||||||
module=cliutils
|
|
||||||
module=config
|
module=config
|
||||||
module=context
|
module=context
|
||||||
module=db
|
module=db
|
||||||
@ -11,37 +10,19 @@ module=excutils
|
|||||||
module=fileutils
|
module=fileutils
|
||||||
module=fixture
|
module=fixture
|
||||||
module=gettextutils
|
module=gettextutils
|
||||||
module=imageutils
|
|
||||||
module=importutils
|
module=importutils
|
||||||
module=install_venv_common
|
|
||||||
module=jsonutils
|
module=jsonutils
|
||||||
module=local
|
module=local
|
||||||
module=lockutils
|
module=lockutils
|
||||||
module=log
|
module=log
|
||||||
module=loopingcall
|
module=loopingcall
|
||||||
module=memorycache
|
|
||||||
module=middleware/base
|
|
||||||
module=middleware/request_id
|
|
||||||
module=network_utils
|
|
||||||
module=periodic_task
|
|
||||||
module=policy
|
module=policy
|
||||||
module=processutils
|
module=processutils
|
||||||
module=report
|
|
||||||
module=report.generators
|
|
||||||
module=report.models
|
|
||||||
module=report.views
|
|
||||||
module=report.views.xml
|
|
||||||
module=report.views.json
|
|
||||||
module=report.views.text
|
|
||||||
module=service
|
module=service
|
||||||
module=sslutils
|
|
||||||
module=strutils
|
module=strutils
|
||||||
module=threadgroup
|
module=threadgroup
|
||||||
module=timeutils
|
module=timeutils
|
||||||
module=units
|
|
||||||
module=uuidutils
|
module=uuidutils
|
||||||
module=versionutils
|
|
||||||
module=xmlutils
|
|
||||||
|
|
||||||
# The base module to hold the copy of openstack.common
|
# The base module to hold the copy of openstack.common
|
||||||
base=rack
|
base=rack
|
@ -250,6 +250,7 @@ class Controller(wsgi.Controller):
|
|||||||
default_args["os_password"] = cfg.CONF.os_password
|
default_args["os_password"] = cfg.CONF.os_password
|
||||||
default_args["os_tenant_name"] = cfg.CONF.os_tenant_name
|
default_args["os_tenant_name"] = cfg.CONF.os_tenant_name
|
||||||
default_args["os_auth_url"] = cfg.CONF.os_auth_url
|
default_args["os_auth_url"] = cfg.CONF.os_auth_url
|
||||||
|
default_args["os_region_name"] = cfg.CONF.os_region_name
|
||||||
else:
|
else:
|
||||||
proxy_instance_id = proxy[0]["nova_instance_id"]
|
proxy_instance_id = proxy[0]["nova_instance_id"]
|
||||||
default_args["proxy_ip"] = self.manager.get_process_address(
|
default_args["proxy_ip"] = self.manager.get_process_address(
|
||||||
|
@ -27,7 +27,9 @@ openstack_client_opts = [
|
|||||||
cfg.StrOpt('os_tenant_name',
|
cfg.StrOpt('os_tenant_name',
|
||||||
help='Valid tenant name for OpenStack'),
|
help='Valid tenant name for OpenStack'),
|
||||||
cfg.StrOpt('os_auth_url',
|
cfg.StrOpt('os_auth_url',
|
||||||
help='The keystone endpoint')
|
help='The keystone endpoint'),
|
||||||
|
cfg.StrOpt('os_region_name',
|
||||||
|
help='Valid region name for OpenStack')
|
||||||
]
|
]
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
@ -41,7 +43,8 @@ def get_nova_client():
|
|||||||
"username": CONF.os_username,
|
"username": CONF.os_username,
|
||||||
"api_key": CONF.os_password,
|
"api_key": CONF.os_password,
|
||||||
"project_id": CONF.os_tenant_name,
|
"project_id": CONF.os_tenant_name,
|
||||||
"auth_url": CONF.os_auth_url
|
"auth_url": CONF.os_auth_url,
|
||||||
|
"region_name": CONF.os_region_name
|
||||||
}
|
}
|
||||||
|
|
||||||
for key, value in credentials.items():
|
for key, value in credentials.items():
|
||||||
@ -56,7 +59,8 @@ def get_neutron_client():
|
|||||||
"username": CONF.os_username,
|
"username": CONF.os_username,
|
||||||
"password": CONF.os_password,
|
"password": CONF.os_password,
|
||||||
"tenant_name": CONF.os_tenant_name,
|
"tenant_name": CONF.os_tenant_name,
|
||||||
"auth_url": CONF.os_auth_url
|
"auth_url": CONF.os_auth_url,
|
||||||
|
"region_name": CONF.os_region_name
|
||||||
}
|
}
|
||||||
|
|
||||||
for key, value in credentials.items():
|
for key, value in credentials.items():
|
||||||
|
@ -485,6 +485,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
||||||
|
self.mox.StubOutWithMock(cfg.CONF, "os_region_name")
|
||||||
db.process_get_all(
|
db.process_get_all(
|
||||||
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
||||||
.AndReturn([])
|
.AndReturn([])
|
||||||
@ -509,6 +510,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
cfg.CONF.os_password = "os_password_data"
|
cfg.CONF.os_password = "os_password_data"
|
||||||
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
||||||
cfg.CONF.os_auth_url = "os_auth_url_data"
|
cfg.CONF.os_auth_url = "os_auth_url_data"
|
||||||
|
cfg.CONF.os_region_name = "os_region_name"
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
process = _base_process1(GID, PID1)
|
process = _base_process1(GID, PID1)
|
||||||
@ -528,6 +530,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
expect["proxy"]["args"].update(os_password="os_password_data")
|
expect["proxy"]["args"].update(os_password="os_password_data")
|
||||||
expect["proxy"]["args"].update(os_tenant_name="os_tenant_name_data")
|
expect["proxy"]["args"].update(os_tenant_name="os_tenant_name_data")
|
||||||
expect["proxy"]["args"].update(os_auth_url="os_auth_url_data")
|
expect["proxy"]["args"].update(os_auth_url="os_auth_url_data")
|
||||||
|
expect["proxy"]["args"].update(os_region_name="os_region_name")
|
||||||
for key in body["proxy"]:
|
for key in body["proxy"]:
|
||||||
self.assertEqual(body["proxy"][key], expect["proxy"][key])
|
self.assertEqual(body["proxy"][key], expect["proxy"][key])
|
||||||
|
|
||||||
@ -540,6 +543,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
||||||
|
self.mox.StubOutWithMock(cfg.CONF, "os_region_name")
|
||||||
db.process_get_all(
|
db.process_get_all(
|
||||||
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
||||||
.AndReturn([])
|
.AndReturn([])
|
||||||
@ -564,6 +568,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
cfg.CONF.os_password = "os_password_data"
|
cfg.CONF.os_password = "os_password_data"
|
||||||
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
||||||
cfg.CONF.os_auth_url = "os_auth_url_data"
|
cfg.CONF.os_auth_url = "os_auth_url_data"
|
||||||
|
cfg.CONF.os_region_name = "os_region_name"
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
process = _base_process1(GID, PID1)
|
process = _base_process1(GID, PID1)
|
||||||
@ -584,6 +589,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
expect["proxy"]["args"].update(os_password="os_password_data")
|
expect["proxy"]["args"].update(os_password="os_password_data")
|
||||||
expect["proxy"]["args"].update(os_tenant_name="os_tenant_name_data")
|
expect["proxy"]["args"].update(os_tenant_name="os_tenant_name_data")
|
||||||
expect["proxy"]["args"].update(os_auth_url="os_auth_url_data")
|
expect["proxy"]["args"].update(os_auth_url="os_auth_url_data")
|
||||||
|
expect["proxy"]["args"].update(os_region_name="os_region_name")
|
||||||
expect["proxy"].update(name="proxy-" + PID1)
|
expect["proxy"].update(name="proxy-" + PID1)
|
||||||
for key in body["proxy"]:
|
for key in body["proxy"]:
|
||||||
self.assertEqual(body["proxy"][key], expect["proxy"][key])
|
self.assertEqual(body["proxy"][key], expect["proxy"][key])
|
||||||
@ -596,6 +602,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
||||||
|
self.mox.StubOutWithMock(cfg.CONF, "os_region_name")
|
||||||
db.process_get_all(
|
db.process_get_all(
|
||||||
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
||||||
.AndReturn([])
|
.AndReturn([])
|
||||||
@ -610,6 +617,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
cfg.CONF.os_password = "os_password_data"
|
cfg.CONF.os_password = "os_password_data"
|
||||||
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
||||||
cfg.CONF.os_auth_url = "os_auth_url_data"
|
cfg.CONF.os_auth_url = "os_auth_url_data"
|
||||||
|
cfg.CONF.os_region_name = "os_region_name"
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
process = _base_process1(GID, PID1)
|
process = _base_process1(GID, PID1)
|
||||||
@ -629,6 +637,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
||||||
|
self.mox.StubOutWithMock(cfg.CONF, "os_region_name")
|
||||||
db.process_get_all(
|
db.process_get_all(
|
||||||
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
||||||
.AndReturn([])
|
.AndReturn([])
|
||||||
@ -643,6 +652,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
cfg.CONF.os_password = "os_password_data"
|
cfg.CONF.os_password = "os_password_data"
|
||||||
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
||||||
cfg.CONF.os_auth_url = "os_auth_url_data"
|
cfg.CONF.os_auth_url = "os_auth_url_data"
|
||||||
|
cfg.CONF.os_region_name = "os_region_name"
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
process = _base_process1(GID, PID1)
|
process = _base_process1(GID, PID1)
|
||||||
@ -662,6 +672,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
self.mox.StubOutWithMock(cfg.CONF, "os_password")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
self.mox.StubOutWithMock(cfg.CONF, "os_tenant_name")
|
||||||
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
self.mox.StubOutWithMock(cfg.CONF, "os_auth_url")
|
||||||
|
self.mox.StubOutWithMock(cfg.CONF, "os_region_name")
|
||||||
db.process_get_all(
|
db.process_get_all(
|
||||||
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
IsA(context.RequestContext), GID, filters=IsA(dict))\
|
||||||
.AndReturn([])
|
.AndReturn([])
|
||||||
@ -676,6 +687,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
cfg.CONF.os_password = "os_password_data"
|
cfg.CONF.os_password = "os_password_data"
|
||||||
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
cfg.CONF.os_tenant_name = "os_tenant_name_data"
|
||||||
cfg.CONF.os_auth_url = "os_auth_url_data"
|
cfg.CONF.os_auth_url = "os_auth_url_data"
|
||||||
|
cfg.CONF.os_region_name = "os_region_name"
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
process = _base_process1(GID, PID1)
|
process = _base_process1(GID, PID1)
|
||||||
|
@ -30,7 +30,8 @@ CREDENTIALS = {
|
|||||||
"os_username": "fake",
|
"os_username": "fake",
|
||||||
"os_password": "fake",
|
"os_password": "fake",
|
||||||
"os_tenant_name": "fake",
|
"os_tenant_name": "fake",
|
||||||
"os_auth_url": "fake"
|
"os_auth_url": "fake",
|
||||||
|
"os_region_name": "fake"
|
||||||
}
|
}
|
||||||
cfg.set_defaults(os_client.openstack_client_opts, **CREDENTIALS)
|
cfg.set_defaults(os_client.openstack_client_opts, **CREDENTIALS)
|
||||||
|
|
||||||
|
@ -25,7 +25,8 @@ CREDENTIALS = {
|
|||||||
"os_username": "fake",
|
"os_username": "fake",
|
||||||
"os_password": "fake",
|
"os_password": "fake",
|
||||||
"os_tenant_name": "fake",
|
"os_tenant_name": "fake",
|
||||||
"os_auth_url": "fake"
|
"os_auth_url": "fake",
|
||||||
|
"os_region_name": "fake"
|
||||||
}
|
}
|
||||||
cfg.set_defaults(os_client.openstack_client_opts, **CREDENTIALS)
|
cfg.set_defaults(os_client.openstack_client_opts, **CREDENTIALS)
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ class ProcessesTest(test.NoDBTestCase):
|
|||||||
cfg.CONF.os_password = "os_password"
|
cfg.CONF.os_password = "os_password"
|
||||||
cfg.CONF.os_tenant_name = "os_tenant_name"
|
cfg.CONF.os_tenant_name = "os_tenant_name"
|
||||||
cfg.CONF.os_auth_url = "os_auth_url"
|
cfg.CONF.os_auth_url = "os_auth_url"
|
||||||
|
cfg.CONF.os_region_name = "os_region_name"
|
||||||
|
|
||||||
self.process_client = processes.ProcessesAPI()
|
self.process_client = processes.ProcessesAPI()
|
||||||
self.nova = os_client.get_nova_client()
|
self.nova = os_client.get_nova_client()
|
||||||
|
@ -27,7 +27,8 @@ CREDENTIALS = {
|
|||||||
"os_username": "fake",
|
"os_username": "fake",
|
||||||
"os_password": "fake",
|
"os_password": "fake",
|
||||||
"os_tenant_name": "fake",
|
"os_tenant_name": "fake",
|
||||||
"os_auth_url": "fake"
|
"os_auth_url": "fake",
|
||||||
|
"os_region_name": "fake"
|
||||||
}
|
}
|
||||||
cfg.set_defaults(os_client.openstack_client_opts, **CREDENTIALS)
|
cfg.set_defaults(os_client.openstack_client_opts, **CREDENTIALS)
|
||||||
|
|
||||||
|
@ -89,9 +89,10 @@ Error: Installing the required packages
|
|||||||
### 2. Initialize the process group
|
### 2. Initialize the process group
|
||||||
|
|
||||||
This section describes how to set up an environment for this application. `rack-api` needs to be run before proceeding this step.
|
This section describes how to set up an environment for this application. `rack-api` needs to be run before proceeding this step.
|
||||||
|
For details of installation of `rack-api`, please refer to [**here**](https://github.com/stackforge/rack/tree/master/tools/setup).
|
||||||
|
|
||||||
First, we will create a configuration file for process group initialization on RACK CLI installed machine.
|
First, we will create a configuration file for process group initialization on RACK CLI installed machine.
|
||||||
For details of installation of RACK CLI, please refer to [**here**](https://github.com/stackforgehon-rackclient).
|
For details of installation of RACK CLI, please refer to [**here**](https://github.com/stackforge/python-rackclient).
|
||||||
|
|
||||||
Please fill empty section with your environment parameters.
|
Please fill empty section with your environment parameters.
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ Error: Installing the required packages
|
|||||||
|
|
||||||
本アプリケーションを動作させるための環境を用意します。
|
本アプリケーションを動作させるための環境を用意します。
|
||||||
事前に`rack-api`が起動している必要があります。
|
事前に`rack-api`が起動している必要があります。
|
||||||
`rack-api`の準備については[**こちら**](https://github.com/stackforge/rack/tree/master/tools/setup/)をご覧ください。
|
`rack-api`の準備については[**こちら**](https://github.com/stackforge/rack/blob/master/tools/setup/README_ja.md)をご覧ください。
|
||||||
|
|
||||||
RACK CLIを導入したマシン上で、グループ初期化用の設定ファイルを作成します。
|
RACK CLIを導入したマシン上で、グループ初期化用の設定ファイルを作成します。
|
||||||
RACK CLIの導入方法については[**こちら**](https://github.com/stackforge/python-rackclient)をご覧ください。
|
RACK CLIの導入方法については[**こちら**](https://github.com/stackforge/python-rackclient)をご覧ください。
|
||||||
|
@ -87,11 +87,11 @@ Error: Installing the required packages
|
|||||||
|
|
||||||
### 2. Initialize the process group
|
### 2. Initialize the process group
|
||||||
|
|
||||||
This section explains how to set up an environment for this application. `rack-api` needs to be run before proceeding this step.
|
This section describes how to set up an environment for this application. `rack-api` needs to be run before proceeding this step.
|
||||||
For details of installation of RACK CLI, please refer to [**here**](https://github.com/stackforgehon-rackclient).
|
For details of installation of `rack-api`, please refer to [**here**](https://github.com/stackforge/rack/tree/master/tools/setup).
|
||||||
|
|
||||||
First, we will create a configuration file for process group initialization on RACK CLI installed machine.
|
First, we will create a configuration file for process group initialization on RACK CLI installed machine.
|
||||||
For details of installation of RACK CLI, please refer to [**here**](https://github.com/stackforgehon-rackclient).
|
For details of installation of RACK CLI, please refer to [**here**](https://github.com/stackforge/python-rackclient).
|
||||||
|
|
||||||
Please fill empty section with your environment parameters.
|
Please fill empty section with your environment parameters.
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ Error: Installing the required packages
|
|||||||
|
|
||||||
本アプリケーションを動作させるための環境を用意します。
|
本アプリケーションを動作させるための環境を用意します。
|
||||||
事前に`rack-api`が起動している必要があります。
|
事前に`rack-api`が起動している必要があります。
|
||||||
`rack-api`の準備については[**こちら**](https://github.com/stackforge/rack/tree/master/tools/setup/)をご覧ください。
|
`rack-api`の準備については[**こちら**](https://github.com/stackforge/rack/blob/master/tools/setup/README_ja.md)をご覧ください。
|
||||||
|
|
||||||
RACK CLIを導入したマシン上で、グループ初期化用の設定ファイルを作成します。
|
RACK CLIを導入したマシン上で、グループ初期化用の設定ファイルを作成します。
|
||||||
RACK CLIの導入方法については[**こちら**](https://github.com/stackforge/python-rackclient)をご覧ください。
|
RACK CLIの導入方法については[**こちら**](https://github.com/stackforge/python-rackclient)をご覧ください。
|
||||||
|
@ -99,14 +99,15 @@ Please note that OpenStack authentication info fed as meta-data will be written
|
|||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
# nova boot ¥
|
# nova boot \
|
||||||
--flavor { any flavor with more than 2GB RAM } ¥
|
--flavor { any flavor with more than 2GB RAM } \
|
||||||
--image { snapshot created at step #3.1 } ¥
|
--image { snapshot created at step #3.1 } \
|
||||||
--nic net-id={ virtual network created at step #3.2 } ¥
|
--nic net-id={ virtual network created at step #3.2 } \
|
||||||
--meta os_username={Keystone username} ¥
|
--meta os_username={Keystone username} \
|
||||||
--meta os_password={Keystone password} ¥
|
--meta os_password={Keystone password} \
|
||||||
--meta os_tenant_name={Keystone tenant name} ¥
|
--meta os_tenant_name={Keystone tenant name} \
|
||||||
--meta os_auth_url={Keystone API URL} ¥
|
--meta os_auth_url={Keystone API URL} \
|
||||||
|
--meta os_region_name={region name} \
|
||||||
rack-api
|
rack-api
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -119,7 +120,6 @@ $ rack group-list
|
|||||||
+-----+------+-------------+--------+
|
+-----+------+-------------+--------+
|
||||||
| gid | name | description | status |
|
| gid | name | description | status |
|
||||||
+-----+------+-------------+--------+
|
+-----+------+-------------+--------+
|
||||||
| | | | |
|
|
||||||
+-----+------+-------------+--------+
|
+-----+------+-------------+--------+
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -127,4 +127,4 @@ $ rack group-list
|
|||||||
|
|
||||||
## <a name="procedure2">Test RACK with devstack</a>
|
## <a name="procedure2">Test RACK with devstack</a>
|
||||||
|
|
||||||
**to be continued**
|
**to be continued**
|
||||||
|
@ -108,6 +108,7 @@ Nova CLIを利用し、以下のコマンドを実行してください。
|
|||||||
--meta os_password={Keystone認証用のパスワード} \
|
--meta os_password={Keystone認証用のパスワード} \
|
||||||
--meta os_tenant_name={Keystone認証用のテナント名} \
|
--meta os_tenant_name={Keystone認証用のテナント名} \
|
||||||
--meta os_auth_url={Keystone APIのURL} \
|
--meta os_auth_url={Keystone APIのURL} \
|
||||||
|
--meta os_region_name={リージョン名}
|
||||||
rack-api
|
rack-api
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -121,7 +122,6 @@ $ rack group-list
|
|||||||
+-----+------+-------------+--------+
|
+-----+------+-------------+--------+
|
||||||
| gid | name | description | status |
|
| gid | name | description | status |
|
||||||
+-----+------+-------------+--------+
|
+-----+------+-------------+--------+
|
||||||
| | | | |
|
|
||||||
+-----+------+-------------+--------+
|
+-----+------+-------------+--------+
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -129,4 +129,4 @@ $ rack group-list
|
|||||||
|
|
||||||
## <a name="procedure2">devstackを使ってRACKを試す</a>
|
## <a name="procedure2">devstackを使ってRACKを試す</a>
|
||||||
|
|
||||||
**準備中**
|
**準備中**
|
||||||
|
@ -11,6 +11,7 @@ OS_USERNAME=$(echo $META | jq -r '.os_username')
|
|||||||
OS_PASSWORD=$(echo $META | jq -r '.os_password')
|
OS_PASSWORD=$(echo $META | jq -r '.os_password')
|
||||||
OS_TENANT_NAME=$(echo $META | jq -r '.os_tenant_name')
|
OS_TENANT_NAME=$(echo $META | jq -r '.os_tenant_name')
|
||||||
OS_AUTH_URL=$(echo $META | jq -r '.os_auth_url')
|
OS_AUTH_URL=$(echo $META | jq -r '.os_auth_url')
|
||||||
|
OS_REGION_NAME=$(echo $META | jq -r '.os_region_name')
|
||||||
if [ "$OS_USERNAME" == "null" ] || [ "$OS_PASSWORD" == "null" ] ||\
|
if [ "$OS_USERNAME" == "null" ] || [ "$OS_PASSWORD" == "null" ] ||\
|
||||||
[ "$OS_TENANT_NAME" == "null" ] || [ "$OS_AUTH_URL" == "null" ]; then
|
[ "$OS_TENANT_NAME" == "null" ] || [ "$OS_AUTH_URL" == "null" ]; then
|
||||||
echo "Error: OpenStack credentials are required."
|
echo "Error: OpenStack credentials are required."
|
||||||
@ -21,6 +22,7 @@ os_username = $OS_USERNAME
|
|||||||
os_password = $OS_PASSWORD
|
os_password = $OS_PASSWORD
|
||||||
os_tenant_name = $OS_TENANT_NAME
|
os_tenant_name = $OS_TENANT_NAME
|
||||||
os_auth_url = $OS_AUTH_URL
|
os_auth_url = $OS_AUTH_URL
|
||||||
|
os_region_name = $OS_REGION_NAME
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user