OpenStack Users Advent Calendar 2014 12/5

8610 단어 openstack
OpenStack에 접하기 시작해 곧 1년, OpenStack적으로는 Havana 세대부터 대체로 신참자가 됩니다. 유일한 관심은 네트워크 노드의 고 가용성이지만, 뭔가를 말하기에는 아직도 문턱이 높기 때문에 오늘은 nova 명령의 --all-tenants 옵션에 대해 조금 언급하고 싶습니다. 전날 12/4의 habuka036씨에게 계속 커멘드 재료입니다만, 이쪽은 더 초급 재료입니다.

이제 OpenStack은 테넌트(프로젝트)마다 다른 독립적인 네트워크 인스턴스, 이미지, 볼륨 등의 리소스를 만들 수 있습니다. 또한 사용자에게 연결되지 않은 테넌트(프로젝트) 리소스는 보이지 않습니다. 그러나 사용자는 여러 테넌트에 속합니다. 그렇다면 어떻게 보일까? 라는 의문이 나네요. 그럼 Let's Stack!

admin에서?



관리자는 모든 프로젝트를 볼 수 있어야합니다. 그래서 먼저 admin으로 내고 싶습니다.

인스턴스 일람은 nova list가 아니라는 것으로 명령 발행. 패스워드와 인증 URL은 환경 변수로 해, 어느 유저가 커멘드 발행하고 있는지 알 수 있도록(듯이) 유저명과 테넌트명은 인수로 하고 있습니다.
$ nova --os-username admin --os-tenant-name admin list
+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+

아무것도 없다. admin 프로젝트에는 인스턴스가 없지만 다른 프로젝트에 인스턴스가 있어야합니다! ?

사실, nova 명령의 경우 --all-tenants 인수를 사용하면 admin에서 모든 인스턴스를 볼 수 있습니다.
$ nova --os-username admin --os-tenant-name admin list --all-tenants
+--------------------------------------+-------+--------+------------+-------------+--------------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                                   |
+--------------------------------------+-------+--------+------------+-------------+--------------------------------------------+
| a488a7b8-24b0-41a0-86aa-74f2efdf8305 | test  | ERROR  | -          | NOSTATE     | private=10.0.0.3                           |
| 9e5703a5-a16c-4666-9d67-0ef75eb6b89d | test1 | ACTIVE | -          | Running     | TEST1-LOCALNET=10.100.0.150, 172.24.4.238  |
+--------------------------------------+-------+--------+------------+-------------+--------------------------------------------+
*ERRORなインスタンスがありますが気にしない

보였습니다. 아. 좋았다.

일반 사용자는?



일반 사용자는 어떨까요? 다음과 같이 demo 사용자가 demo, TEST1이라는 테넌트에 속하는 경우를 살펴 보겠습니다.

먼저 각 테넌트의 인스턴스 목록을 보여 드리겠습니다. 소개 TEST1 테넌트
$ nova --os-username demo --os-tenant-name TEST1 list
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                                  |
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+
| 9e5703a5-a16c-4666-9d67-0ef75eb6b89d | test1 | ACTIVE | -          | Running     | TEST1-LOCALNET=10.100.0.150, 172.24.4.238 |
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+

이어서 데모 테넌트
$ nova --os-username demo --os-tenant-name demo list
+--------------------------------------+------+--------+------------+-------------+------------------+
| ID                                   | Name | Status | Task State | Power State | Networks         |
+--------------------------------------+------+--------+------------+-------------+------------------+
| a488a7b8-24b0-41a0-86aa-74f2efdf8305 | test | ERROR  | -          | NOSTATE     | private=10.0.0.3 |
+--------------------------------------+------+--------+------------+-------------+------------------+

각각의 인스턴스가 나오네요. 당연합니다.

두 인스턴스를 일괄로 내고 싶었을 때 --all-tenants 할 수 있을까 생각합니다만 이것은 안 되고 --os-tenant-name으로 지정한 것만이 나옵니다.
$ nova --os-username demo --os-tenant-name demo list --all-tenants
+--------------------------------------+------+--------+------------+-------------+------------------+
| ID                                   | Name | Status | Task State | Power State | Networks         |
+--------------------------------------+------+--------+------------+-------------+------------------+
| a488a7b8-24b0-41a0-86aa-74f2efdf8305 | test | ERROR  | -          | NOSTATE     | private=10.0.0.3 |
+--------------------------------------+------+--------+------------+-------------+------------------+
$ nova --os-username demo --os-tenant-name TEST1 list --all-tenants
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                                  |
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+
| 9e5703a5-a16c-4666-9d67-0ef75eb6b89d | test1 | ACTIVE | -          | Running     | TEST1-LOCALNET=10.100.0.150, 172.24.4.238 |
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+

왜-.

실은・・・



--all-tenants는 admin 역할 전용 옵션이었습니다. 커맨드 레퍼런스에도 Admin Only라고 쓰고 있는 건가.

--all-tenants [0|1]
Display information from all tenants (Admin only).
htp // // cs. 오 s ck. rg/cぃ-레후페렌세/콘텐 t/의 ゔぃcぃ엔t_코만 ds. HTML

즉, 테넌트에 대한 사용자의 역할에 admin이 부여되어 있으면 --all-tenants를 사용할 수 있게 됩니다. 다음과 같이 demo 유저가 다음과 같이 demo 프로젝트에 속해 게다가 admin 역할이 부여되고 있는 경우 인스턴스가 전부 나옵니다.
$ keystone user-role-list --user demo  --tenant demo
+----------------------------------+----------+----------------------------------+----------------------------------+
|                id                |   name   |             user_id              |            tenant_id             |
+----------------------------------+----------+----------------------------------+----------------------------------+
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ | f5cbc36f60d444c7be205c5f0123e3e1 | 4a691247c8e74e2f9018af3ffaa18704 |
| 429ab12a59814167ba40be6662dbe24a |  admin   | f5cbc36f60d444c7be205c5f0123e3e1 | 4a691247c8e74e2f9018af3ffaa18704 |
+----------------------------------+----------+----------------------------------+----------------------------------+

호라네↓
$ nova --os-username demo --os-tenant-name demo list --all-tenants
+--------------------------------------+-------+--------+------------+-------------+--------------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                                   |
+--------------------------------------+-------+--------+------------+-------------+--------------------------------------------+
| 1ae3b891-b218-4926-acb0-8a6acb2cbd42 |X | ACTIVE | -          | Running     | XXXX01-LOCALNET=10.100.0.150, 172.24.4.230 |
| a488a7b8-24b0-41a0-86aa-74f2efdf8305 | test  | ERROR  | -          | NOSTATE     | private=10.0.0.3                           |
| 9e5703a5-a16c-4666-9d67-0ef75eb6b89d | test1 | ACTIVE | -          | Running     | TEST1-LOCALNET=10.100.0.150, 172.24.4.238  |
+--------------------------------------+-------+--------+------------+-------------+--------------------------------------------+

그러나, TEST1 테넌트를 지정하면 TEST1 테넌트에서는 demo 유저는 admin 롤이 없기 때문에 TEST1 의 인스턴스 밖에 낼 수 없습니다. 이것은 조금 이상한 생각이 듭니다만, 이런 것 같습니다.
$ nova --os-username demo --os-tenant-name TEST1 list --all-tenants
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                                  |
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+
| 9e5703a5-a16c-4666-9d67-0ef75eb6b89d | test1 | ACTIVE | -          | Running     | TEST1-LOCALNET=10.100.0.150, 172.24.4.238 |
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------------+

그래서 --all-tenants 옵션에 대해 써 보았습니다. 내일 12/6은 효도 차코씨입니다. 잘 부탁드립니다.

좋은 웹페이지 즐겨찾기