티스토리 뷰
오늘은 오픈스택을 테스트하면서 불편했던 것을 간단한 쉘 스크립트 하나로 좀 더 편해보고자하는자 하는 제 경험을 한번 올려봅니다.
오픈스택을 테스트하다보면 사용자를 커맨드 창에서 생성해야 할 일이 생깁니다. 그때마다 테넌트를 만들고, 사용자 계정을 다시 생성하고, 계정을 생성한 후 롤을 추가해야 합니다. 처음에는 공부하는 셈치고 한번 해 봅니다. 매번 이과정을 거쳐 사용자를 생성하려니 너무 너무 귀찮습니다. 또한 Swift를 사용한다면 해당 계정으로 로그인했을 경우 해당 사용자가 오브젝트 파일을 읽고 쓸 수 있도록 ACL 권한 또한 주어야 합니다.
그래서, 생각끝에 아이디와 패스워드만 넣으면 테넌트, 계정, 롤 추가, Swift 컨테이너 생성, 컨테이너에 ACL 추가까지 한번 처리할 수 있는 쉘 스크립트를 짜보자~!! 라는 생각이 들었습니다. 아래 보이는 스크립트가 바로 해당 쉘 스크립트의 내용입니다. 노란 색으로 되어 있는 값들만 변경해 주시면 누구나 가져가서 테스트 해 보실 수 있습니다.
#!/bin/bash ###################################################### # Created by 2014-04-10 OpenStack Korea Community NaleeJang # ###################################################### # 로그인할 어드민 계정 정보를 환경변수로 등록한다. export OS_USERNAME=admin export OS_PASSWORD=admin export OS_TENANT_NAME=admin export OS_AUTH_URL=http://{your keystone ip}:5000/v2.0 # 생성할 ID와 PW 입력을 받는다. echo "input username : " read USERNAME echo "input password : " read PASSWORD # ROLE ID를 조회한다. MEMBER_ROLE=$(keystone role-list | awk "/ Member / { print \$2 }") echo "" echo "UserName : " $USERNAME echo "Password : " $PASSWORD echo "Role Id : " $MEMBER_ROLE # 테넌트를 생성한 후 테넌트 ID는 따로 저정해 둔다. echo "" echo "TENANT CREATE" TENANT_ID=$(keystone tenant-create --name $USERNAME | awk "/ id / { print \$4 }") echo "TENANT_ID : " $TENANT_ID # 사용자를 생성한다. echo "USER CREATE" keystone user-create --name $USERNAME \ --tenant $TENANT_ID \ --pass $PASSWORD \ --email $USERNAME@email.com \ --enabled true # 사용자 계정에 롤을 추가한다. echo "USER ROLE ADD" keystone user-role-add --user $USERNAME \ --role $MEMBER_ROLE \ --tenant $TENANT_ID # 사용자 계정에 컨테이너와 권한을 추가한다. echo "Add ACL to Account" AUTH_TOKEN=ac288beb7bc4496d8d173f9f04b8e0fe #keystone token-get으로 얻은 token을 입력한다. # 사용자 계정과 같은 이름의 컨테이너를 데이터를 읽을 수 있도록 권한을 추가하여 생성한다. swift --os-auth-token $AUTH_TOKEN --os-storage-url http://{your swift ip}:8081/v1/AUTH_$TENANT_ID post $USERNAME -r "$USERNAME:$USERNAME" # 해당 사용자가 컨테이너에 데이터를 쓸 수 있도록 권한을 추가한다. swift --os-auth-token $AUTH_TOKEN --os-storage-url http://{your swift ip}:8081/v1/AUTH_$TENANT_ID post $USERNAME -w "$USERNAME:$USERNAME" # 생성된 컨테이너에 권한 설정이 잘 되었는지 확인한다. swift --os-auth-token $AUTH_TOKEN --os-storage-url http://{your swift ip}:8081/v1/AUTH_$TENANT_ID stat $USERNAME |
자 그럼, 방금 만든 쉘 스크립트를 한번 실행해 볼까요? 실행하면 아래와 같이 사용자가 생성되는 것을 확인 하실수 있습니다. 아래 노란 색으로 칠해져 있는 글씨는 제가 직접 입력해 준 값이예요~
swift@proxynode:~$ sh create-user.sh input username : user01 input password : user01 UserName : user01 Password : user01 Role Id : c51e7802219a49608871a84e62b3bfb0 TENANT CREATE TENANT_ID : b837c8e9edcd43e8a244745b78106182 USER CREATE +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | user01@email.com | | enabled | True | | id | 2a5731944e1c4e039e6ab014f7d1b0c3 | | name | user01 | | tenantId | b837c8e9edcd43e8a244745b78106182 | +----------+----------------------------------+ USER ROLE ADD Add ACL to Account Account: AUTH_b837c8e9edcd43e8a244745b78106182 Container: user01 Objects: 0 Bytes: 0 Read ACL: user01:user01 Write ACL: user01:user01 Sync To: Sync Key: Accept-Ranges: bytes X-Timestamp: 1397008546.32200 Content-Type: text/plain; charset=utf-8 |
위에 제가 생성한 컨테이너와 해당 컨테이너에 ACL 권한을 추가해 준거 보이시나요?
이제 이 스크립트 하나만 있으면 계정을 추가하기 위해서 긴 명령어들을 일일이 입력하지 않아도 됩니다. 제일 하단의 사용자 컨테이너 추가하는 부분만 제거하면 오픈스택 키스톤에서 사용자를 추가할 때 써도 무방하겠네요~!!
'OpenStack' 카테고리의 다른 글
OpenStack이 떠오르는 이유!! OpenStack은 인기스타!! (2) | 2014.11.13 |
---|---|
4주년 OpenStack Birthday Beer Party를 합니다. (0) | 2014.06.25 |
"오픈테크넷 서밋 2014" 발표자료 (1) | 2014.03.14 |
"오픈테크넷 서밋 2014" 에서 강연을 합니다. (0) | 2014.03.06 |
"제1회 OpenStack Day in Korea" 행사를 마치고 (0) | 2014.02.20 |
- Total
- Today
- Yesterday
- ubuntu
- 네트워크
- cpu
- command
- 설치
- openstack
- neutron
- 클라우드
- 후기
- 레드햇
- 오픈스택
- 컨테이너
- 명령어
- 세미나
- 쿠버네티스
- Python
- 뉴트론
- Network
- 김미경
- Java
- 하둡
- Swift
- 우분투
- install
- 오픈쉬프트
- NOVA
- sdn
- Redhat
- 파이썬
- OVN
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |