Ambiente » History » Version 58

Beraldo Leal, 20 Jul 2012 09:53

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 53 Beraldo Leal
h1. Introduction
20 55 Beraldo Leal
This document refers to the installation manual of the main components of
21 55 Beraldo Leal
OpenStack. The version of each component used can be found in the respective
22 55 Beraldo Leal
sections of the components.
23 1 Beraldo Leal
24 55 Beraldo Leal
This document was produced by the Center for Scientific Computing, UNESP, with
25 55 Beraldo Leal
funding from Intel and UNESP.
26 1 Beraldo Leal
27 1 Beraldo Leal
OpenStack OpenStack is a global collaboration of developers and cloud computing
28 58 Beraldo Leal
technologists producing the ubiquitous open source cloud computing platform for 
29 55 Beraldo Leal
public and private clouds. The project aims to deliver solutions for all types
30 55 Beraldo Leal
of clouds by being simple to implement, massively scalable, and feature rich.
31 55 Beraldo Leal
The technology consists of a series of interrelated projects delivering various
32 55 Beraldo Leal
components for a cloud infrastructure solution.
33 1 Beraldo Leal
34 1 Beraldo Leal
The OpenStack project is divided into sub projects that have a specific role in
35 55 Beraldo Leal
the big picture.
36 1 Beraldo Leal
37 58 Beraldo Leal
The main components are: Cloud Compute (Nova) Cloud Storage (Swift), Image 
38 55 Beraldo Leal
registration and delivery (Glance), Identity (Keystone) and Dashboard
39 55 Beraldo Leal
(Horizon).
40 1 Beraldo Leal
41 1 Beraldo Leal
Each component is independent of each other and can be installed on separate
42 1 Beraldo Leal
machines, or all in one. In the environment of UNESP, OpenStack was installed in
43 55 Beraldo Leal
seven machines, described in section "Environment used."
44 56 Beraldo Leal
45 58 Beraldo Leal
This document is modified version of OpenStack Install and Deploy Manual [1] 
46 58 Beraldo Leal
with minor adjustments and changes to resolve problems encountered during 
47 58 Beraldo Leal
installation and adjustment to the environment in which it was installed.
48 55 Beraldo Leal
49 58 Beraldo Leal
50 55 Beraldo Leal
h1. OpenStack Core Components
51 55 Beraldo Leal
52 55 Beraldo Leal
OpenStack is a collection of open source technology that provides massively
53 55 Beraldo Leal
scalable open source cloud computing software. Currently OpenStack develops two
54 55 Beraldo Leal
related projects: OpenStack Compute, which offers computing power through
55 55 Beraldo Leal
virtual machine and network management, and OpenStack Object Storage which is
56 55 Beraldo Leal
software for redundant, scalable object storage capacity. Closely related to the
57 55 Beraldo Leal
OpenStack Compute project is the Image Service project, named Glance. OpenStack
58 55 Beraldo Leal
can be used by corporations, service providers, VARS, SMBs, researchers, and
59 55 Beraldo Leal
global data centers looking to deploy large-scale cloud deployments for private
60 55 Beraldo Leal
or public clouds.
61 55 Beraldo Leal
62 55 Beraldo Leal
The main components are: Cloud Compute (Nova) Cloud Storage (Swift), Image
63 1 Beraldo Leal
registration and delivery (Glance), Identity (Keystone) and Dashboard
64 1 Beraldo Leal
(Horizon).
65 1 Beraldo Leal
66 1 Beraldo Leal
They are presented here in an order for educational purposes only to a 
67 1 Beraldo Leal
straightforward procedure for installation. But following a brief description of
68 1 Beraldo Leal
each component.
69 1 Beraldo Leal
70 58 Beraldo Leal
h2. Keystone
71 58 Beraldo Leal
72 58 Beraldo Leal
Keystone is an OpenStack project that provides Identity, Token, Catalog and 
73 58 Beraldo Leal
Policy services for use specifically by projects in the OpenStack family. It
74 58 Beraldo Leal
implements OpenStack’s Identity API.
75 58 Beraldo Leal
76 58 Beraldo Leal
77 55 Beraldo Leal
h2. Cloud Compute (Nova)
78 55 Beraldo Leal
79 55 Beraldo Leal
Nova is the project name for OpenStack Compute, a cloud computing fabric
80 55 Beraldo Leal
controller, the main part of an IaaS system. Individuals and organizations can
81 55 Beraldo Leal
use Nova to host and manage their own cloud computing systems. Nova originated
82 55 Beraldo Leal
as a project out of NASA Ames Research Laboratory.
83 55 Beraldo Leal
84 55 Beraldo Leal
h2. Object Storage (Swift)
85 55 Beraldo Leal
86 55 Beraldo Leal
OpenStack Object Storage (Swift) is a system to store objects in a massively
87 55 Beraldo Leal
scalable large capacity system with built-in redundancy and failover. Object
88 55 Beraldo Leal
Storage has a variety of applications, such as backing up or archiving data,
89 55 Beraldo Leal
serving graphics or videos (streaming data to a user's browser), storing
90 55 Beraldo Leal
secondary or tertiary static data, developing new applications with data
91 55 Beraldo Leal
storage integration, storing data when predicting storage capacity is difficult,
92 55 Beraldo Leal
and creating the elasticity and flexibility of cloud-based storage for your web
93 55 Beraldo Leal
applications.
94 1 Beraldo Leal
95 1 Beraldo Leal
h2. Image Service (Glance)
96 1 Beraldo Leal
97 1 Beraldo Leal
OpenStack Image Service (Glance) is a lookup and retrieval system for virtual
98 1 Beraldo Leal
machine images. It can be configured in three ways: using OpenStack Object Store
99 1 Beraldo Leal
to store images; using Amazon's Simple Storage Solution (S3) storage directly;
100 1 Beraldo Leal
or using S3 storage with Object Store as the intermediate for S3 access.
101 58 Beraldo Leal
102 58 Beraldo Leal
103 58 Beraldo Leal
h1. Environment Proposed
104 58 Beraldo Leal
105 58 Beraldo Leal
This document aims to guide you in setting up a test environment or development.
106 58 Beraldo Leal
The original documentation suggests many machines. To install OpenStack here,
107 58 Beraldo Leal
you will need only one or two machines.
108 58 Beraldo Leal
109 58 Beraldo Leal
You can install all services on one machine only (all-in-one). Or you can
110 58 Beraldo Leal
install OpenStack controller (all services except the nova-compute) on machine A
111 58 Beraldo Leal
and a compute cloud controller on machine B.
112 58 Beraldo Leal
113 58 Beraldo Leal
For a production environment it is advisable to separate the elements to ensure
114 58 Beraldo Leal
a high availability and redundancy.
115 58 Beraldo Leal
116 58 Beraldo Leal
Settings used in this document:
117 58 Beraldo Leal
118 58 Beraldo Leal
 - Cloud Controller:
119 58 Beraldo Leal
120 58 Beraldo Leal
121 58 Beraldo Leal
 - Cloud Computer Node:
122 58 Beraldo Leal
123 58 Beraldo Leal
All machines are installed with Ubuntu Server 12.04 LTS.
124 58 Beraldo Leal
125 58 Beraldo Leal
h1. Initial configuration
126 58 Beraldo Leal
127 58 Beraldo Leal
Before starting the installation and configuration of each component must first
128 58 Beraldo Leal
to make some adjustments.
129 58 Beraldo Leal
130 58 Beraldo Leal
h2. Network Configuration
131 58 Beraldo Leal
132 58 Beraldo Leal
For both conserving network resources and ensuring that network administrators
133 58 Beraldo Leal
understand the needs for networks and public IP addresses for accessing the APIs
134 58 Beraldo Leal
and VMs as necessary, this section offers recommendations and required minimum
135 58 Beraldo Leal
sizes. Throughput of at least 1000 Mbps is suggested.
136 58 Beraldo Leal
137 58 Beraldo Leal
For OpenStack Compute, networking is configured on multi-node installations
138 58 Beraldo Leal
between the physical machines on a single subnet. For networking between virtual
139 58 Beraldo Leal
machine instances, three network options are available: flat, DHCP, and VLAN.
140 58 Beraldo Leal
Two NICs (Network Interface Cards) are recommended on the server running
141 58 Beraldo Leal
nova-network.
142 58 Beraldo Leal
143 58 Beraldo Leal
Management Network (RFC1918 IP Range, not publicly routable): This network is
144 58 Beraldo Leal
utilized for all inter-server communications within the cloud infrastructure.
145 58 Beraldo Leal
Recommended size: 255 IPs (CIDR /24)
146 58 Beraldo Leal
147 58 Beraldo Leal
Public Network (Publicly routable IP range): This network is utilized for
148 58 Beraldo Leal
providing Public IP accessibility to the API endpoints within the cloud
149 58 Beraldo Leal
infrastructure. Minimum size: 8 IPs (CIDR /29)
150 58 Beraldo Leal
151 58 Beraldo Leal
VM Network (RFC1918 IP Range, not publicly routable): This network is utilized
152 58 Beraldo Leal
for providing primary IP addresses to the cloud instances. Recommended size:
153 58 Beraldo Leal
1024 IPs (CIDR /22)
154 58 Beraldo Leal
155 58 Beraldo Leal
Floating IP network (Publicly routable IP Range): This network is utilized for
156 58 Beraldo Leal
providing Public IP accessibility to selected cloud instances. Minimum size:
157 58 Beraldo Leal
16 IPs (CIDR /28)
158 58 Beraldo Leal
159 58 Beraldo Leal
In this installation we will use eth0 to public interface and eth1 for
160 58 Beraldo Leal
management interface.
161 58 Beraldo Leal
162 58 Beraldo Leal
h2. Installing Network Time Protocol (NTP)
163 58 Beraldo Leal
164 58 Beraldo Leal
To keep all the services in sync, you need to install NTP, and if you do a
165 58 Beraldo Leal
multi-node configuration you will configure one server to be the reference
166 58 Beraldo Leal
server.
167 58 Beraldo Leal
168 58 Beraldo Leal
# apt-get install -y ntp
169 58 Beraldo Leal
170 58 Beraldo Leal
Set up the NTP server on your controller node so that it receives data by
171 58 Beraldo Leal
modifying the ntp.conf file and restarting the service. As root:
172 58 Beraldo Leal
173 58 Beraldo Leal
# sed -i 's/server ntp.ubuntu.com/server ntp.ubuntu.com\nserver 127.127.1.0\
174 58 Beraldo Leal
nfudge 127.127.1.0 stratum 10/g' /etc/ntp.conf
175 58 Beraldo Leal
# service ntp restart
176 58 Beraldo Leal
177 58 Beraldo Leal
Set up the NTP client on your compute node so that the time between controller
178 58 Beraldo Leal
node and compute node is synchronized. Do the following as a cron job on compute
179 58 Beraldo Leal
node.
180 58 Beraldo Leal
181 58 Beraldo Leal
# ntpdate 'controllernode ip'
182 58 Beraldo Leal
# hwclock -w
183 58 Beraldo Leal
184 58 Beraldo Leal
h2. Storage
185 58 Beraldo Leal
186 58 Beraldo Leal
Many cloud computing use cases require persistent remote storage. Storage
187 58 Beraldo Leal
solutions are often divided into three categories: object storage, block
188 58 Beraldo Leal
storage, and file storage.
189 58 Beraldo Leal
190 58 Beraldo Leal
Here we will use a "object storage" and a "block storage".
191 58 Beraldo Leal
192 58 Beraldo Leal
h3. Object storage (swift)
193 58 Beraldo Leal
194 58 Beraldo Leal
With object storage, files are exposed through an HTTP interface, typically with
195 58 Beraldo Leal
a REST API. All client data access is done at the user level: the operating
196 58 Beraldo Leal
system is unaware of the presence of the remote storage system. In OpenStack,
197 58 Beraldo Leal
the Object Storage service provides this type of functionality. Users access and
198 58 Beraldo Leal
modify files by making HTTP requests. Because the data accesss interface provided
199 58 Beraldo Leal
by an object storage system is at a low level of abstraction, people often build
200 58 Beraldo Leal
on top of object storage to build file-based applications that provide a higher
201 58 Beraldo Leal
level of abstraction. For example, the OpenStack Image service can be configured
202 58 Beraldo Leal
to use the Object Storage service as a backend. Another use for object storage
203 58 Beraldo Leal
solutions is as a content delivery network (CDN) for hosting static web content
204 58 Beraldo Leal
(e.g., images, and media files), since object storage already provides an HTTP
205 58 Beraldo Leal
interface.
206 58 Beraldo Leal
207 58 Beraldo Leal
h3. Block storage (SAN)
208 58 Beraldo Leal
209 58 Beraldo Leal
With block storage, files are exposed through a low-level computer bus interface
210 58 Beraldo Leal
such as SCSI or ATA, that is accessible over the network. Block storage is
211 58 Beraldo Leal
synonymous with SAN (storage area network). Clients access data through the
212 58 Beraldo Leal
operating system at the device level: users access the data by mounting the
213 58 Beraldo Leal
remote device in a similar manner to how they would mount a local, physical disk
214 58 Beraldo Leal
(e.g., using the "mount" command in Linux). In OpenStack, the nova-volume
215 58 Beraldo Leal
service that forms part of the Compute service provides this type of
216 58 Beraldo Leal
functionality, and uses iSCSI to expose remote data as a SCSI disk that is
217 58 Beraldo Leal
attached to the network.
218 58 Beraldo Leal
219 58 Beraldo Leal
Because the data is exposed as a physical device, the end-user is responsible
220 58 Beraldo Leal
for creating partitions and formatting the exposed disk device. In addition,
221 58 Beraldo Leal
in OpenStack Compute a device can only be attached to one server at a time, so
222 58 Beraldo Leal
block storage cannot be used for to share data across virtual machine instances
223 58 Beraldo Leal
concurrently.
224 58 Beraldo Leal
225 58 Beraldo Leal
h1. Installation Assumptions
226 58 Beraldo Leal
227 58 Beraldo Leal
OpenStack Compute has a large number of configuration options. To simplify this
228 58 Beraldo Leal
installation guide, we make a number of assumptions about the target
229 58 Beraldo Leal
installation:
230 58 Beraldo Leal
231 58 Beraldo Leal
 * You have a collection of compute nodes, each installed with Ubuntu Server
232 58 Beraldo Leal
12.04
233 58 Beraldo Leal
234 58 Beraldo Leal
 * You have designated one of the nodes as the Cloud Controller, which will run
235 58 Beraldo Leal
all of the services (RabbitMQ, MySQL, Identity, Image, nova-api, nova-network,
236 58 Beraldo Leal
nova-scheduler, nova-volume) except for nova-compute.
237 58 Beraldo Leal
238 58 Beraldo Leal
 * The disk partitions on your cloud controller are being managed by the Logical
239 58 Beraldo Leal
Volume Manager (LVM)
240 58 Beraldo Leal
241 58 Beraldo Leal
 * Your Cloud Controller has an LVM volume group named "nova-volumes" to provide
242 58 Beraldo Leal
persistent storage to guest VMs. Either create this during the installation or
243 58 Beraldo Leal
leave some free space to create it prior to installing nova services.
244 58 Beraldo Leal
245 58 Beraldo Leal
 * Ensure that the server can resolve its own hostname, otherwise you may have
246 58 Beraldo Leal
problems if you are using RabbitMQ as the messaging backend (RabbitMQ is the default
247 58 Beraldo Leal
messaging back-end on Ubuntu, on Fedora the default backend is Qpid).
248 58 Beraldo Leal
249 58 Beraldo Leal
 * 192.168.69.1 is the primary IP for our controller host on eth0 and
250 58 Beraldo Leal
192.168.69.2 is the primary IP for our computer node on eth0.
251 58 Beraldo Leal
252 58 Beraldo Leal
 * FlatDHCP with a single network interface.
253 58 Beraldo Leal
254 58 Beraldo Leal
 * KVM as the hypervisor.
255 58 Beraldo Leal
256 58 Beraldo Leal
 * Ensure the operating system is up-to-date by running apt-get update and
257 58 Beraldo Leal
apt-get upgrade prior to the installation.
258 58 Beraldo Leal
259 58 Beraldo Leal
 * Ensure that all hosts are with ntp and correct time.
260 58 Beraldo Leal
261 58 Beraldo Leal
262 58 Beraldo Leal
This installation process walks through installing a cloud controller node and a
263 58 Beraldo Leal
compute node using a set of packages that are known to work with each other.
264 58 Beraldo Leal
The cloud controller node contains all the nova- services including the API
265 58 Beraldo Leal
server and the database server. The compute node needs to run only the
266 58 Beraldo Leal
nova-compute service. You only need one nova-network service running in a
267 58 Beraldo Leal
multi-node install.
268 53 Beraldo Leal
269 53 Beraldo Leal
270 37 Beraldo Leal
h1. Installing OpenStack Identity Service - Keystone
271 30 Beraldo Leal
272 43 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 _educloud01_.
273 4 Beraldo Leal
274 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.
275 4 Beraldo Leal
276 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.
277 4 Beraldo Leal
278 1 Beraldo Leal
Além do daemon (servidor) foi instalado o cliente (também feito em python) *_python-keystoneclient_*.
279 5 Beraldo Leal
280 37 Beraldo Leal
h2. Instalando e configurando o keystone
281 5 Beraldo Leal
282 1 Beraldo Leal
<pre>
283 18 Beraldo Leal
# apt-get install keystone
284 18 Beraldo Leal
</pre>
285 18 Beraldo Leal
286 18 Beraldo Leal
Delete the keystone.db file created in the /var/lib/keystone directory.
287 18 Beraldo Leal
288 18 Beraldo Leal
<pre>
289 18 Beraldo Leal
# rm /var/lib/keystone/keystone.db
290 18 Beraldo Leal
</pre>
291 18 Beraldo Leal
292 18 Beraldo Leal
Install mysql:
293 18 Beraldo Leal
294 18 Beraldo Leal
<pre>
295 18 Beraldo Leal
# apt-get install python-mysqldb mysql-server
296 11 Beraldo Leal
</pre>
297 19 Beraldo Leal
298 19 Beraldo Leal
Use sed to edit /etc/mysql/my.cnf to change bind-address from localhost
299 19 Beraldo Leal
(127.0.0.1) to any (0.0.0.0) and restart the mysql service, as root:
300 19 Beraldo Leal
301 19 Beraldo Leal
<pre>
302 19 Beraldo Leal
# sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
303 19 Beraldo Leal
# service mysql restart
304 19 Beraldo Leal
</pre>
305 19 Beraldo Leal
306 19 Beraldo Leal
To configure the MySQL database, create the keystone database.
307 19 Beraldo Leal
308 19 Beraldo Leal
<pre>
309 19 Beraldo Leal
# mysql -u root -p
310 19 Beraldo Leal
mysql> CREATE DATABASE keystone;
311 19 Beraldo Leal
mysql> GRANT ALL ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystonepass';
312 19 Beraldo Leal
mysql> FLUSH PRIVILEGES;
313 19 Beraldo Leal
mysql> quit;
314 19 Beraldo Leal
</pre>
315 20 Beraldo Leal
316 20 Beraldo Leal
Edit _*keystone.conf*_ to use mysql:
317 20 Beraldo Leal
318 20 Beraldo Leal
<pre>
319 20 Beraldo Leal
[sql]
320 20 Beraldo Leal
connection = mysql://keystone:keystonepass@192.168.69.1/keystone
321 21 Beraldo Leal
</pre>
322 21 Beraldo Leal
323 21 Beraldo Leal
Change in _*keystone.conf*_ the ADMIN_TOKEN:
324 21 Beraldo Leal
325 20 Beraldo Leal
<pre>
326 21 Beraldo Leal
admin_token = 012345SECRET99TOKEN012345
327 21 Beraldo Leal
</pre>
328 22 Beraldo Leal
329 22 Beraldo Leal
Restarte o keystone e inicialize o banco:
330 22 Beraldo Leal
331 22 Beraldo Leal
<pre>
332 22 Beraldo Leal
# service keystone restart
333 1 Beraldo Leal
# keystone-manage db_sync
334 22 Beraldo Leal
</pre>
335 23 Beraldo Leal
336 37 Beraldo Leal
h2. Configuring Services to work with Keystone
337 23 Beraldo Leal
338 23 Beraldo Leal
Crie o arquivo _*/root/openstackrc*_, com o seguinte conteudo:
339 23 Beraldo Leal
340 23 Beraldo Leal
<pre>
341 23 Beraldo Leal
export SERVICE_ENDPOINT=http://192.168.69.1:35357/v2.0/
342 23 Beraldo Leal
export SERVICE_TOKEN=012345SECRET99TOKEN012345
343 23 Beraldo Leal
</pre>
344 23 Beraldo Leal
345 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. 
346 23 Beraldo Leal
347 23 Beraldo Leal
Carrege o arquivo:
348 23 Beraldo Leal
349 23 Beraldo Leal
<pre>
350 23 Beraldo Leal
# source /root/openstackrc
351 23 Beraldo Leal
</pre>
352 24 Beraldo Leal
353 26 Beraldo Leal
Crie os *tenants* _openstackDemo_ e _service_:
354 24 Beraldo Leal
355 24 Beraldo Leal
<pre>
356 24 Beraldo Leal
# keystone tenant-create --name openstackDemo --description "Default Tenant"  --enabled true
357 24 Beraldo Leal
# keystone tenant-create --name service --description "Service Tenant"  --enabled true
358 24 Beraldo Leal
</pre>
359 25 Beraldo Leal
360 27 Beraldo Leal
Crie o *user* _admin_, substitua o tenant_id pelo tentant_id do openstackDemo, criado no item anterior:
361 25 Beraldo Leal
362 1 Beraldo Leal
<pre>
363 1 Beraldo Leal
# keystone user-create --tenant_id 9c401c9d2b9d41bcabda6919d4aec63a --name admin --pass adminpass --enabled true
364 26 Beraldo Leal
</pre>
365 26 Beraldo Leal
366 26 Beraldo Leal
Crie os *roles* _admin_ e _user_:
367 26 Beraldo Leal
368 26 Beraldo Leal
<pre>
369 26 Beraldo Leal
# keystone role-create --name admin
370 1 Beraldo Leal
# keystone role-create --name user
371 27 Beraldo Leal
</pre>
372 27 Beraldo Leal
373 27 Beraldo Leal
Adicione o *user* _admin_ ao *role* _admin_, fazendo as devidas substituicoes:
374 27 Beraldo Leal
375 27 Beraldo Leal
<pre>
376 29 Beraldo Leal
# keystone user-role-add --user [admin_user_id] --tenant_id [openstackDemo_tenant_id] --role [admin_role]
377 29 Beraldo Leal
</pre>
378 29 Beraldo Leal
379 29 Beraldo Leal
Crie um usuario para cada servico, e substitua o tenant_id pelo id do tenant *service*:
380 29 Beraldo Leal
381 29 Beraldo Leal
<pre>
382 29 Beraldo Leal
# keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name glance --pass glancepass --enabled true
383 29 Beraldo Leal
# keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name nova --pass novapass --enabled true
384 29 Beraldo Leal
# keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name swift --pass swiftpass --enabled true
385 29 Beraldo Leal
</pre>
386 29 Beraldo Leal
387 29 Beraldo Leal
Adicione os users acima ao *role* _admin_, fazendo as devidas substituicoes:
388 29 Beraldo Leal
389 29 Beraldo Leal
<pre>
390 29 Beraldo Leal
# keystone user-role-add --user [glance_user_id] --tenant_id [service_tenant_id] --role [admin_role]
391 1 Beraldo Leal
# keystone user-role-add --user [nova_user_id] --tenant_id [service_tenant_id] --role [admin_role]
392 29 Beraldo Leal
# keystone user-role-add --user [swift_user_id] --tenant_id [service_tenant_id] --role [admin_role]
393 25 Beraldo Leal
</pre>
394 31 Beraldo Leal
395 37 Beraldo Leal
h2. Definindo os servicos:
396 31 Beraldo Leal
397 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.
398 31 Beraldo Leal
399 31 Beraldo Leal
Crie os servicos:
400 31 Beraldo Leal
401 31 Beraldo Leal
<pre>
402 31 Beraldo Leal
# keystone service-create --name keystone --type identity --description "Keystone Identity Service" 
403 31 Beraldo Leal
# keystone service-create --name nova --type compute --description "Nova Compute Service"
404 31 Beraldo Leal
# keystone service-create --name volume --type volume --description "Nova Volume Service"
405 31 Beraldo Leal
# keystone service-create --name glance --type image --description "Glance Image Service"
406 41 Beraldo Leal
# keystone service-create --name swift --type object-store --description "Object Storage Service"
407 31 Beraldo Leal
</pre>
408 32 Beraldo Leal
409 32 Beraldo Leal
Crie os endpoints para os respectivos servicos:
410 32 Beraldo Leal
411 32 Beraldo Leal
<pre>
412 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
413 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'
414 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'
415 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
416 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'
417 32 Beraldo Leal
</pre>
418 34 Beraldo Leal
419 37 Beraldo Leal
h2. Verificando a instalacao:
420 34 Beraldo Leal
421 34 Beraldo Leal
<pre>
422 34 Beraldo Leal
# sudo apt-get install curl openssl
423 34 Beraldo Leal
</pre>
424 34 Beraldo Leal
425 34 Beraldo Leal
Faca uma requisicao REST para a API do keystone usando o curl:
426 34 Beraldo Leal
427 34 Beraldo Leal
<pre>
428 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
429 34 Beraldo Leal
</pre>
430 34 Beraldo Leal
431 35 Beraldo Leal
O retorno deve conter todos os servicos, endpoins e um token que expira em 24 horas:
432 34 Beraldo Leal
433 34 Beraldo Leal
<pre>
434 34 Beraldo Leal
{
435 34 Beraldo Leal
    "access": {
436 34 Beraldo Leal
        "serviceCatalog": [
437 34 Beraldo Leal
            {
438 34 Beraldo Leal
                "endpoints": [
439 34 Beraldo Leal
                    {
440 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", 
441 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", 
442 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", 
443 34 Beraldo Leal
                        "region": "RegionOne"
444 34 Beraldo Leal
                    }
445 34 Beraldo Leal
                ], 
446 34 Beraldo Leal
                "endpoints_links": [], 
447 34 Beraldo Leal
                "name": "volume", 
448 34 Beraldo Leal
                "type": "volume"
449 34 Beraldo Leal
            }, 
450 34 Beraldo Leal
            {
451 34 Beraldo Leal
                "endpoints": [
452 34 Beraldo Leal
                    {
453 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:9292/v1", 
454 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:9292/v1", 
455 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:9292/v1", 
456 34 Beraldo Leal
                        "region": "RegionOne"
457 34 Beraldo Leal
                    }
458 34 Beraldo Leal
                ], 
459 34 Beraldo Leal
                "endpoints_links": [], 
460 34 Beraldo Leal
                "name": "glance", 
461 34 Beraldo Leal
                "type": "image"
462 34 Beraldo Leal
            }, 
463 34 Beraldo Leal
            {
464 34 Beraldo Leal
                "endpoints": [
465 34 Beraldo Leal
                    {
466 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", 
467 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", 
468 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", 
469 34 Beraldo Leal
                        "region": "RegionOne"
470 34 Beraldo Leal
                    }
471 34 Beraldo Leal
                ], 
472 34 Beraldo Leal
                "endpoints_links": [], 
473 34 Beraldo Leal
                "name": "nova", 
474 34 Beraldo Leal
                "type": "compute"
475 34 Beraldo Leal
            }, 
476 34 Beraldo Leal
            {
477 34 Beraldo Leal
                "endpoints": [
478 34 Beraldo Leal
                    {
479 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:35357/v2.0", 
480 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:5000/v2.0", 
481 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:5000/v2.0", 
482 34 Beraldo Leal
                        "region": "RegionOne"
483 34 Beraldo Leal
                    }
484 34 Beraldo Leal
                ], 
485 34 Beraldo Leal
                "endpoints_links": [], 
486 34 Beraldo Leal
                "name": "keystone", 
487 34 Beraldo Leal
                "type": "identity"
488 34 Beraldo Leal
            }, 
489 34 Beraldo Leal
            {
490 34 Beraldo Leal
                "endpoints": [
491 34 Beraldo Leal
                    {
492 34 Beraldo Leal
                        "adminURL": "http://192.168.69.1:8888/", 
493 34 Beraldo Leal
                        "internalURL": "http://192.168.69.1:8888/v1/AUTH_9c401c9d2b9d41bcabda6919d4aec63a", 
494 34 Beraldo Leal
                        "publicURL": "http://192.168.69.1:8888/v1/AUTH_9c401c9d2b9d41bcabda6919d4aec63a", 
495 34 Beraldo Leal
                        "region": "RegionOne"
496 34 Beraldo Leal
                    }
497 34 Beraldo Leal
                ], 
498 34 Beraldo Leal
                "endpoints_links": [], 
499 34 Beraldo Leal
                "name": "swift", 
500 41 Beraldo Leal
                "type": "object-store"
501 34 Beraldo Leal
            }
502 34 Beraldo Leal
        ], 
503 34 Beraldo Leal
        "token": {
504 34 Beraldo Leal
            "expires": "2012-06-08T15:31:46Z", 
505 34 Beraldo Leal
            "id": "05b818ff23564d5599c97ea5e1df7bbe", 
506 34 Beraldo Leal
            "tenant": {
507 34 Beraldo Leal
                "description": "Default Tenant", 
508 34 Beraldo Leal
                "enabled": true, 
509 34 Beraldo Leal
                "id": "9c401c9d2b9d41bcabda6919d4aec63a", 
510 34 Beraldo Leal
                "name": "openstackDemo"
511 34 Beraldo Leal
            }
512 34 Beraldo Leal
        }, 
513 34 Beraldo Leal
        "user": {
514 34 Beraldo Leal
            "id": "1fcfbe778fc3428aa30db782056b34d7", 
515 34 Beraldo Leal
            "name": "admin", 
516 34 Beraldo Leal
            "roles": [
517 34 Beraldo Leal
                {
518 34 Beraldo Leal
                    "id": "a2d6da77c0a54105aab94484e0d2088b", 
519 34 Beraldo Leal
                    "name": "admin"
520 34 Beraldo Leal
                }
521 34 Beraldo Leal
            ], 
522 34 Beraldo Leal
            "roles_links": [], 
523 34 Beraldo Leal
            "username": "admin"
524 34 Beraldo Leal
        }
525 34 Beraldo Leal
    }
526 34 Beraldo Leal
}
527 34 Beraldo Leal
528 34 Beraldo Leal
</pre>
529 36 Beraldo Leal
530 36 Beraldo Leal
Voce pode tambem listar usuarios, roles, tenants e services:
531 36 Beraldo Leal
532 36 Beraldo Leal
<pre>
533 36 Beraldo Leal
# keystone user-list
534 39 Beraldo Leal
+----------------------------------+---------+-------+--------+
535 39 Beraldo Leal
|                id                | enabled | email |  name  |
536 39 Beraldo Leal
+----------------------------------+---------+-------+--------+
537 39 Beraldo Leal
| 029c5749548946f7b560b2706d31d488 | True    | None  | glance |
538 39 Beraldo Leal
| 1fcfbe778fc3428aa30db782056b34d7 | True    | None  | admin  |
539 39 Beraldo Leal
| 4b75079aeb1b408ebdb286bfb85e719f | True    | None  | swift  |
540 39 Beraldo Leal
| e25f81d50eb84bdb92907adbd0e41f25 | True    | None  | nova   |
541 39 Beraldo Leal
+----------------------------------+---------+-------+--------+
542 40 Beraldo Leal
</pre>
543 39 Beraldo Leal
544 40 Beraldo Leal
<pre>
545 36 Beraldo Leal
# keystone role-list
546 39 Beraldo Leal
+----------------------------------+-------+
547 39 Beraldo Leal
|                id                |  name |
548 39 Beraldo Leal
+----------------------------------+-------+
549 39 Beraldo Leal
| 845e83e4d9bf4d8d8188b1e261dfe103 | user  |
550 39 Beraldo Leal
| a2d6da77c0a54105aab94484e0d2088b | admin |
551 39 Beraldo Leal
+----------------------------------+-------+
552 40 Beraldo Leal
</pre>
553 1 Beraldo Leal
554 40 Beraldo Leal
<pre>
555 36 Beraldo Leal
# keystone tenant-list
556 39 Beraldo Leal
+----------------------------------+---------------+---------+
557 39 Beraldo Leal
|                id                |      name     | enabled |
558 39 Beraldo Leal
+----------------------------------+---------------+---------+
559 39 Beraldo Leal
| 92920816c7704a8a95c916d34dc7a05c | service       | True    |
560 39 Beraldo Leal
| 9c401c9d2b9d41bcabda6919d4aec63a | openstackDemo | True    |
561 1 Beraldo Leal
+----------------------------------+---------------+---------+
562 40 Beraldo Leal
</pre>
563 1 Beraldo Leal
564 40 Beraldo Leal
<pre>
565 36 Beraldo Leal
# keystone service-list
566 39 Beraldo Leal
+----------------------------------+----------+----------------+---------------------------+
567 39 Beraldo Leal
|                id                |   name   |      type      |        description        |
568 39 Beraldo Leal
+----------------------------------+----------+----------------+---------------------------+
569 39 Beraldo Leal
| 00486163c7c64c6a86f577627071aafc | nova     | compute        | Nova Compute Service      |
570 39 Beraldo Leal
| 69d3a6b21c9348acb1042d7d9386ff81 | volume   | volume         | Nova Volume Service       |
571 41 Beraldo Leal
| 7b09782f9faf448781f5a460acabe258 | swift    | object-store   | Object Storage Service    |
572 39 Beraldo Leal
| d6b32583a6694e9b828b2a50037623ba | keystone | identity       | Keystone Identity Service |
573 39 Beraldo Leal
| f7f964a71e2a45119dcaede68fafbd78 | glance   | image          | Glance Image Service      |
574 39 Beraldo Leal
+----------------------------------+----------+----------------+---------------------------+
575 36 Beraldo Leal
</pre>
576 38 Beraldo Leal
577 38 Beraldo Leal
h1. Installing OpenStack Object Storage - Swift
578 42 Beraldo Leal
579 1 Beraldo Leal
[Descrever o Swift aqui]
580 44 Beraldo Leal
581 44 Beraldo Leal
Como neste ambiente de desenvolvimento temos apenas um no para storage e este sera o mesmo no que estara instalado o swift-proxy, todos os passos abaixo, sao executados na mesma maquina: _educloud01_.
582 44 Beraldo Leal
583 44 Beraldo Leal
Em um ambiente de producao aconselha-se ter pelo menos 05 object storage nodes e 01 object proxy node.
584 44 Beraldo Leal
585 44 Beraldo Leal
h2. Instalando e configurando o swift
586 44 Beraldo Leal
587 44 Beraldo Leal
<pre>
588 44 Beraldo Leal
# apt-get install swift python-xattr python-memcache rsync memcached python-netifaces
589 44 Beraldo Leal
</pre>
590 44 Beraldo Leal
591 44 Beraldo Leal
Infelizmente no momento da escrita deste manual o pacote do swift nao automatiza algumas tarefas, como por exemplo, a criacao dos arquivos de configuracao. Teremos que fazer isso manualmente:
592 44 Beraldo Leal
593 44 Beraldo Leal
<pre>
594 44 Beraldo Leal
# mkdir /etc/swift
595 44 Beraldo Leal
</pre>
596 44 Beraldo Leal
597 44 Beraldo Leal
Crie o arquivo de configuracao _/etc/swift/swift.conf_:
598 44 Beraldo Leal
599 44 Beraldo Leal
<pre>
600 44 Beraldo Leal
[swift-hash]
601 44 Beraldo Leal
# random unique string that can never change (DO NOT LOSE)
602 44 Beraldo Leal
swift_hash_path_suffix = fLIbertYgibbitZ
603 44 Beraldo Leal
</pre>
604 44 Beraldo Leal
605 44 Beraldo Leal
h2. Instalando e configurando os "object nodes"
606 44 Beraldo Leal
607 44 Beraldo Leal
<pre>
608 44 Beraldo Leal
# apt-get install swift-account swift-container swift-object xfsprogs
609 44 Beraldo Leal
</pre>
610 44 Beraldo Leal
611 44 Beraldo Leal
Cada "Object node" pode ter muitos dispositivos ligados a eles. 'E necessario que seja utilizado o sistema de arquivos xfs. 
612 44 Beraldo Leal
613 44 Beraldo Leal
<pre>
614 44 Beraldo Leal
# fdisk /dev/sdb (set up a single partition)
615 44 Beraldo Leal
# mkfs.xfs -i size=1024 /dev/sdb1
616 44 Beraldo Leal
</pre>
617 44 Beraldo Leal
618 44 Beraldo Leal
619 44 Beraldo Leal
Este dispositivo deve estar montando em /srv/node/
620 44 Beraldo Leal
621 44 Beraldo Leal
<pre>
622 44 Beraldo Leal
echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab
623 44 Beraldo Leal
mkdir -p /srv/node/sdb1
624 44 Beraldo Leal
mount /srv/node/sdb1
625 44 Beraldo Leal
chown -R swift:swift /srv/node
626 44 Beraldo Leal
</pre>
627 44 Beraldo Leal
628 44 Beraldo Leal
h2. Configure o _rsyncd.conf_
629 44 Beraldo Leal
630 44 Beraldo Leal
<pre>
631 44 Beraldo Leal
uid = swift
632 44 Beraldo Leal
gid = swift
633 44 Beraldo Leal
log file = /var/log/rsyncd.log
634 44 Beraldo Leal
pid file = /var/run/rsyncd.pid
635 44 Beraldo Leal
address = 192.168.69.1
636 44 Beraldo Leal
637 44 Beraldo Leal
[account]
638 44 Beraldo Leal
max connections = 2
639 44 Beraldo Leal
path = /srv/node/
640 44 Beraldo Leal
read only = false
641 44 Beraldo Leal
lock file = /var/lock/account.lock
642 44 Beraldo Leal
643 44 Beraldo Leal
[container]
644 44 Beraldo Leal
max connections = 2
645 44 Beraldo Leal
path = /srv/node/
646 44 Beraldo Leal
read only = false
647 44 Beraldo Leal
lock file = /var/lock/container.lock
648 44 Beraldo Leal
649 44 Beraldo Leal
[object]
650 44 Beraldo Leal
max connections = 2
651 44 Beraldo Leal
path = /srv/node/
652 44 Beraldo Leal
read only = false
653 44 Beraldo Leal
lock file = /var/lock/object.lock
654 44 Beraldo Leal
</pre>
655 44 Beraldo Leal
656 44 Beraldo Leal
Edite o _/etc/default/rsync_:
657 44 Beraldo Leal
658 44 Beraldo Leal
<pre>
659 44 Beraldo Leal
RSYNC_ENABLE = true
660 44 Beraldo Leal
</pre>
661 44 Beraldo Leal
662 44 Beraldo Leal
Restarte o rsync:
663 44 Beraldo Leal
664 44 Beraldo Leal
<pre>
665 44 Beraldo Leal
service rsync restart
666 44 Beraldo Leal
</pre>
667 44 Beraldo Leal
668 44 Beraldo Leal
Crie o _/etc/swift/account-server.conf_:
669 44 Beraldo Leal
670 44 Beraldo Leal
<pre>
671 44 Beraldo Leal
[DEFAULT]
672 44 Beraldo Leal
bind_ip = 192.168.69.1
673 44 Beraldo Leal
workers = 2
674 44 Beraldo Leal
675 44 Beraldo Leal
[pipeline:main]
676 44 Beraldo Leal
pipeline = account-server
677 44 Beraldo Leal
678 44 Beraldo Leal
[app:account-server]
679 44 Beraldo Leal
use = egg:swift#account
680 44 Beraldo Leal
681 44 Beraldo Leal
[account-replicator]
682 44 Beraldo Leal
683 44 Beraldo Leal
[account-auditor]
684 44 Beraldo Leal
685 44 Beraldo Leal
[account-reaper]
686 44 Beraldo Leal
</pre>
687 44 Beraldo Leal
688 44 Beraldo Leal
Crie o _/etc/swift/container-server.conf_:
689 44 Beraldo Leal
690 44 Beraldo Leal
<pre>
691 44 Beraldo Leal
[DEFAULT]
692 44 Beraldo Leal
bind_ip = 192.168.69.1
693 44 Beraldo Leal
workers = 2
694 44 Beraldo Leal
695 44 Beraldo Leal
[pipeline:main]
696 44 Beraldo Leal
pipeline = container-server
697 44 Beraldo Leal
698 44 Beraldo Leal
[app:container-server]
699 44 Beraldo Leal
use = egg:swift#container
700 44 Beraldo Leal
701 44 Beraldo Leal
[container-replicator]
702 44 Beraldo Leal
703 44 Beraldo Leal
[container-updater]
704 44 Beraldo Leal
705 44 Beraldo Leal
[container-auditor]
706 44 Beraldo Leal
</pre>
707 44 Beraldo Leal
708 44 Beraldo Leal
Crie o _/etc/swift/object-server.conf_:
709 44 Beraldo Leal
710 44 Beraldo Leal
<pre>
711 44 Beraldo Leal
[DEFAULT]
712 44 Beraldo Leal
bind_ip = 192.168.69.1
713 44 Beraldo Leal
workers = 2
714 44 Beraldo Leal
715 44 Beraldo Leal
[pipeline:main]
716 44 Beraldo Leal
pipeline = object-server
717 44 Beraldo Leal
718 44 Beraldo Leal
[app:object-server]
719 44 Beraldo Leal
use = egg:swift#object
720 44 Beraldo Leal
721 44 Beraldo Leal
[object-replicator]
722 44 Beraldo Leal
723 44 Beraldo Leal
[object-updater]
724 44 Beraldo Leal
725 44 Beraldo Leal
[object-auditor]
726 44 Beraldo Leal
</pre>
727 44 Beraldo Leal
728 44 Beraldo Leal
729 44 Beraldo Leal
h2. Instale e configure o swift-proxy
730 44 Beraldo Leal
731 44 Beraldo Leal
<pre>
732 44 Beraldo Leal
# apt-get install swift-proxy memcached
733 44 Beraldo Leal
</pre>
734 44 Beraldo Leal
735 44 Beraldo Leal
Crie o certificado SSL auto assinado:
736 44 Beraldo Leal
737 44 Beraldo Leal
<pre>
738 44 Beraldo Leal
cd /etc/swift
739 44 Beraldo Leal
openssl req -new -x509 -nodes -out cert.crt -keyout cert.key
740 44 Beraldo Leal
</pre>
741 44 Beraldo Leal
742 44 Beraldo Leal
Modifique o memcached para ouvir na interface da sua rede interna. Edite a seguinte linha no /etc/memcached.conf, mudando
743 44 Beraldo Leal
744 44 Beraldo Leal
<pre>
745 44 Beraldo Leal
-l 127.0.0.1
746 44 Beraldo Leal
to
747 44 Beraldo Leal
-l 192.168.69.1
748 44 Beraldo Leal
</pre>
749 44 Beraldo Leal
750 44 Beraldo Leal
Restart o memcached:
751 44 Beraldo Leal
752 44 Beraldo Leal
<pre>
753 44 Beraldo Leal
service memcached restart
754 44 Beraldo Leal
</pre>
755 44 Beraldo Leal
756 44 Beraldo Leal
Crie o arquivo _/etc/swift/proxy-server.conf_:
757 44 Beraldo Leal
758 44 Beraldo Leal
<pre>
759 44 Beraldo Leal
[DEFAULT]
760 44 Beraldo Leal
bind_port = 8888
761 44 Beraldo Leal
user = swift
762 44 Beraldo Leal
763 44 Beraldo Leal
[pipeline:main]
764 44 Beraldo Leal
pipeline = catch_errors healthcheck cache authtoken keystone proxy-server
765 44 Beraldo Leal
766 44 Beraldo Leal
[app:proxy-server]
767 44 Beraldo Leal
use = egg:swift#proxy
768 44 Beraldo Leal
account_autocreate = true
769 44 Beraldo Leal
770 44 Beraldo Leal
[filter:keystone]
771 44 Beraldo Leal
paste.filter_factory = keystone.middleware.swift_auth:filter_factory
772 44 Beraldo Leal
operator_roles = admin, swiftoperator
773 44 Beraldo Leal
774 44 Beraldo Leal
[filter:authtoken]
775 44 Beraldo Leal
paste.filter_factory = keystone.middleware.auth_token:filter_factory
776 44 Beraldo Leal
# Delaying the auth decision is required to support token-less
777 44 Beraldo Leal
# usage for anonymous referrers ('.r:*').
778 44 Beraldo Leal
delay_auth_decision = 10
779 44 Beraldo Leal
service_port = 5000
780 44 Beraldo Leal
service_host = 192.168.69.1
781 44 Beraldo Leal
auth_port = 35357
782 44 Beraldo Leal
auth_host = 192.168.69.1
783 44 Beraldo Leal
auth_token = 012345SECRET99TOKEN012345
784 44 Beraldo Leal
admin_token = 012345SECRET99TOKEN012345
785 44 Beraldo Leal
auth_protocol = http
786 44 Beraldo Leal
787 44 Beraldo Leal
[filter:cache]
788 44 Beraldo Leal
use = egg:swift#memcache
789 44 Beraldo Leal
set log_name = cache
790 44 Beraldo Leal
791 44 Beraldo Leal
[filter:catch_errors]
792 44 Beraldo Leal
use = egg:swift#catch_errors
793 44 Beraldo Leal
794 44 Beraldo Leal
[filter:healthcheck]
795 44 Beraldo Leal
use = egg:swift#healthcheck
796 44 Beraldo Leal
</pre>
797 44 Beraldo Leal
798 45 Beraldo Leal
799 45 Beraldo Leal
Create the account, container and object rings. The builder command is basically creating a builder file with a few parameters. The parameter with the value of 18 represents 2 ^ 18th, the value that the partition will be sized to. Set this "partition power" value based on the total amount of storage you expect your entire ring to use. The value of 1 represents the number of replicas of each object, with the last value being the number of hours to restrict moving a partition more than once.
800 45 Beraldo Leal
801 45 Beraldo Leal
<pre>
802 45 Beraldo Leal
cd /etc/swift
803 45 Beraldo Leal
swift-ring-builder account.builder create 18 1 1
804 45 Beraldo Leal
swift-ring-builder container.builder create 18 1 1
805 45 Beraldo Leal
swift-ring-builder object.builder create 18 1 1
806 45 Beraldo Leal
</pre>
807 45 Beraldo Leal
808 45 Beraldo Leal
For every storage device on each node add entries to each ring:
809 45 Beraldo Leal
810 45 Beraldo Leal
<pre>
811 45 Beraldo Leal
swift-ring-builder account.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP>:6002/<DEVICE> 100
812 45 Beraldo Leal
swift-ring-builder container.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP_1>:6001/<DEVICE> 100
813 45 Beraldo Leal
swift-ring-builder object.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP_1>:6000/<DEVICE> 100
814 45 Beraldo Leal
</pre>
815 45 Beraldo Leal
816 45 Beraldo Leal
Como no nosso caso, apenas temos uma zona, em um storage node e com um device (sdb1), o comando acima ficaria:
817 45 Beraldo Leal
818 45 Beraldo Leal
<pre>
819 45 Beraldo Leal
swift-ring-builder account.builder add z1-192.168.69.1:6002/sdb1 100
820 45 Beraldo Leal
swift-ring-builder container.builder add z1-192.168.69.1:6001/sdb1 100
821 45 Beraldo Leal
swift-ring-builder object.builder add z1-192.168.69.1:6000/sdb1 100
822 45 Beraldo Leal
</pre>
823 45 Beraldo Leal
824 45 Beraldo Leal
Verify the ring contents for each ring:
825 45 Beraldo Leal
826 45 Beraldo Leal
<pre>
827 45 Beraldo Leal
swift-ring-builder account.builder
828 45 Beraldo Leal
swift-ring-builder container.builder
829 45 Beraldo Leal
swift-ring-builder object.builder
830 45 Beraldo Leal
</pre>
831 45 Beraldo Leal
832 45 Beraldo Leal
Rebalance the rings:
833 45 Beraldo Leal
834 45 Beraldo Leal
<pre>
835 45 Beraldo Leal
swift-ring-builder account.builder rebalance
836 45 Beraldo Leal
swift-ring-builder container.builder rebalance
837 45 Beraldo Leal
swift-ring-builder object.builder rebalance
838 45 Beraldo Leal
</pre>
839 45 Beraldo Leal
840 44 Beraldo Leal
Altere as permissoes dos arquivos de configuracao:
841 44 Beraldo Leal
842 44 Beraldo Leal
<pre>
843 44 Beraldo Leal
# chown -R swift:swift /etc/swift/
844 44 Beraldo Leal
</pre>
845 45 Beraldo Leal
846 45 Beraldo Leal
Inicie o swift-proxy:
847 45 Beraldo Leal
848 45 Beraldo Leal
<pre>
849 45 Beraldo Leal
swift-init proxy start
850 45 Beraldo Leal
</pre>
851 45 Beraldo Leal
852 45 Beraldo Leal
Inicie todos os servicos:
853 45 Beraldo Leal
854 45 Beraldo Leal
<pre>
855 45 Beraldo Leal
swift-init main start
856 45 Beraldo Leal
swift-init rest start
857 45 Beraldo Leal
</pre>
858 45 Beraldo Leal
859 45 Beraldo Leal
860 45 Beraldo Leal
h2. Verificando a instalacao
861 45 Beraldo Leal
862 45 Beraldo Leal
O arquivo _/root/openstackrc_ vai receber novas variaveis de ambiente, ele deve ficar assim:
863 45 Beraldo Leal
864 45 Beraldo Leal
<pre>
865 45 Beraldo Leal
# Used for Keystone
866 45 Beraldo Leal
export SERVICE_ENDPOINT=http://192.168.69.1:35357/v2.0/
867 45 Beraldo Leal
export SERVICE_TOKEN=012345SECRET99TOKEN012345
868 45 Beraldo Leal
869 45 Beraldo Leal
# Used for swift
870 45 Beraldo Leal
export ST_AUTH=http://192.168.69.1:5000/v2.0
871 45 Beraldo Leal
export ST_USER=openstackDemo:admin
872 45 Beraldo Leal
export ST_KEY=adminpass
873 45 Beraldo Leal
export OS_REGION_NAME=RegionOne
874 45 Beraldo Leal
</pre>
875 45 Beraldo Leal
876 45 Beraldo Leal
Carregue o arquivo:
877 45 Beraldo Leal
878 45 Beraldo Leal
<pre>
879 45 Beraldo Leal
# source /root/openstackrc
880 45 Beraldo Leal
</pre>
881 45 Beraldo Leal
882 45 Beraldo Leal
Tente obter status do swift:
883 45 Beraldo Leal
884 45 Beraldo Leal
<pre>
885 45 Beraldo Leal
# swift -V 2.0 stat
886 45 Beraldo Leal
</pre>
887 45 Beraldo Leal
888 45 Beraldo Leal
# Liste os containers:
889 45 Beraldo Leal
890 45 Beraldo Leal
<pre>
891 45 Beraldo Leal
# swift -V 2.0 list
892 45 Beraldo Leal
</pre>
893 46 Beraldo Leal
894 46 Beraldo Leal
Suba alguns arquivos para o swift:
895 46 Beraldo Leal
896 45 Beraldo Leal
<pre>
897 46 Beraldo Leal
# swift -V 2.0 upload myfiles bigfile1.tgz
898 46 Beraldo Leal
# swift -V 2.0 upload myfiles bigfile2.tgz
899 46 Beraldo Leal
</pre>
900 46 Beraldo Leal
901 46 Beraldo Leal
Baixe o container "myfiles":
902 46 Beraldo Leal
<pre>
903 46 Beraldo Leal
# cd /tmp/
904 46 Beraldo Leal
# swift -V 2.0 download myfiles
905 46 Beraldo Leal
</pre>
906 46 Beraldo Leal
907 46 Beraldo Leal
h1. Installing OpenStack Image Service - Glance
908 47 Beraldo Leal
909 47 Beraldo Leal
[descrever o glance aqui]
910 47 Beraldo Leal
911 47 Beraldo Leal
O glance esta instalado na _educloud01_.
912 47 Beraldo Leal
913 47 Beraldo Leal
h2. Instalando e configurando o glance
914 47 Beraldo Leal
915 47 Beraldo Leal
<pre>
916 47 Beraldo Leal
# apt-get install glance
917 47 Beraldo Leal
</pre>
918 47 Beraldo Leal
919 47 Beraldo Leal
Remova o arquivo sqlite.
920 47 Beraldo Leal
921 47 Beraldo Leal
<pre>
922 47 Beraldo Leal
# rm /var/lib/glance/glance.sqlite
923 47 Beraldo Leal
</pre>
924 47 Beraldo Leal
925 47 Beraldo Leal
h2. Configuring the Image Service database backend
926 47 Beraldo Leal
927 47 Beraldo Leal
<pre>
928 47 Beraldo Leal
# mysql -u root -p
929 47 Beraldo Leal
mysql> CREATE DATABASE glance;
930 47 Beraldo Leal
mysql> GRANT ALL ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glancepass';
931 47 Beraldo Leal
mysql> FLUSH PRIVILEGES;
932 47 Beraldo Leal
mysql> quit;
933 47 Beraldo Leal
</pre>
934 47 Beraldo Leal
935 47 Beraldo Leal
936 47 Beraldo Leal
Substitua os seguintes arquivos de configuracao em _/etc/glance/_:
937 47 Beraldo Leal
938 47 Beraldo Leal
*/etc/glance/glance-api.conf*:
939 47 Beraldo Leal
<pre>
940 47 Beraldo Leal
[DEFAULT]
941 47 Beraldo Leal
# Show more verbose log output (sets INFO log level output)
942 47 Beraldo Leal
verbose = True
943 47 Beraldo Leal
944 47 Beraldo Leal
# Show debugging output in logs (sets DEBUG log level output)
945 47 Beraldo Leal
debug = False
946 47 Beraldo Leal
947 47 Beraldo Leal
# Which backend store should Glance use by default is not specified
948 47 Beraldo Leal
# in a request to add a new image to Glance? Default: 'file'
949 47 Beraldo Leal
# Available choices are 'file', 'swift', and 's3'
950 47 Beraldo Leal
default_store = swift
951 47 Beraldo Leal
952 47 Beraldo Leal
# Address to bind the API server
953 47 Beraldo Leal
bind_host = 0.0.0.0
954 47 Beraldo Leal
955 47 Beraldo Leal
# Port the bind the API server to
956 47 Beraldo Leal
bind_port = 9292
957 47 Beraldo Leal
958 47 Beraldo Leal
# Log to this file. Make sure you do not set the same log
959 47 Beraldo Leal
# file for both the API and registry servers!
960 47 Beraldo Leal
log_file = /var/log/glance/api.log
961 47 Beraldo Leal
962 47 Beraldo Leal
# Backlog requests when creating socket
963 47 Beraldo Leal
backlog = 4096
964 47 Beraldo Leal
965 47 Beraldo Leal
# Number of Glance API worker processes to start.
966 47 Beraldo Leal
# On machines with more than one CPU increasing this value
967 47 Beraldo Leal
# may improve performance (especially if using SSL with
968 47 Beraldo Leal
# compression turned on). It is typically recommended to set
969 47 Beraldo Leal
# this value to the number of CPUs present on your machine.
970 47 Beraldo Leal
workers = 0
971 47 Beraldo Leal
972 47 Beraldo Leal
# Role used to identify an authenticated user as administrator
973 47 Beraldo Leal
#admin_role = admin
974 47 Beraldo Leal
975 47 Beraldo Leal
# ================= Syslog Options ============================
976 47 Beraldo Leal
977 47 Beraldo Leal
# Send logs to syslog (/dev/log) instead of to file specified
978 47 Beraldo Leal
# by `log_file`
979 47 Beraldo Leal
use_syslog = False
980 47 Beraldo Leal
981 47 Beraldo Leal
# Facility to use. If unset defaults to LOG_USER.
982 47 Beraldo Leal
# syslog_log_facility = LOG_LOCAL0
983 47 Beraldo Leal
984 47 Beraldo Leal
# ================= SSL Options ===============================
985 47 Beraldo Leal
986 47 Beraldo Leal
# Certificate file to use when starting API server securely
987 47 Beraldo Leal
# cert_file = /path/to/certfile
988 47 Beraldo Leal
989 47 Beraldo Leal
# Private key file to use when starting API server securely
990 47 Beraldo Leal
# key_file = /path/to/keyfile
991 47 Beraldo Leal
992 47 Beraldo Leal
# ================= Security Options ==========================
993 47 Beraldo Leal
994 47 Beraldo Leal
# AES key for encrypting store 'location' metadata, including
995 47 Beraldo Leal
# -- if used -- Swift or S3 credentials
996 47 Beraldo Leal
# Should be set to a random string of length 16, 24 or 32 bytes
997 47 Beraldo Leal
# metadata_encryption_key = <16, 24 or 32 char registry metadata key>
998 47 Beraldo Leal
999 47 Beraldo Leal
# ============ Registry Options ===============================
1000 47 Beraldo Leal
1001 47 Beraldo Leal
# Address to find the registry server
1002 47 Beraldo Leal
registry_host = 0.0.0.0
1003 47 Beraldo Leal
1004 47 Beraldo Leal
# Port the registry server is listening on
1005 47 Beraldo Leal
registry_port = 9191
1006 47 Beraldo Leal
1007 47 Beraldo Leal
# What protocol to use when connecting to the registry server?
1008 47 Beraldo Leal
# Set to https for secure HTTP communication
1009 47 Beraldo Leal
registry_client_protocol = http
1010 47 Beraldo Leal
1011 47 Beraldo Leal
# The path to the key file to use in SSL connections to the
1012 47 Beraldo Leal
# registry server, if any. Alternately, you may set the
1013 47 Beraldo Leal
# GLANCE_CLIENT_KEY_FILE environ variable to a filepath of the key file
1014 47 Beraldo Leal
# registry_client_key_file = /path/to/key/file
1015 47 Beraldo Leal
1016 47 Beraldo Leal
# The path to the cert file to use in SSL connections to the
1017 47 Beraldo Leal
# registry server, if any. Alternately, you may set the
1018 47 Beraldo Leal
# GLANCE_CLIENT_CERT_FILE environ variable to a filepath of the cert file
1019 47 Beraldo Leal
# registry_client_cert_file = /path/to/cert/file
1020 47 Beraldo Leal
1021 47 Beraldo Leal
# The path to the certifying authority cert file to use in SSL connections
1022 47 Beraldo Leal
# to the registry server, if any. Alternately, you may set the
1023 47 Beraldo Leal
# GLANCE_CLIENT_CA_FILE environ variable to a filepath of the CA cert file
1024 47 Beraldo Leal
# registry_client_ca_file = /path/to/ca/file
1025 47 Beraldo Leal
1026 47 Beraldo Leal
# ============ Notification System Options =====================
1027 47 Beraldo Leal
1028 47 Beraldo Leal
# Notifications can be sent when images are create, updated or deleted.
1029 47 Beraldo Leal
# There are three methods of sending notifications, logging (via the
1030 47 Beraldo Leal
# log_file directive), rabbit (via a rabbitmq queue), qpid (via a Qpid
1031 47 Beraldo Leal
# message queue), or noop (no notifications sent, the default)
1032 47 Beraldo Leal
notifier_strategy = noop
1033 47 Beraldo Leal
1034 47 Beraldo Leal
# Configuration options if sending notifications via rabbitmq (these are
1035 47 Beraldo Leal
# the defaults)
1036 47 Beraldo Leal
rabbit_host = localhost
1037 47 Beraldo Leal
rabbit_port = 5672
1038 47 Beraldo Leal
rabbit_use_ssl = false
1039 47 Beraldo Leal
rabbit_userid = guest
1040 47 Beraldo Leal
rabbit_password = guest
1041 47 Beraldo Leal
rabbit_virtual_host = /
1042 47 Beraldo Leal
rabbit_notification_exchange = glance
1043 47 Beraldo Leal
rabbit_notification_topic = glance_notifications
1044 47 Beraldo Leal
1045 47 Beraldo Leal
# Configuration options if sending notifications via Qpid (these are
1046 47 Beraldo Leal
# the defaults)
1047 47 Beraldo Leal
qpid_notification_exchange = glance
1048 47 Beraldo Leal
qpid_notification_topic = glance_notifications
1049 47 Beraldo Leal
qpid_host = localhost
1050 47 Beraldo Leal
qpid_port = 5672
1051 47 Beraldo Leal
qpid_username =
1052 47 Beraldo Leal
qpid_password =
1053 47 Beraldo Leal
qpid_sasl_mechanisms =
1054 47 Beraldo Leal
qpid_reconnect_timeout = 0
1055 47 Beraldo Leal
qpid_reconnect_limit = 0
1056 47 Beraldo Leal
qpid_reconnect_interval_min = 0
1057 47 Beraldo Leal
qpid_reconnect_interval_max = 0
1058 47 Beraldo Leal
qpid_reconnect_interval = 0
1059 47 Beraldo Leal
qpid_heartbeat = 5
1060 47 Beraldo Leal
# Set to 'ssl' to enable SSL
1061 47 Beraldo Leal
qpid_protocol = tcp
1062 47 Beraldo Leal
qpid_tcp_nodelay = True
1063 47 Beraldo Leal
1064 47 Beraldo Leal
# ============ Filesystem Store Options ========================
1065 47 Beraldo Leal
1066 47 Beraldo Leal
# Directory that the Filesystem backend store
1067 47 Beraldo Leal
# writes image data to
1068 47 Beraldo Leal
filesystem_store_datadir = /var/lib/glance/images/
1069 47 Beraldo Leal
1070 47 Beraldo Leal
# ============ Swift Store Options =============================
1071 47 Beraldo Leal
1072 47 Beraldo Leal
# Version of the authentication service to use
1073 47 Beraldo Leal
# Valid versions are '2' for keystone and '1' for swauth and rackspace
1074 47 Beraldo Leal
swift_store_auth_version = 2
1075 47 Beraldo Leal
1076 47 Beraldo Leal
# Address where the Swift authentication service lives
1077 47 Beraldo Leal
# Valid schemes are 'http://' and 'https://'
1078 47 Beraldo Leal
# If no scheme specified,  default to 'https://'
1079 47 Beraldo Leal
# For swauth, use something like '127.0.0.1:8080/v1.0/'
1080 47 Beraldo Leal
swift_store_auth_address = http://192.168.69.1:35357/v2.0/
1081 47 Beraldo Leal
1082 47 Beraldo Leal
# User to authenticate against the Swift authentication service
1083 47 Beraldo Leal
# If you use Swift authentication service, set it to 'account':'user'
1084 47 Beraldo Leal
# where 'account' is a Swift storage account and 'user'
1085 47 Beraldo Leal
# is a user in that account
1086 47 Beraldo Leal
swift_store_user = service:glance
1087 47 Beraldo Leal
1088 47 Beraldo Leal
# Auth key for the user authenticating against the
1089 47 Beraldo Leal
# Swift authentication service
1090 47 Beraldo Leal
swift_store_key = glancepass
1091 47 Beraldo Leal
1092 47 Beraldo Leal
# Container within the account that the account should use
1093 47 Beraldo Leal
# for storing images in Swift
1094 47 Beraldo Leal
swift_store_container = glance
1095 47 Beraldo Leal
1096 47 Beraldo Leal
# Do we create the container if it does not exist?
1097 47 Beraldo Leal
swift_store_create_container_on_put = True
1098 47 Beraldo Leal
1099 47 Beraldo Leal
# What size, in MB, should Glance start chunking image files
1100 47 Beraldo Leal
# and do a large object manifest in Swift? By default, this is
1101 47 Beraldo Leal
# the maximum object size in Swift, which is 5GB
1102 47 Beraldo Leal
swift_store_large_object_size = 5120
1103 47 Beraldo Leal
1104 47 Beraldo Leal
# When doing a large object manifest, what size, in MB, should
1105 47 Beraldo Leal
# Glance write chunks to Swift? This amount of data is written
1106 47 Beraldo Leal
# to a temporary disk buffer during the process of chunking
1107 47 Beraldo Leal
# the image file, and the default is 200MB
1108 47 Beraldo Leal
swift_store_large_object_chunk_size = 200
1109 47 Beraldo Leal
1110 47 Beraldo Leal
# Whether to use ServiceNET to communicate with the Swift storage servers.
1111 47 Beraldo Leal
# (If you aren't RACKSPACE, leave this False!)
1112 47 Beraldo Leal
#
1113 47 Beraldo Leal
# To use ServiceNET for authentication, prefix hostname of
1114 47 Beraldo Leal
# `swift_store_auth_address` with 'snet-'.
1115 47 Beraldo Leal
# Ex. https://example.com/v1.0/ -> https://snet-example.com/v1.0/
1116 47 Beraldo Leal
swift_enable_snet = False
1117 47 Beraldo Leal
1118 47 Beraldo Leal
# ============ S3 Store Options =============================
1119 47 Beraldo Leal
1120 47 Beraldo Leal
# Address where the S3 authentication service lives
1121 47 Beraldo Leal
# Valid schemes are 'http://' and 'https://'
1122 47 Beraldo Leal
# If no scheme specified,  default to 'http://'
1123 47 Beraldo Leal
s3_store_host = 127.0.0.1:8080/v1.0/
1124 47 Beraldo Leal
1125 47 Beraldo Leal
# User to authenticate against the S3 authentication service
1126 47 Beraldo Leal
s3_store_access_key = <20-char AWS access key>
1127 47 Beraldo Leal
1128 47 Beraldo Leal
# Auth key for the user authenticating against the
1129 47 Beraldo Leal
# S3 authentication service
1130 47 Beraldo Leal
s3_store_secret_key = <40-char AWS secret key>
1131 47 Beraldo Leal
1132 47 Beraldo Leal
# Container within the account that the account should use
1133 47 Beraldo Leal
# for storing images in S3. Note that S3 has a flat namespace,
1134 47 Beraldo Leal
# so you need a unique bucket name for your glance images. An
1135 47 Beraldo Leal
# easy way to do this is append your AWS access key to "glance".
1136 47 Beraldo Leal
# S3 buckets in AWS *must* be lowercased, so remember to lowercase
1137 47 Beraldo Leal
# your AWS access key if you use it in your bucket name below!
1138 47 Beraldo Leal
s3_store_bucket = <lowercased 20-char aws access key>glance
1139 47 Beraldo Leal
1140 47 Beraldo Leal
# Do we create the bucket if it does not exist?
1141 47 Beraldo Leal
s3_store_create_bucket_on_put = False
1142 47 Beraldo Leal
1143 47 Beraldo Leal
# When sending images to S3, the data will first be written to a
1144 47 Beraldo Leal
# temporary buffer on disk. By default the platform's temporary directory
1145 47 Beraldo Leal
# will be used. If required, an alternative directory can be specified here.
1146 47 Beraldo Leal
# s3_store_object_buffer_dir = /path/to/dir
1147 47 Beraldo Leal
1148 47 Beraldo Leal
# ============ RBD Store Options =============================
1149 47 Beraldo Leal
1150 47 Beraldo Leal
# Ceph configuration file path
1151 47 Beraldo Leal
# If using cephx authentication, this file should
1152 47 Beraldo Leal
# include a reference to the right keyring
1153 47 Beraldo Leal
# in a client.<USER> section
1154 47 Beraldo Leal
rbd_store_ceph_conf = /etc/ceph/ceph.conf
1155 47 Beraldo Leal
1156 47 Beraldo Leal
# RADOS user to authenticate as (only applicable if using cephx)
1157 47 Beraldo Leal
rbd_store_user = glance
1158 47 Beraldo Leal
1159 47 Beraldo Leal
# RADOS pool in which images are stored
1160 47 Beraldo Leal
rbd_store_pool = images
1161 47 Beraldo Leal
1162 47 Beraldo Leal
# Images will be chunked into objects of this size (in megabytes).
1163 47 Beraldo Leal
# For best performance, this should be a power of two
1164 47 Beraldo Leal
rbd_store_chunk_size = 8
1165 47 Beraldo Leal
1166 47 Beraldo Leal
# ============ Delayed Delete Options =============================
1167 47 Beraldo Leal
1168 47 Beraldo Leal
# Turn on/off delayed delete
1169 47 Beraldo Leal
delayed_delete = False
1170 47 Beraldo Leal
1171 47 Beraldo Leal
# Delayed delete time in seconds
1172 47 Beraldo Leal
scrub_time = 43200
1173 47 Beraldo Leal
1174 47 Beraldo Leal
# Directory that the scrubber will use to remind itself of what to delete
1175 47 Beraldo Leal
# Make sure this is also set in glance-scrubber.conf
1176 47 Beraldo Leal
scrubber_datadir = /var/lib/glance/scrubber
1177 47 Beraldo Leal
1178 47 Beraldo Leal
# =============== Image Cache Options =============================
1179 47 Beraldo Leal
1180 47 Beraldo Leal
# Base directory that the Image Cache uses
1181 47 Beraldo Leal
image_cache_dir = /var/lib/glance/image-cache/
1182 47 Beraldo Leal
1183 47 Beraldo Leal
[paste_deploy]
1184 47 Beraldo Leal
flavor = keystone
1185 47 Beraldo Leal
</pre>
1186 47 Beraldo Leal
1187 47 Beraldo Leal
*/etc/glance/glance-api-paste.ini*:
1188 47 Beraldo Leal
1189 47 Beraldo Leal
<pre>
1190 47 Beraldo Leal
# Default minimal pipeline
1191 47 Beraldo Leal
[pipeline:glance-api]
1192 47 Beraldo Leal
pipeline = versionnegotiation context apiv1app authtoken
1193 47 Beraldo Leal
1194 47 Beraldo Leal
# Use the following pipeline for keystone auth
1195 47 Beraldo Leal
# i.e. in glance-api.conf:
1196 47 Beraldo Leal
#   [paste_deploy]
1197 47 Beraldo Leal
#   flavor = keystone
1198 47 Beraldo Leal
#
1199 47 Beraldo Leal
[pipeline:glance-api-keystone]
1200 47 Beraldo Leal
pipeline = versionnegotiation authtoken context apiv1app
1201 47 Beraldo Leal
1202 47 Beraldo Leal
# Use the following pipeline to enable transparent caching of image files
1203 47 Beraldo Leal
# i.e. in glance-api.conf:
1204 47 Beraldo Leal
#   [paste_deploy]
1205 47 Beraldo Leal
#   flavor = caching
1206 47 Beraldo Leal
#
1207 47 Beraldo Leal
[pipeline:glance-api-caching]
1208 47 Beraldo Leal
pipeline = versionnegotiation context cache apiv1app
1209 47 Beraldo Leal
1210 47 Beraldo Leal
# Use the following pipeline for keystone auth with caching
1211 47 Beraldo Leal
# i.e. in glance-api.conf:
1212 47 Beraldo Leal
#   [paste_deploy]
1213 47 Beraldo Leal
#   flavor = keystone+caching
1214 47 Beraldo Leal
#
1215 47 Beraldo Leal
[pipeline:glance-api-keystone+caching]
1216 47 Beraldo Leal
pipeline = versionnegotiation authtoken context cache apiv1app
1217 47 Beraldo Leal
1218 47 Beraldo Leal
# Use the following pipeline to enable the Image Cache Management API
1219 47 Beraldo Leal
# i.e. in glance-api.conf:
1220 47 Beraldo Leal
#   [paste_deploy]
1221 47 Beraldo Leal
#   flavor = cachemanagement
1222 47 Beraldo Leal
#
1223 47 Beraldo Leal
[pipeline:glance-api-cachemanagement]
1224 47 Beraldo Leal
pipeline = versionnegotiation context cache cachemanage apiv1app
1225 47 Beraldo Leal
1226 47 Beraldo Leal
# Use the following pipeline for keystone auth with cache management
1227 47 Beraldo Leal
# i.e. in glance-api.conf:
1228 47 Beraldo Leal
#   [paste_deploy]
1229 47 Beraldo Leal
#   flavor = keystone+cachemanagement
1230 47 Beraldo Leal
#
1231 47 Beraldo Leal
[pipeline:glance-api-keystone+cachemanagement]
1232 47 Beraldo Leal
pipeline = versionnegotiation authtoken context cache cachemanage apiv1app
1233 47 Beraldo Leal
1234 47 Beraldo Leal
[app:apiv1app]
1235 47 Beraldo Leal
paste.app_factory = glance.common.wsgi:app_factory
1236 47 Beraldo Leal
glance.app_factory = glance.api.v1.router:API
1237 47 Beraldo Leal
1238 47 Beraldo Leal
[filter:versionnegotiation]
1239 47 Beraldo Leal
paste.filter_factory = glance.common.wsgi:filter_factory
1240 47 Beraldo Leal
glance.filter_factory = glance.api.middleware.version_negotiation:VersionNegotiationFilter
1241 47 Beraldo Leal
1242 47 Beraldo Leal
[filter:cache]
1243 47 Beraldo Leal
paste.filter_factory = glance.common.wsgi:filter_factory
1244 47 Beraldo Leal
glance.filter_factory = glance.api.middleware.cache:CacheFilter
1245 47 Beraldo Leal
1246 47 Beraldo Leal
[filter:cachemanage]
1247 47 Beraldo Leal
paste.filter_factory = glance.common.wsgi:filter_factory
1248 47 Beraldo Leal
glance.filter_factory = glance.api.middleware.cache_manage:CacheManageFilter
1249 47 Beraldo Leal
1250 47 Beraldo Leal
[filter:context]
1251 47 Beraldo Leal
paste.filter_factory = glance.common.wsgi:filter_factory
1252 47 Beraldo Leal
glance.filter_factory = glance.common.context:ContextMiddleware
1253 47 Beraldo Leal
1254 47 Beraldo Leal
[filter:authtoken]
1255 47 Beraldo Leal
paste.filter_factory = keystone.middleware.auth_token:filter_factory
1256 47 Beraldo Leal
service_protocol = http
1257 47 Beraldo Leal
service_host = 192.168.69.1
1258 47 Beraldo Leal
service_port = 5000
1259 47 Beraldo Leal
auth_host = 192.168.69.1
1260 47 Beraldo Leal
auth_port = 35357
1261 47 Beraldo Leal
auth_protocol = http
1262 47 Beraldo Leal
auth_uri = http://192.168.69.1:5000/
1263 47 Beraldo Leal
admin_tenant_name = service
1264 47 Beraldo Leal
admin_user = glance
1265 47 Beraldo Leal
admin_password = glancepass
1266 47 Beraldo Leal
</pre>
1267 48 Beraldo Leal
1268 48 Beraldo Leal
*/etc/glance/glance-registry.conf*:
1269 48 Beraldo Leal
1270 48 Beraldo Leal
<pre>
1271 48 Beraldo Leal
[DEFAULT]
1272 48 Beraldo Leal
# Show more verbose log output (sets INFO log level output)
1273 48 Beraldo Leal
verbose = True
1274 48 Beraldo Leal
1275 48 Beraldo Leal
# Show debugging output in logs (sets DEBUG log level output)
1276 48 Beraldo Leal
debug = True
1277 48 Beraldo Leal
1278 48 Beraldo Leal
# Address to bind the registry server
1279 48 Beraldo Leal
bind_host = 0.0.0.0
1280 48 Beraldo Leal
1281 48 Beraldo Leal
# Port the bind the registry server to
1282 48 Beraldo Leal
bind_port = 9191
1283 48 Beraldo Leal
1284 48 Beraldo Leal
# Log to this file. Make sure you do not set the same log
1285 48 Beraldo Leal
# file for both the API and registry servers!
1286 48 Beraldo Leal
log_file = /var/log/glance/registry.log
1287 48 Beraldo Leal
1288 48 Beraldo Leal
# Backlog requests when creating socket
1289 48 Beraldo Leal
backlog = 4096
1290 48 Beraldo Leal
1291 48 Beraldo Leal
# SQLAlchemy connection string for the reference implementation
1292 48 Beraldo Leal
# registry server. Any valid SQLAlchemy connection string is fine.
1293 48 Beraldo Leal
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
1294 48 Beraldo Leal
sql_connection = mysql://glance:glancepass@192.168.69.1/glance
1295 48 Beraldo Leal
1296 48 Beraldo Leal
# Period in seconds after which SQLAlchemy should reestablish its connection
1297 48 Beraldo Leal
# to the database.
1298 48 Beraldo Leal
#
1299 48 Beraldo Leal
# MySQL uses a default `wait_timeout` of 8 hours, after which it will drop
1300 48 Beraldo Leal
# idle connections. This can result in 'MySQL Gone Away' exceptions. If you
1301 48 Beraldo Leal
# notice this, you can lower this value to ensure that SQLAlchemy reconnects
1302 48 Beraldo Leal
# before MySQL can drop the connection.
1303 48 Beraldo Leal
sql_idle_timeout = 3600
1304 48 Beraldo Leal
1305 48 Beraldo Leal
# Limit the api to return `param_limit_max` items in a call to a container. If
1306 48 Beraldo Leal
# a larger `limit` query param is provided, it will be reduced to this value.
1307 48 Beraldo Leal
api_limit_max = 1000
1308 48 Beraldo Leal
1309 48 Beraldo Leal
# If a `limit` query param is not provided in an api request, it will
1310 48 Beraldo Leal
# default to `limit_param_default`
1311 48 Beraldo Leal
limit_param_default = 25
1312 48 Beraldo Leal
1313 48 Beraldo Leal
# Role used to identify an authenticated user as administrator
1314 48 Beraldo Leal
#admin_role = admin
1315 48 Beraldo Leal
1316 48 Beraldo Leal
# ================= Syslog Options ============================
1317 48 Beraldo Leal
1318 48 Beraldo Leal
# Send logs to syslog (/dev/log) instead of to file specified
1319 48 Beraldo Leal
# by `log_file`
1320 48 Beraldo Leal
use_syslog = True
1321 48 Beraldo Leal
1322 48 Beraldo Leal
# Facility to use. If unset defaults to LOG_USER.
1323 48 Beraldo Leal
# syslog_log_facility = LOG_LOCAL1
1324 48 Beraldo Leal
1325 48 Beraldo Leal
# ================= SSL Options ===============================
1326 48 Beraldo Leal
1327 48 Beraldo Leal
# Certificate file to use when starting registry server securely
1328 48 Beraldo Leal
# cert_file = /path/to/certfile
1329 48 Beraldo Leal
1330 48 Beraldo Leal
# Private key file to use when starting registry server securely
1331 48 Beraldo Leal
# key_file = /path/to/keyfile
1332 48 Beraldo Leal
1333 48 Beraldo Leal
[paste_deploy]
1334 48 Beraldo Leal
flavor = keystone
1335 48 Beraldo Leal
</pre>
1336 48 Beraldo Leal
1337 48 Beraldo Leal
1338 48 Beraldo Leal
*/etc/glance/glance-registry-paste.ini*:
1339 48 Beraldo Leal
1340 48 Beraldo Leal
<pre>
1341 48 Beraldo Leal
# Default minimal pipeline
1342 48 Beraldo Leal
[pipeline:glance-registry]
1343 48 Beraldo Leal
pipeline = context registryapp authtoken
1344 48 Beraldo Leal
1345 48 Beraldo Leal
# Use the following pipeline for keystone auth
1346 48 Beraldo Leal
# i.e. in glance-registry.conf:
1347 48 Beraldo Leal
#   [paste_deploy]
1348 48 Beraldo Leal
#   flavor = keystone
1349 48 Beraldo Leal
#
1350 48 Beraldo Leal
[pipeline:glance-registry-keystone]
1351 48 Beraldo Leal
pipeline = authtoken context registryapp
1352 48 Beraldo Leal
1353 48 Beraldo Leal
[app:registryapp]
1354 48 Beraldo Leal
paste.app_factory = glance.common.wsgi:app_factory
1355 48 Beraldo Leal
glance.app_factory = glance.registry.api.v1:API
1356 48 Beraldo Leal
1357 48 Beraldo Leal
[filter:context]
1358 48 Beraldo Leal
context_class = glance.registry.context.RequestContext
1359 48 Beraldo Leal
paste.filter_factory = glance.common.wsgi:filter_factory
1360 48 Beraldo Leal
glance.filter_factory = glance.common.context:ContextMiddleware
1361 48 Beraldo Leal
1362 48 Beraldo Leal
[filter:authtoken]
1363 48 Beraldo Leal
paste.filter_factory = keystone.middleware.auth_token:filter_factory
1364 48 Beraldo Leal
service_protocol = http
1365 48 Beraldo Leal
service_host = 192.168.69.1
1366 48 Beraldo Leal
service_port = 5000
1367 48 Beraldo Leal
auth_host = 192.168.69.1
1368 48 Beraldo Leal
auth_port = 35357
1369 48 Beraldo Leal
auth_protocol = http
1370 48 Beraldo Leal
auth_uri = http://192.168.69.1:5000/
1371 48 Beraldo Leal
admin_tenant_name = service
1372 48 Beraldo Leal
admin_user = glance
1373 48 Beraldo Leal
admin_password = glancepass
1374 49 Beraldo Leal
</pre>
1375 48 Beraldo Leal
1376 49 Beraldo Leal
*/etc/glance/glance-scrubber.conf*:
1377 49 Beraldo Leal
1378 49 Beraldo Leal
<pre>
1379 49 Beraldo Leal
[DEFAULT]
1380 49 Beraldo Leal
# Show more verbose log output (sets INFO log level output)
1381 49 Beraldo Leal
verbose = True
1382 49 Beraldo Leal
1383 49 Beraldo Leal
# Show debugging output in logs (sets DEBUG log level output)
1384 49 Beraldo Leal
debug = False
1385 49 Beraldo Leal
1386 49 Beraldo Leal
# Log to this file. Make sure you do not set the same log
1387 49 Beraldo Leal
# file for both the API and registry servers!
1388 49 Beraldo Leal
log_file = /var/log/glance/scrubber.log
1389 49 Beraldo Leal
1390 49 Beraldo Leal
# Send logs to syslog (/dev/log) instead of to file specified by `log_file`
1391 49 Beraldo Leal
use_syslog = False
1392 49 Beraldo Leal
1393 49 Beraldo Leal
# Should we run our own loop or rely on cron/scheduler to run us
1394 49 Beraldo Leal
daemon = False
1395 49 Beraldo Leal
1396 49 Beraldo Leal
# Loop time between checking for new items to schedule for delete
1397 49 Beraldo Leal
wakeup_time = 300
1398 49 Beraldo Leal
1399 49 Beraldo Leal
sql_connection = mysql://glance:glancepass@192.168.69.1/glance
1400 49 Beraldo Leal
1401 49 Beraldo Leal
# Directory that the scrubber will use to remind itself of what to delete
1402 49 Beraldo Leal
# Make sure this is also set in glance-api.conf
1403 49 Beraldo Leal
scrubber_datadir = /var/lib/glance/scrubber
1404 49 Beraldo Leal
1405 49 Beraldo Leal
# Only one server in your deployment should be designated the cleanup host
1406 49 Beraldo Leal
cleanup_scrubber = False
1407 49 Beraldo Leal
1408 49 Beraldo Leal
# pending_delete items older than this time are candidates for cleanup
1409 49 Beraldo Leal
cleanup_scrubber_time = 86400
1410 49 Beraldo Leal
1411 49 Beraldo Leal
# Address to find the registry server for cleanups
1412 49 Beraldo Leal
registry_host = 0.0.0.0
1413 49 Beraldo Leal
1414 49 Beraldo Leal
# Port the registry server is listening on
1415 49 Beraldo Leal
registry_port = 9191
1416 48 Beraldo Leal
</pre>
1417 50 Beraldo Leal
1418 50 Beraldo Leal
h2. Sincronizando o banco e reiniciando os servicos:
1419 50 Beraldo Leal
1420 50 Beraldo Leal
<pre>
1421 50 Beraldo Leal
# glance-manage version_control 0
1422 50 Beraldo Leal
# glance-manage db_sync
1423 50 Beraldo Leal
# service glance-registry restart
1424 50 Beraldo Leal
# service glance-api restart
1425 50 Beraldo Leal
</pre>
1426 50 Beraldo Leal
1427 50 Beraldo Leal
h2. Testando a instalacao do Glance:
1428 50 Beraldo Leal
1429 52 Beraldo Leal
O arquivo _/root/openstackrc_ recebera novas variaveis de ambiente. Ele deve ficar assim:
1430 52 Beraldo Leal
<pre>
1431 52 Beraldo Leal
# Used for Keystone
1432 52 Beraldo Leal
export SERVICE_ENDPOINT=http://192.168.69.1:35357/v2.0/
1433 52 Beraldo Leal
export SERVICE_TOKEN=012345SECRET99TOKEN012345
1434 52 Beraldo Leal
1435 52 Beraldo Leal
# Used for swift
1436 52 Beraldo Leal
export ST_AUTH=http://192.168.69.1:5000/v2.0
1437 52 Beraldo Leal
export ST_USER=openstackDemo:admin
1438 52 Beraldo Leal
export ST_KEY=adminpass
1439 52 Beraldo Leal
export OS_REGION_NAME=RegionOne
1440 52 Beraldo Leal
1441 52 Beraldo Leal
# Used for glance
1442 52 Beraldo Leal
export OS_USERNAME=admin
1443 52 Beraldo Leal
export OS_TENANT_NAME=openstackDemo
1444 52 Beraldo Leal
export OS_PASSWORD=adminpass
1445 52 Beraldo Leal
export OS_AUTH_URL=http://192.168.69.1:5000/v2.0/
1446 52 Beraldo Leal
export OS_REGION_NAME=RegionOne
1447 52 Beraldo Leal
</pre>
1448 52 Beraldo Leal
1449 52 Beraldo Leal
1450 50 Beraldo Leal
Obtenha imagem de teste:
1451 50 Beraldo Leal
<pre>
1452 50 Beraldo Leal
mkdir /tmp/images
1453 50 Beraldo Leal
cd /tmp/images/
1454 50 Beraldo Leal
wget http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz
1455 50 Beraldo Leal
tar -zxvf ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz
1456 50 Beraldo Leal
</pre>
1457 50 Beraldo Leal
1458 50 Beraldo Leal
Suba as imagens, fazendo as devidas substituicoes:
1459 50 Beraldo Leal
1460 50 Beraldo Leal
<pre>
1461 50 Beraldo Leal
# cd /tmp/images/
1462 50 Beraldo Leal
# glance add name="tty-linux-kernel" disk_format=aki container_format=aki < ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz 
1463 50 Beraldo Leal
# glance add name="tty-linux-ramdisk" disk_format=ari container_format=ari < ttylinux-uec-amd64-12.1_2.6.35-22_1-loader 
1464 50 Beraldo Leal
# glance add name="tty-linux" disk_format=ami container_format=ami kernel_id=[kernel_image_id] ramdisk_id=[kernel_ramdisk_image_id] < ttylinux-uec-amd64-12.1_2.6.35-22_1.img 
1465 50 Beraldo Leal
</pre>
1466 51 Beraldo Leal
1467 51 Beraldo Leal
Liste as imagens:
1468 51 Beraldo Leal
1469 51 Beraldo Leal
<pre>
1470 51 Beraldo Leal
# glance index
1471 51 Beraldo Leal
</pre>