Ambiente » History » Version 37

Beraldo Leal, 07 Jun 2012 12:37

1 1 Beraldo Leal
h1. Ambiente de Desenvolvimento
2 1 Beraldo Leal
3 1 Beraldo Leal
h2. Lista de Servidores
4 1 Beraldo Leal
5 14 Beraldo Leal
* educloud00 - 200.145.46.166
6 14 Beraldo Leal
* educloud01 - 200.145.46.167
7 14 Beraldo Leal
* educloud02 - 200.145.46.168
8 14 Beraldo Leal
* educloud03 - 200.145.46.169
9 14 Beraldo Leal
* educloud04 - 200.145.46.170
10 14 Beraldo Leal
* educloud05 - 200.145.46.174
11 1 Beraldo Leal
* educloud06 - 200.145.46.175
12 1 Beraldo Leal
* educloud07 - 200.145.46.173
13 15 Beraldo Leal
14 16 Beraldo Leal
h3. Desabilitados
15 16 Beraldo Leal
16 15 Beraldo Leal
* educloud05 - 200.145.46.171
17 15 Beraldo Leal
* educloud06 - 200.145.46.172
18 3 Beraldo Leal
19 37 Beraldo Leal
h1. Installing OpenStack Identity Service - Keystone
20 30 Beraldo Leal
21 3 Beraldo Leal
22 4 Beraldo Leal
O Keystone é um projeto que provê serviços de "Identidade", "Token", "Catalog" and "Policy" para os componentes do OpenStack. O pacote *_keystone_* foi instalado no servidor _educloud02_.
23 4 Beraldo Leal
24 4 Beraldo Leal
Este software é feito em python, e por sua vez instala a dependencia *_keystone-python_*, uma biblioteca em python para uso do próprio keystone.
25 4 Beraldo Leal
26 4 Beraldo Leal
Os arquivos de configuração do keystone ficam em /etc/keystone e hoje ele está utilizando como um backend para armazenar os usuários uma base sqlite3, mas ele também permite que seja utilizado uma base LDAP.
27 4 Beraldo Leal
28 1 Beraldo Leal
Além do daemon (servidor) foi instalado o cliente (também feito em python) *_python-keystoneclient_*.
29 5 Beraldo Leal
30 37 Beraldo Leal
h2. Instalando e configurando o keystone
31 5 Beraldo Leal
32 1 Beraldo Leal
<pre>
33 18 Beraldo Leal
# apt-get install keystone
34 18 Beraldo Leal
</pre>
35 18 Beraldo Leal
36 18 Beraldo Leal
Delete the keystone.db file created in the /var/lib/keystone directory.
37 18 Beraldo Leal
38 18 Beraldo Leal
<pre>
39 18 Beraldo Leal
# rm /var/lib/keystone/keystone.db
40 18 Beraldo Leal
</pre>
41 18 Beraldo Leal
42 18 Beraldo Leal
Install mysql:
43 18 Beraldo Leal
44 18 Beraldo Leal
<pre>
45 18 Beraldo Leal
# apt-get install python-mysqldb mysql-server
46 11 Beraldo Leal
</pre>
47 19 Beraldo Leal
48 19 Beraldo Leal
Use sed to edit /etc/mysql/my.cnf to change bind-address from localhost
49 19 Beraldo Leal
(127.0.0.1) to any (0.0.0.0) and restart the mysql service, as root:
50 19 Beraldo Leal
51 19 Beraldo Leal
<pre>
52 19 Beraldo Leal
# sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
53 19 Beraldo Leal
# service mysql restart
54 19 Beraldo Leal
</pre>
55 19 Beraldo Leal
56 19 Beraldo Leal
To configure the MySQL database, create the keystone database.
57 19 Beraldo Leal
58 19 Beraldo Leal
<pre>
59 19 Beraldo Leal
# mysql -u root -p
60 19 Beraldo Leal
mysql> CREATE DATABASE keystone;
61 19 Beraldo Leal
mysql> GRANT ALL ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystonepass';
62 19 Beraldo Leal
mysql> FLUSH PRIVILEGES;
63 19 Beraldo Leal
mysql> quit;
64 19 Beraldo Leal
</pre>
65 20 Beraldo Leal
66 20 Beraldo Leal
Edit _*keystone.conf*_ to use mysql:
67 20 Beraldo Leal
68 20 Beraldo Leal
<pre>
69 20 Beraldo Leal
[sql]
70 20 Beraldo Leal
connection = mysql://keystone:keystonepass@192.168.69.1/keystone
71 21 Beraldo Leal
</pre>
72 21 Beraldo Leal
73 21 Beraldo Leal
Change in _*keystone.conf*_ the ADMIN_TOKEN:
74 21 Beraldo Leal
75 20 Beraldo Leal
<pre>
76 21 Beraldo Leal
admin_token = 012345SECRET99TOKEN012345
77 21 Beraldo Leal
</pre>
78 22 Beraldo Leal
79 22 Beraldo Leal
Restarte o keystone e inicialize o banco:
80 22 Beraldo Leal
81 22 Beraldo Leal
<pre>
82 22 Beraldo Leal
# service keystone restart
83 1 Beraldo Leal
# keystone-manage db_sync
84 22 Beraldo Leal
</pre>
85 23 Beraldo Leal
86 37 Beraldo Leal
h2. Configuring Services to work with Keystone
87 23 Beraldo Leal
88 23 Beraldo Leal
Crie o arquivo _*/root/openstackrc*_, com o seguinte conteudo:
89 23 Beraldo Leal
90 23 Beraldo Leal
<pre>
91 23 Beraldo Leal
export SERVICE_ENDPOINT=http://192.168.69.1:35357/v2.0/
92 23 Beraldo Leal
export SERVICE_TOKEN=012345SECRET99TOKEN012345
93 23 Beraldo Leal
</pre>
94 23 Beraldo Leal
95 23 Beraldo Leal
Estas variaveis de ambiente sao uteis para evitar ficar passando as opcoes --token e --endpoint para os utilitarios de linha de comando. 
96 23 Beraldo Leal
97 23 Beraldo Leal
Carrege o arquivo:
98 23 Beraldo Leal
99 23 Beraldo Leal
<pre>
100 23 Beraldo Leal
# source /root/openstackrc
101 23 Beraldo Leal
</pre>
102 24 Beraldo Leal
103 26 Beraldo Leal
Crie os *tenants* _openstackDemo_ e _service_:
104 24 Beraldo Leal
105 24 Beraldo Leal
<pre>
106 24 Beraldo Leal
# keystone tenant-create --name openstackDemo --description "Default Tenant"  --enabled true
107 24 Beraldo Leal
# keystone tenant-create --name service --description "Service Tenant"  --enabled true
108 24 Beraldo Leal
</pre>
109 25 Beraldo Leal
110 27 Beraldo Leal
Crie o *user* _admin_, substitua o tenant_id pelo tentant_id do openstackDemo, criado no item anterior:
111 25 Beraldo Leal
112 1 Beraldo Leal
<pre>
113 1 Beraldo Leal
# keystone user-create --tenant_id 9c401c9d2b9d41bcabda6919d4aec63a --name admin --pass adminpass --enabled true
114 26 Beraldo Leal
</pre>
115 26 Beraldo Leal
116 26 Beraldo Leal
Crie os *roles* _admin_ e _user_:
117 26 Beraldo Leal
118 26 Beraldo Leal
<pre>
119 26 Beraldo Leal
# keystone role-create --name admin
120 1 Beraldo Leal
# keystone role-create --name user
121 27 Beraldo Leal
</pre>
122 27 Beraldo Leal
123 27 Beraldo Leal
Adicione o *user* _admin_ ao *role* _admin_, fazendo as devidas substituicoes:
124 27 Beraldo Leal
125 27 Beraldo Leal
<pre>
126 29 Beraldo Leal
# keystone user-role-add --user [admin_user_id] --tenant_id [openstackDemo_tenant_id] --role [admin_role]
127 29 Beraldo Leal
</pre>
128 29 Beraldo Leal
129 29 Beraldo Leal
Crie um usuario para cada servico, e substitua o tenant_id pelo id do tenant *service*:
130 29 Beraldo Leal
131 29 Beraldo Leal
<pre>
132 29 Beraldo Leal
# keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name glance --pass glancepass --enabled true
133 29 Beraldo Leal
# keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name nova --pass novapass --enabled true
134 29 Beraldo Leal
# keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name swift --pass swiftpass --enabled true
135 29 Beraldo Leal
</pre>
136 29 Beraldo Leal
137 29 Beraldo Leal
Adicione os users acima ao *role* _admin_, fazendo as devidas substituicoes:
138 29 Beraldo Leal
139 29 Beraldo Leal
<pre>
140 29 Beraldo Leal
# keystone user-role-add --user [glance_user_id] --tenant_id [service_tenant_id] --role [admin_role]
141 1 Beraldo Leal
# keystone user-role-add --user [nova_user_id] --tenant_id [service_tenant_id] --role [admin_role]
142 29 Beraldo Leal
# keystone user-role-add --user [swift_user_id] --tenant_id [service_tenant_id] --role [admin_role]
143 25 Beraldo Leal
</pre>
144 31 Beraldo Leal
145 37 Beraldo Leal
h2. Definindo os servicos:
146 31 Beraldo Leal
147 31 Beraldo Leal
Ate agora, apenas criamos: tenants, users e roles. O Keystone tambem gerencia os servicos e seus endpoins. Desta forma os componentes do openstack consulta o keystone onde determinado servico encontra-se.
148 31 Beraldo Leal
149 31 Beraldo Leal
Crie os servicos:
150 31 Beraldo Leal
151 31 Beraldo Leal
<pre>
152 31 Beraldo Leal
# keystone service-create --name keystone --type identity --description "Keystone Identity Service" 
153 31 Beraldo Leal
# keystone service-create --name nova --type compute --description "Nova Compute Service"
154 31 Beraldo Leal
# keystone service-create --name volume --type volume --description "Nova Volume Service"
155 31 Beraldo Leal
# keystone service-create --name glance --type image --description "Glance Image Service"
156 31 Beraldo Leal
# keystone service-create --name swift --type object-storage --description "Object Storage Service"
157 31 Beraldo Leal
</pre>
158 32 Beraldo Leal
159 32 Beraldo Leal
Crie os endpoints para os respectivos servicos:
160 32 Beraldo Leal
161 32 Beraldo Leal
<pre>
162 33 Beraldo Leal
# keystone endpoint-create --region RegionOne --service_id [keystone_service_id] --publicurl http://192.168.69.1:5000/v2.0 --internalurl http://192.168.69.1:5000/v2.0 --adminurl http://192.168.69.1:35357/v2.0
163 33 Beraldo Leal
# keystone endpoint-create --region RegionOne --service_id [compute_service_id] --publicurl 'http://192.168.69.1:8774/v2/%(tenant_id)s' --internalurl 'http://192.168.69.1:8774/v2/%(tenant_id)s' --adminurl 'http://192.168.69.1:8774/v2/%(tenant_id)s'
164 1 Beraldo Leal
# keystone endpoint-create --region RegionOne --service_id [volume_service_id] --publicurl 'http://192.168.69.1:8776/v1/%(tenant_id)s' --internalurl 'http://192.168.69.1:8776/v1/%(tenant_id)s' --adminurl 'http://192.168.69.1:8776/v1/%(tenant_id)s'
165 33 Beraldo Leal
# keystone endpoint-create --region RegionOne --service_id [glance_service_id] --publicurl http://192.168.69.1:9292/v1 --internalurl http://192.168.69.1:9292/v1 --adminurl http://192.168.69.1:9292/v1
166 33 Beraldo Leal
# keystone endpoint-create --region RegionOne --service_id [swift_service_id] --publicurl 'http://192.168.69.1:8888/v1/AUTH_%(tenant_id)s' --adminurl 'http://192.168.69.1:8888/' --internalurl 'http://192.168.69.1:8888/v1/AUTH_%(tenant_id)s'
167 32 Beraldo Leal
</pre>
168 34 Beraldo Leal
169 37 Beraldo Leal
h2. Verificando a instalacao:
170 34 Beraldo Leal
171 34 Beraldo Leal
<pre>
172 34 Beraldo Leal
# sudo apt-get install curl openssl
173 34 Beraldo Leal
</pre>
174 34 Beraldo Leal
175 34 Beraldo Leal
Faca uma requisicao REST para a API do keystone usando o curl:
176 34 Beraldo Leal
177 34 Beraldo Leal
<pre>
178 34 Beraldo Leal
# curl -d '{"auth": {"tenantName": "openstackDemo", "passwordCredentials": {"username": "admin", "password": "adminpass"}}}' -H "Content-type: application/json" http://192.168.69.1:35357/v2.0/tokens  | python -mjson.tool
179 34 Beraldo Leal
</pre>
180 34 Beraldo Leal
181 35 Beraldo Leal
O retorno deve conter todos os servicos, endpoins e um token que expira em 24 horas:
182 34 Beraldo Leal
183 34 Beraldo Leal
<pre>
184 34 Beraldo Leal
{
185 34 Beraldo Leal
    "access": {
186 34 Beraldo Leal
        "serviceCatalog": [
187 34 Beraldo Leal
            {
188 34 Beraldo Leal
                "endpoints": [
189 34 Beraldo Leal
                    {
190 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", 
191 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", 
192 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", 
193 34 Beraldo Leal
                        "region": "RegionOne"
194 34 Beraldo Leal
                    }
195 34 Beraldo Leal
                ], 
196 34 Beraldo Leal
                "endpoints_links": [], 
197 34 Beraldo Leal
                "name": "volume", 
198 34 Beraldo Leal
                "type": "volume"
199 34 Beraldo Leal
            }, 
200 34 Beraldo Leal
            {
201 34 Beraldo Leal
                "endpoints": [
202 34 Beraldo Leal
                    {
203 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:9292/v1", 
204 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:9292/v1", 
205 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:9292/v1", 
206 34 Beraldo Leal
                        "region": "RegionOne"
207 34 Beraldo Leal
                    }
208 34 Beraldo Leal
                ], 
209 34 Beraldo Leal
                "endpoints_links": [], 
210 34 Beraldo Leal
                "name": "glance", 
211 34 Beraldo Leal
                "type": "image"
212 34 Beraldo Leal
            }, 
213 34 Beraldo Leal
            {
214 34 Beraldo Leal
                "endpoints": [
215 34 Beraldo Leal
                    {
216 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", 
217 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", 
218 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", 
219 34 Beraldo Leal
                        "region": "RegionOne"
220 34 Beraldo Leal
                    }
221 34 Beraldo Leal
                ], 
222 34 Beraldo Leal
                "endpoints_links": [], 
223 34 Beraldo Leal
                "name": "nova", 
224 34 Beraldo Leal
                "type": "compute"
225 34 Beraldo Leal
            }, 
226 34 Beraldo Leal
            {
227 34 Beraldo Leal
                "endpoints": [
228 34 Beraldo Leal
                    {
229 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:35357/v2.0", 
230 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:5000/v2.0", 
231 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:5000/v2.0", 
232 34 Beraldo Leal
                        "region": "RegionOne"
233 34 Beraldo Leal
                    }
234 34 Beraldo Leal
                ], 
235 34 Beraldo Leal
                "endpoints_links": [], 
236 34 Beraldo Leal
                "name": "keystone", 
237 34 Beraldo Leal
                "type": "identity"
238 34 Beraldo Leal
            }, 
239 34 Beraldo Leal
            {
240 34 Beraldo Leal
                "endpoints": [
241 34 Beraldo Leal
                    {
242 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:8888/", 
243 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:8888/v1/AUTH_9c401c9d2b9d41bcabda6919d4aec63a", 
244 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:8888/v1/AUTH_9c401c9d2b9d41bcabda6919d4aec63a", 
245 34 Beraldo Leal
                        "region": "RegionOne"
246 34 Beraldo Leal
                    }
247 34 Beraldo Leal
                ], 
248 34 Beraldo Leal
                "endpoints_links": [], 
249 34 Beraldo Leal
                "name": "swift", 
250 34 Beraldo Leal
                "type": "object-storage"
251 34 Beraldo Leal
            }
252 34 Beraldo Leal
        ], 
253 34 Beraldo Leal
        "token": {
254 34 Beraldo Leal
            "expires": "2012-06-08T15:31:46Z", 
255 34 Beraldo Leal
            "id": "05b818ff23564d5599c97ea5e1df7bbe", 
256 34 Beraldo Leal
            "tenant": {
257 34 Beraldo Leal
                "description": "Default Tenant", 
258 34 Beraldo Leal
                "enabled": true, 
259 34 Beraldo Leal
                "id": "9c401c9d2b9d41bcabda6919d4aec63a", 
260 34 Beraldo Leal
                "name": "openstackDemo"
261 34 Beraldo Leal
            }
262 34 Beraldo Leal
        }, 
263 34 Beraldo Leal
        "user": {
264 34 Beraldo Leal
            "id": "1fcfbe778fc3428aa30db782056b34d7", 
265 34 Beraldo Leal
            "name": "admin", 
266 34 Beraldo Leal
            "roles": [
267 34 Beraldo Leal
                {
268 34 Beraldo Leal
                    "id": "a2d6da77c0a54105aab94484e0d2088b", 
269 34 Beraldo Leal
                    "name": "admin"
270 34 Beraldo Leal
                }
271 34 Beraldo Leal
            ], 
272 34 Beraldo Leal
            "roles_links": [], 
273 34 Beraldo Leal
            "username": "admin"
274 34 Beraldo Leal
        }
275 34 Beraldo Leal
    }
276 34 Beraldo Leal
}
277 34 Beraldo Leal
278 34 Beraldo Leal
</pre>
279 36 Beraldo Leal
280 36 Beraldo Leal
Voce pode tambem listar usuarios, roles, tenants e services:
281 36 Beraldo Leal
282 36 Beraldo Leal
<pre>
283 36 Beraldo Leal
# keystone user-list
284 36 Beraldo Leal
# keystone role-list
285 36 Beraldo Leal
# keystone tenant-list
286 36 Beraldo Leal
# keystone service-list
287 36 Beraldo Leal
</pre>