Ambiente » History » Version 71
Beraldo Leal, 10 Aug 2012 12:20
| 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 | 59 | Beraldo Leal | |
| 21 | 55 | Beraldo Leal | This document refers to the installation manual of the main components of |
| 22 | 55 | Beraldo Leal | OpenStack. The version of each component used can be found in the respective |
| 23 | 55 | Beraldo Leal | sections of the components. |
| 24 | 1 | Beraldo Leal | |
| 25 | 55 | Beraldo Leal | This document was produced by the Center for Scientific Computing, UNESP, with |
| 26 | 55 | Beraldo Leal | funding from Intel and UNESP. |
| 27 | 1 | Beraldo Leal | |
| 28 | 1 | Beraldo Leal | OpenStack OpenStack is a global collaboration of developers and cloud computing |
| 29 | 58 | Beraldo Leal | technologists producing the ubiquitous open source cloud computing platform for |
| 30 | 55 | Beraldo Leal | public and private clouds. The project aims to deliver solutions for all types |
| 31 | 55 | Beraldo Leal | of clouds by being simple to implement, massively scalable, and feature rich. |
| 32 | 55 | Beraldo Leal | The technology consists of a series of interrelated projects delivering various |
| 33 | 55 | Beraldo Leal | components for a cloud infrastructure solution. |
| 34 | 1 | Beraldo Leal | |
| 35 | 1 | Beraldo Leal | The OpenStack project is divided into sub projects that have a specific role in |
| 36 | 55 | Beraldo Leal | the big picture. |
| 37 | 1 | Beraldo Leal | |
| 38 | 58 | Beraldo Leal | The main components are: Cloud Compute (Nova) Cloud Storage (Swift), Image |
| 39 | 55 | Beraldo Leal | registration and delivery (Glance), Identity (Keystone) and Dashboard |
| 40 | 55 | Beraldo Leal | (Horizon). |
| 41 | 1 | Beraldo Leal | |
| 42 | 1 | Beraldo Leal | Each component is independent of each other and can be installed on separate |
| 43 | 1 | Beraldo Leal | machines, or all in one. In the environment of UNESP, OpenStack was installed in |
| 44 | 55 | Beraldo Leal | seven machines, described in section "Environment used." |
| 45 | 56 | Beraldo Leal | |
| 46 | 58 | Beraldo Leal | This document is modified version of OpenStack Install and Deploy Manual [1] |
| 47 | 58 | Beraldo Leal | with minor adjustments and changes to resolve problems encountered during |
| 48 | 58 | Beraldo Leal | installation and adjustment to the environment in which it was installed. |
| 49 | 55 | Beraldo Leal | |
| 50 | 58 | Beraldo Leal | |
| 51 | 55 | Beraldo Leal | h1. OpenStack Core Components |
| 52 | 55 | Beraldo Leal | |
| 53 | 55 | Beraldo Leal | OpenStack is a collection of open source technology that provides massively |
| 54 | 55 | Beraldo Leal | scalable open source cloud computing software. Currently OpenStack develops two |
| 55 | 55 | Beraldo Leal | related projects: OpenStack Compute, which offers computing power through |
| 56 | 55 | Beraldo Leal | virtual machine and network management, and OpenStack Object Storage which is |
| 57 | 55 | Beraldo Leal | software for redundant, scalable object storage capacity. Closely related to the |
| 58 | 55 | Beraldo Leal | OpenStack Compute project is the Image Service project, named Glance. OpenStack |
| 59 | 55 | Beraldo Leal | can be used by corporations, service providers, VARS, SMBs, researchers, and |
| 60 | 55 | Beraldo Leal | global data centers looking to deploy large-scale cloud deployments for private |
| 61 | 55 | Beraldo Leal | or public clouds. |
| 62 | 55 | Beraldo Leal | |
| 63 | 55 | Beraldo Leal | The main components are: Cloud Compute (Nova) Cloud Storage (Swift), Image |
| 64 | 1 | Beraldo Leal | registration and delivery (Glance), Identity (Keystone) and Dashboard |
| 65 | 1 | Beraldo Leal | (Horizon). |
| 66 | 1 | Beraldo Leal | |
| 67 | 1 | Beraldo Leal | They are presented here in an order for educational purposes only to a |
| 68 | 1 | Beraldo Leal | straightforward procedure for installation. But following a brief description of |
| 69 | 1 | Beraldo Leal | each component. |
| 70 | 1 | Beraldo Leal | |
| 71 | 58 | Beraldo Leal | h2. Keystone |
| 72 | 58 | Beraldo Leal | |
| 73 | 58 | Beraldo Leal | Keystone is an OpenStack project that provides Identity, Token, Catalog and |
| 74 | 58 | Beraldo Leal | Policy services for use specifically by projects in the OpenStack family. It |
| 75 | 58 | Beraldo Leal | implements OpenStack’s Identity API. |
| 76 | 58 | Beraldo Leal | |
| 77 | 58 | Beraldo Leal | |
| 78 | 55 | Beraldo Leal | h2. Cloud Compute (Nova) |
| 79 | 55 | Beraldo Leal | |
| 80 | 55 | Beraldo Leal | Nova is the project name for OpenStack Compute, a cloud computing fabric |
| 81 | 55 | Beraldo Leal | controller, the main part of an IaaS system. Individuals and organizations can |
| 82 | 55 | Beraldo Leal | use Nova to host and manage their own cloud computing systems. Nova originated |
| 83 | 55 | Beraldo Leal | as a project out of NASA Ames Research Laboratory. |
| 84 | 55 | Beraldo Leal | |
| 85 | 55 | Beraldo Leal | h2. Object Storage (Swift) |
| 86 | 55 | Beraldo Leal | |
| 87 | 55 | Beraldo Leal | OpenStack Object Storage (Swift) is a system to store objects in a massively |
| 88 | 55 | Beraldo Leal | scalable large capacity system with built-in redundancy and failover. Object |
| 89 | 55 | Beraldo Leal | Storage has a variety of applications, such as backing up or archiving data, |
| 90 | 55 | Beraldo Leal | serving graphics or videos (streaming data to a user's browser), storing |
| 91 | 55 | Beraldo Leal | secondary or tertiary static data, developing new applications with data |
| 92 | 55 | Beraldo Leal | storage integration, storing data when predicting storage capacity is difficult, |
| 93 | 55 | Beraldo Leal | and creating the elasticity and flexibility of cloud-based storage for your web |
| 94 | 55 | Beraldo Leal | applications. |
| 95 | 1 | Beraldo Leal | |
| 96 | 1 | Beraldo Leal | h2. Image Service (Glance) |
| 97 | 1 | Beraldo Leal | |
| 98 | 1 | Beraldo Leal | OpenStack Image Service (Glance) is a lookup and retrieval system for virtual |
| 99 | 1 | Beraldo Leal | machine images. It can be configured in three ways: using OpenStack Object Store |
| 100 | 1 | Beraldo Leal | to store images; using Amazon's Simple Storage Solution (S3) storage directly; |
| 101 | 1 | Beraldo Leal | or using S3 storage with Object Store as the intermediate for S3 access. |
| 102 | 58 | Beraldo Leal | |
| 103 | 58 | Beraldo Leal | |
| 104 | 58 | Beraldo Leal | h1. Environment Proposed |
| 105 | 58 | Beraldo Leal | |
| 106 | 58 | Beraldo Leal | This document aims to guide you in setting up a test environment or development. |
| 107 | 58 | Beraldo Leal | The original documentation suggests many machines. To install OpenStack here, |
| 108 | 58 | Beraldo Leal | you will need only one or two machines. |
| 109 | 58 | Beraldo Leal | |
| 110 | 58 | Beraldo Leal | You can install all services on one machine only (all-in-one). Or you can |
| 111 | 58 | Beraldo Leal | install OpenStack controller (all services except the nova-compute) on machine A |
| 112 | 58 | Beraldo Leal | and a compute cloud controller on machine B. |
| 113 | 58 | Beraldo Leal | |
| 114 | 58 | Beraldo Leal | For a production environment it is advisable to separate the elements to ensure |
| 115 | 58 | Beraldo Leal | a high availability and redundancy. |
| 116 | 58 | Beraldo Leal | |
| 117 | 58 | Beraldo Leal | Settings used in this document: |
| 118 | 58 | Beraldo Leal | |
| 119 | 58 | Beraldo Leal | - Cloud Controller: |
| 120 | 58 | Beraldo Leal | |
| 121 | 58 | Beraldo Leal | |
| 122 | 58 | Beraldo Leal | - Cloud Computer Node: |
| 123 | 58 | Beraldo Leal | |
| 124 | 58 | Beraldo Leal | All machines are installed with Ubuntu Server 12.04 LTS. |
| 125 | 58 | Beraldo Leal | |
| 126 | 58 | Beraldo Leal | h1. Initial configuration |
| 127 | 58 | Beraldo Leal | |
| 128 | 58 | Beraldo Leal | Before starting the installation and configuration of each component must first |
| 129 | 58 | Beraldo Leal | to make some adjustments. |
| 130 | 58 | Beraldo Leal | |
| 131 | 58 | Beraldo Leal | h2. Network Configuration |
| 132 | 58 | Beraldo Leal | |
| 133 | 58 | Beraldo Leal | For both conserving network resources and ensuring that network administrators |
| 134 | 58 | Beraldo Leal | understand the needs for networks and public IP addresses for accessing the APIs |
| 135 | 58 | Beraldo Leal | and VMs as necessary, this section offers recommendations and required minimum |
| 136 | 58 | Beraldo Leal | sizes. Throughput of at least 1000 Mbps is suggested. |
| 137 | 58 | Beraldo Leal | |
| 138 | 58 | Beraldo Leal | For OpenStack Compute, networking is configured on multi-node installations |
| 139 | 58 | Beraldo Leal | between the physical machines on a single subnet. For networking between virtual |
| 140 | 58 | Beraldo Leal | machine instances, three network options are available: flat, DHCP, and VLAN. |
| 141 | 58 | Beraldo Leal | Two NICs (Network Interface Cards) are recommended on the server running |
| 142 | 58 | Beraldo Leal | nova-network. |
| 143 | 58 | Beraldo Leal | |
| 144 | 58 | Beraldo Leal | Management Network (RFC1918 IP Range, not publicly routable): This network is |
| 145 | 58 | Beraldo Leal | utilized for all inter-server communications within the cloud infrastructure. |
| 146 | 58 | Beraldo Leal | Recommended size: 255 IPs (CIDR /24) |
| 147 | 58 | Beraldo Leal | |
| 148 | 58 | Beraldo Leal | Public Network (Publicly routable IP range): This network is utilized for |
| 149 | 58 | Beraldo Leal | providing Public IP accessibility to the API endpoints within the cloud |
| 150 | 58 | Beraldo Leal | infrastructure. Minimum size: 8 IPs (CIDR /29) |
| 151 | 58 | Beraldo Leal | |
| 152 | 58 | Beraldo Leal | VM Network (RFC1918 IP Range, not publicly routable): This network is utilized |
| 153 | 58 | Beraldo Leal | for providing primary IP addresses to the cloud instances. Recommended size: |
| 154 | 58 | Beraldo Leal | 1024 IPs (CIDR /22) |
| 155 | 58 | Beraldo Leal | |
| 156 | 58 | Beraldo Leal | Floating IP network (Publicly routable IP Range): This network is utilized for |
| 157 | 58 | Beraldo Leal | providing Public IP accessibility to selected cloud instances. Minimum size: |
| 158 | 58 | Beraldo Leal | 16 IPs (CIDR /28) |
| 159 | 58 | Beraldo Leal | |
| 160 | 58 | Beraldo Leal | In this installation we will use eth0 to public interface and eth1 for |
| 161 | 58 | Beraldo Leal | management interface. |
| 162 | 58 | Beraldo Leal | |
| 163 | 58 | Beraldo Leal | h2. Installing Network Time Protocol (NTP) |
| 164 | 58 | Beraldo Leal | |
| 165 | 58 | Beraldo Leal | To keep all the services in sync, you need to install NTP, and if you do a |
| 166 | 58 | Beraldo Leal | multi-node configuration you will configure one server to be the reference |
| 167 | 58 | Beraldo Leal | server. |
| 168 | 58 | Beraldo Leal | |
| 169 | 58 | Beraldo Leal | # apt-get install -y ntp |
| 170 | 58 | Beraldo Leal | |
| 171 | 58 | Beraldo Leal | Set up the NTP server on your controller node so that it receives data by |
| 172 | 58 | Beraldo Leal | modifying the ntp.conf file and restarting the service. As root: |
| 173 | 58 | Beraldo Leal | |
| 174 | 58 | Beraldo Leal | # sed -i 's/server ntp.ubuntu.com/server ntp.ubuntu.com\nserver 127.127.1.0\ |
| 175 | 58 | Beraldo Leal | nfudge 127.127.1.0 stratum 10/g' /etc/ntp.conf |
| 176 | 58 | Beraldo Leal | # service ntp restart |
| 177 | 58 | Beraldo Leal | |
| 178 | 58 | Beraldo Leal | Set up the NTP client on your compute node so that the time between controller |
| 179 | 58 | Beraldo Leal | node and compute node is synchronized. Do the following as a cron job on compute |
| 180 | 58 | Beraldo Leal | node. |
| 181 | 58 | Beraldo Leal | |
| 182 | 58 | Beraldo Leal | # ntpdate 'controllernode ip' |
| 183 | 58 | Beraldo Leal | # hwclock -w |
| 184 | 58 | Beraldo Leal | |
| 185 | 58 | Beraldo Leal | h2. Storage |
| 186 | 58 | Beraldo Leal | |
| 187 | 58 | Beraldo Leal | Many cloud computing use cases require persistent remote storage. Storage |
| 188 | 58 | Beraldo Leal | solutions are often divided into three categories: object storage, block |
| 189 | 58 | Beraldo Leal | storage, and file storage. |
| 190 | 58 | Beraldo Leal | |
| 191 | 58 | Beraldo Leal | Here we will use a "object storage" and a "block storage". |
| 192 | 58 | Beraldo Leal | |
| 193 | 58 | Beraldo Leal | h3. Object storage (swift) |
| 194 | 58 | Beraldo Leal | |
| 195 | 58 | Beraldo Leal | With object storage, files are exposed through an HTTP interface, typically with |
| 196 | 58 | Beraldo Leal | a REST API. All client data access is done at the user level: the operating |
| 197 | 58 | Beraldo Leal | system is unaware of the presence of the remote storage system. In OpenStack, |
| 198 | 58 | Beraldo Leal | the Object Storage service provides this type of functionality. Users access and |
| 199 | 58 | Beraldo Leal | modify files by making HTTP requests. Because the data accesss interface provided |
| 200 | 58 | Beraldo Leal | by an object storage system is at a low level of abstraction, people often build |
| 201 | 58 | Beraldo Leal | on top of object storage to build file-based applications that provide a higher |
| 202 | 58 | Beraldo Leal | level of abstraction. For example, the OpenStack Image service can be configured |
| 203 | 58 | Beraldo Leal | to use the Object Storage service as a backend. Another use for object storage |
| 204 | 58 | Beraldo Leal | solutions is as a content delivery network (CDN) for hosting static web content |
| 205 | 58 | Beraldo Leal | (e.g., images, and media files), since object storage already provides an HTTP |
| 206 | 58 | Beraldo Leal | interface. |
| 207 | 58 | Beraldo Leal | |
| 208 | 58 | Beraldo Leal | h3. Block storage (SAN) |
| 209 | 58 | Beraldo Leal | |
| 210 | 58 | Beraldo Leal | With block storage, files are exposed through a low-level computer bus interface |
| 211 | 58 | Beraldo Leal | such as SCSI or ATA, that is accessible over the network. Block storage is |
| 212 | 58 | Beraldo Leal | synonymous with SAN (storage area network). Clients access data through the |
| 213 | 58 | Beraldo Leal | operating system at the device level: users access the data by mounting the |
| 214 | 58 | Beraldo Leal | remote device in a similar manner to how they would mount a local, physical disk |
| 215 | 58 | Beraldo Leal | (e.g., using the "mount" command in Linux). In OpenStack, the nova-volume |
| 216 | 58 | Beraldo Leal | service that forms part of the Compute service provides this type of |
| 217 | 58 | Beraldo Leal | functionality, and uses iSCSI to expose remote data as a SCSI disk that is |
| 218 | 58 | Beraldo Leal | attached to the network. |
| 219 | 58 | Beraldo Leal | |
| 220 | 58 | Beraldo Leal | Because the data is exposed as a physical device, the end-user is responsible |
| 221 | 58 | Beraldo Leal | for creating partitions and formatting the exposed disk device. In addition, |
| 222 | 58 | Beraldo Leal | in OpenStack Compute a device can only be attached to one server at a time, so |
| 223 | 58 | Beraldo Leal | block storage cannot be used for to share data across virtual machine instances |
| 224 | 58 | Beraldo Leal | concurrently. |
| 225 | 58 | Beraldo Leal | |
| 226 | 58 | Beraldo Leal | h1. Installation Assumptions |
| 227 | 58 | Beraldo Leal | |
| 228 | 58 | Beraldo Leal | OpenStack Compute has a large number of configuration options. To simplify this |
| 229 | 58 | Beraldo Leal | installation guide, we make a number of assumptions about the target |
| 230 | 58 | Beraldo Leal | installation: |
| 231 | 58 | Beraldo Leal | |
| 232 | 58 | Beraldo Leal | * You have a collection of compute nodes, each installed with Ubuntu Server |
| 233 | 58 | Beraldo Leal | 12.04 |
| 234 | 58 | Beraldo Leal | |
| 235 | 58 | Beraldo Leal | * You have designated one of the nodes as the Cloud Controller, which will run |
| 236 | 58 | Beraldo Leal | all of the services (RabbitMQ, MySQL, Identity, Image, nova-api, nova-network, |
| 237 | 58 | Beraldo Leal | nova-scheduler, nova-volume) except for nova-compute. |
| 238 | 58 | Beraldo Leal | |
| 239 | 58 | Beraldo Leal | * The disk partitions on your cloud controller are being managed by the Logical |
| 240 | 58 | Beraldo Leal | Volume Manager (LVM) |
| 241 | 58 | Beraldo Leal | |
| 242 | 58 | Beraldo Leal | * Your Cloud Controller has an LVM volume group named "nova-volumes" to provide |
| 243 | 58 | Beraldo Leal | persistent storage to guest VMs. Either create this during the installation or |
| 244 | 58 | Beraldo Leal | leave some free space to create it prior to installing nova services. |
| 245 | 58 | Beraldo Leal | |
| 246 | 58 | Beraldo Leal | * Ensure that the server can resolve its own hostname, otherwise you may have |
| 247 | 58 | Beraldo Leal | problems if you are using RabbitMQ as the messaging backend (RabbitMQ is the default |
| 248 | 58 | Beraldo Leal | messaging back-end on Ubuntu, on Fedora the default backend is Qpid). |
| 249 | 58 | Beraldo Leal | |
| 250 | 58 | Beraldo Leal | * 192.168.69.1 is the primary IP for our controller host on eth0 and |
| 251 | 58 | Beraldo Leal | 192.168.69.2 is the primary IP for our computer node on eth0. |
| 252 | 58 | Beraldo Leal | |
| 253 | 58 | Beraldo Leal | * FlatDHCP with a single network interface. |
| 254 | 58 | Beraldo Leal | |
| 255 | 58 | Beraldo Leal | * KVM as the hypervisor. |
| 256 | 58 | Beraldo Leal | |
| 257 | 58 | Beraldo Leal | * Ensure the operating system is up-to-date by running apt-get update and |
| 258 | 58 | Beraldo Leal | apt-get upgrade prior to the installation. |
| 259 | 58 | Beraldo Leal | |
| 260 | 58 | Beraldo Leal | * Ensure that all hosts are with ntp and correct time. |
| 261 | 58 | Beraldo Leal | |
| 262 | 58 | Beraldo Leal | |
| 263 | 58 | Beraldo Leal | This installation process walks through installing a cloud controller node and a |
| 264 | 58 | Beraldo Leal | compute node using a set of packages that are known to work with each other. |
| 265 | 58 | Beraldo Leal | The cloud controller node contains all the nova- services including the API |
| 266 | 58 | Beraldo Leal | server and the database server. The compute node needs to run only the |
| 267 | 58 | Beraldo Leal | nova-compute service. You only need one nova-network service running in a |
| 268 | 58 | Beraldo Leal | multi-node install. |
| 269 | 53 | Beraldo Leal | |
| 270 | 60 | Beraldo Leal | h1. Keystone |
| 271 | 1 | Beraldo Leal | |
| 272 | 60 | Beraldo Leal | The OpenStack Identity service manages users, tenants (accounts or projects) and |
| 273 | 60 | Beraldo Leal | offers a common identity system for all the OpenStack components. |
| 274 | 60 | Beraldo Leal | |
| 275 | 60 | Beraldo Leal | The Identity services has two primary functions: |
| 276 | 60 | Beraldo Leal | |
| 277 | 60 | Beraldo Leal | 1. User management: keep track of users and what they are permitted to do |
| 278 | 60 | Beraldo Leal | 2. Service catalog: Provide a catalog of what services are available and where |
| 279 | 60 | Beraldo Leal | their API endpoints are located. |
| 280 | 60 | Beraldo Leal | |
| 281 | 60 | Beraldo Leal | h2. User management |
| 282 | 60 | Beraldo Leal | |
| 283 | 60 | Beraldo Leal | The three main concepts of Identity user management are: |
| 284 | 60 | Beraldo Leal | |
| 285 | 60 | Beraldo Leal | * Users |
| 286 | 60 | Beraldo Leal | * Tenants |
| 287 | 60 | Beraldo Leal | * Roles |
| 288 | 60 | Beraldo Leal | |
| 289 | 60 | Beraldo Leal | A user represents a human user, and has associated information such as username, |
| 290 | 60 | Beraldo Leal | password and email. |
| 291 | 60 | Beraldo Leal | |
| 292 | 60 | Beraldo Leal | |
| 293 | 60 | Beraldo Leal | A tenant can be thought of as a project, group, or organization. Whenever you |
| 294 | 60 | Beraldo Leal | make requests to OpenStack services, you must specify a tenant. For example, if |
| 295 | 60 | Beraldo Leal | you query the Compute service for a list of running instances, you will receive |
| 296 | 60 | Beraldo Leal | a list of all of the running instances in the tenant you specified in your |
| 297 | 60 | Beraldo Leal | query. |
| 298 | 60 | Beraldo Leal | |
| 299 | 60 | Beraldo Leal | A role captures what operations a user is permitted to perform in a given tenant. |
| 300 | 60 | Beraldo Leal | |
| 301 | 60 | Beraldo Leal | h3. Service management |
| 302 | 60 | Beraldo Leal | |
| 303 | 60 | Beraldo Leal | The two main concepts of Identity service management are: |
| 304 | 60 | Beraldo Leal | |
| 305 | 60 | Beraldo Leal | * Services |
| 306 | 60 | Beraldo Leal | * Endpoints |
| 307 | 60 | Beraldo Leal | |
| 308 | 60 | Beraldo Leal | The Identity service also maintains a user that corresponds to each service |
| 309 | 60 | Beraldo Leal | (e.g., a user named nova, for the Compute service) and a special service tenant, |
| 310 | 60 | Beraldo Leal | which is called service. |
| 311 | 60 | Beraldo Leal | |
| 312 | 60 | Beraldo Leal | |
| 313 | 60 | Beraldo Leal | h3. Installing Keystone |
| 314 | 30 | Beraldo Leal | |
| 315 | 1 | Beraldo Leal | <pre> |
| 316 | 18 | Beraldo Leal | # apt-get install keystone |
| 317 | 18 | Beraldo Leal | </pre> |
| 318 | 18 | Beraldo Leal | |
| 319 | 18 | Beraldo Leal | Delete the keystone.db file created in the /var/lib/keystone directory. |
| 320 | 18 | Beraldo Leal | |
| 321 | 18 | Beraldo Leal | <pre> |
| 322 | 18 | Beraldo Leal | # rm /var/lib/keystone/keystone.db |
| 323 | 18 | Beraldo Leal | </pre> |
| 324 | 18 | Beraldo Leal | |
| 325 | 18 | Beraldo Leal | Install mysql: |
| 326 | 18 | Beraldo Leal | |
| 327 | 18 | Beraldo Leal | <pre> |
| 328 | 18 | Beraldo Leal | # apt-get install python-mysqldb mysql-server |
| 329 | 11 | Beraldo Leal | </pre> |
| 330 | 19 | Beraldo Leal | |
| 331 | 19 | Beraldo Leal | Use sed to edit /etc/mysql/my.cnf to change bind-address from localhost |
| 332 | 19 | Beraldo Leal | (127.0.0.1) to any (0.0.0.0) and restart the mysql service, as root: |
| 333 | 19 | Beraldo Leal | |
| 334 | 19 | Beraldo Leal | <pre> |
| 335 | 19 | Beraldo Leal | # sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf |
| 336 | 19 | Beraldo Leal | # service mysql restart |
| 337 | 19 | Beraldo Leal | </pre> |
| 338 | 19 | Beraldo Leal | |
| 339 | 19 | Beraldo Leal | To configure the MySQL database, create the keystone database. |
| 340 | 19 | Beraldo Leal | |
| 341 | 19 | Beraldo Leal | <pre> |
| 342 | 19 | Beraldo Leal | # mysql -u root -p |
| 343 | 19 | Beraldo Leal | mysql> CREATE DATABASE keystone; |
| 344 | 71 | Beraldo Leal | mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystonepass'; |
| 345 | 19 | Beraldo Leal | mysql> FLUSH PRIVILEGES; |
| 346 | 19 | Beraldo Leal | mysql> quit; |
| 347 | 19 | Beraldo Leal | </pre> |
| 348 | 20 | Beraldo Leal | |
| 349 | 20 | Beraldo Leal | Edit _*keystone.conf*_ to use mysql: |
| 350 | 20 | Beraldo Leal | |
| 351 | 20 | Beraldo Leal | <pre> |
| 352 | 1 | Beraldo Leal | [sql] |
| 353 | 20 | Beraldo Leal | connection = mysql://keystone:keystonepass@192.168.69.1/keystone |
| 354 | 20 | Beraldo Leal | </pre> |
| 355 | 21 | Beraldo Leal | |
| 356 | 21 | Beraldo Leal | Change in _*keystone.conf*_ the ADMIN_TOKEN: |
| 357 | 21 | Beraldo Leal | |
| 358 | 21 | Beraldo Leal | <pre> |
| 359 | 20 | Beraldo Leal | admin_token = 012345SECRET99TOKEN012345 |
| 360 | 21 | Beraldo Leal | </pre> |
| 361 | 1 | Beraldo Leal | |
| 362 | 61 | Beraldo Leal | Restart the keystone service and populate with initial data: |
| 363 | 22 | Beraldo Leal | |
| 364 | 22 | Beraldo Leal | <pre> |
| 365 | 22 | Beraldo Leal | # service keystone restart |
| 366 | 22 | Beraldo Leal | # keystone-manage db_sync |
| 367 | 1 | Beraldo Leal | </pre> |
| 368 | 1 | Beraldo Leal | |
| 369 | 1 | Beraldo Leal | h2. Configuring Services to work with Keystone |
| 370 | 23 | Beraldo Leal | |
| 371 | 61 | Beraldo Leal | Create the file _*/root/openstackrc*_, with theses lines |
| 372 | 23 | Beraldo Leal | |
| 373 | 23 | Beraldo Leal | <pre> |
| 374 | 1 | Beraldo Leal | export SERVICE_ENDPOINT=http://192.168.69.1:35357/v2.0/ |
| 375 | 23 | Beraldo Leal | export SERVICE_TOKEN=012345SECRET99TOKEN012345 |
| 376 | 23 | Beraldo Leal | </pre> |
| 377 | 23 | Beraldo Leal | |
| 378 | 61 | Beraldo Leal | Theses environment variables are useful to avoid execute commands with long args, like --token or --endpoint. |
| 379 | 1 | Beraldo Leal | |
| 380 | 61 | Beraldo Leal | Reload the file: |
| 381 | 23 | Beraldo Leal | |
| 382 | 23 | Beraldo Leal | <pre> |
| 383 | 23 | Beraldo Leal | # source /root/openstackrc |
| 384 | 1 | Beraldo Leal | </pre> |
| 385 | 23 | Beraldo Leal | |
| 386 | 61 | Beraldo Leal | Create the *tenants*: _openstackDemo_ and _service_: |
| 387 | 24 | Beraldo Leal | |
| 388 | 24 | Beraldo Leal | <pre> |
| 389 | 24 | Beraldo Leal | # keystone tenant-create --name openstackDemo --description "Default Tenant" --enabled true |
| 390 | 1 | Beraldo Leal | # keystone tenant-create --name service --description "Service Tenant" --enabled true |
| 391 | 24 | Beraldo Leal | </pre> |
| 392 | 24 | Beraldo Leal | |
| 393 | 61 | Beraldo Leal | Create the *user* _admin_, replace the tenant_id by openStackDemo tenant_id: |
| 394 | 27 | Beraldo Leal | |
| 395 | 1 | Beraldo Leal | <pre> |
| 396 | 25 | Beraldo Leal | # keystone user-create --tenant_id 9c401c9d2b9d41bcabda6919d4aec63a --name admin --pass adminpass --enabled true |
| 397 | 1 | Beraldo Leal | </pre> |
| 398 | 1 | Beraldo Leal | |
| 399 | 61 | Beraldo Leal | Create the *roles*: _admin_ and _user_: |
| 400 | 26 | Beraldo Leal | |
| 401 | 26 | Beraldo Leal | <pre> |
| 402 | 1 | Beraldo Leal | # keystone role-create --name admin |
| 403 | 26 | Beraldo Leal | # keystone role-create --name user |
| 404 | 1 | Beraldo Leal | </pre> |
| 405 | 27 | Beraldo Leal | |
| 406 | 61 | Beraldo Leal | Grant _admin_ *role* to *user* _admin_: |
| 407 | 27 | Beraldo Leal | |
| 408 | 27 | Beraldo Leal | <pre> |
| 409 | 27 | Beraldo Leal | # keystone user-role-add --user [admin_user_id] --tenant_id [openstackDemo_tenant_id] --role [admin_role] |
| 410 | 29 | Beraldo Leal | </pre> |
| 411 | 29 | Beraldo Leal | |
| 412 | 61 | Beraldo Leal | Create an user to each service, replace the tenant_id by the service tenant id: |
| 413 | 29 | Beraldo Leal | |
| 414 | 29 | Beraldo Leal | <pre> |
| 415 | 29 | Beraldo Leal | # keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name glance --pass glancepass --enabled true |
| 416 | 29 | Beraldo Leal | # keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name nova --pass novapass --enabled true |
| 417 | 29 | Beraldo Leal | # keystone user-create --tenant_id 92920816c7704a8a95c916d34dc7a05c --name swift --pass swiftpass --enabled true |
| 418 | 29 | Beraldo Leal | </pre> |
| 419 | 29 | Beraldo Leal | |
| 420 | 61 | Beraldo Leal | Add the users of each service to admin *role*: |
| 421 | 29 | Beraldo Leal | |
| 422 | 29 | Beraldo Leal | <pre> |
| 423 | 29 | Beraldo Leal | # keystone user-role-add --user [glance_user_id] --tenant_id [service_tenant_id] --role [admin_role] |
| 424 | 1 | Beraldo Leal | # keystone user-role-add --user [nova_user_id] --tenant_id [service_tenant_id] --role [admin_role] |
| 425 | 29 | Beraldo Leal | # keystone user-role-add --user [swift_user_id] --tenant_id [service_tenant_id] --role [admin_role] |
| 426 | 25 | Beraldo Leal | </pre> |
| 427 | 31 | Beraldo Leal | |
| 428 | 62 | Beraldo Leal | h2. Creating the services: |
| 429 | 31 | Beraldo Leal | |
| 430 | 62 | Beraldo Leal | Until now, we just created: tenants, users and roles. The Keystone manage the services and yours endpoints too. In this way, the OpenStack components query to keystone where each service is located: |
| 431 | 31 | Beraldo Leal | |
| 432 | 62 | Beraldo Leal | Run the follow commands, to create the services: |
| 433 | 31 | Beraldo Leal | |
| 434 | 31 | Beraldo Leal | <pre> |
| 435 | 31 | Beraldo Leal | # keystone service-create --name keystone --type identity --description "Keystone Identity Service" |
| 436 | 31 | Beraldo Leal | # keystone service-create --name nova --type compute --description "Nova Compute Service" |
| 437 | 31 | Beraldo Leal | # keystone service-create --name volume --type volume --description "Nova Volume Service" |
| 438 | 31 | Beraldo Leal | # keystone service-create --name glance --type image --description "Glance Image Service" |
| 439 | 41 | Beraldo Leal | # keystone service-create --name swift --type object-store --description "Object Storage Service" |
| 440 | 31 | Beraldo Leal | </pre> |
| 441 | 32 | Beraldo Leal | |
| 442 | 62 | Beraldo Leal | Run the follow commands, to create the endpoints of each service: |
| 443 | 32 | Beraldo Leal | |
| 444 | 32 | Beraldo Leal | <pre> |
| 445 | 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 |
| 446 | 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' |
| 447 | 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' |
| 448 | 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 |
| 449 | 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' |
| 450 | 32 | Beraldo Leal | </pre> |
| 451 | 34 | Beraldo Leal | |
| 452 | 62 | Beraldo Leal | h2. Checking the keystone installation:w |
| 453 | 34 | Beraldo Leal | |
| 454 | 34 | Beraldo Leal | <pre> |
| 455 | 34 | Beraldo Leal | # sudo apt-get install curl openssl |
| 456 | 34 | Beraldo Leal | </pre> |
| 457 | 34 | Beraldo Leal | |
| 458 | 62 | Beraldo Leal | Do a REST request to keystone-api using curl: |
| 459 | 34 | Beraldo Leal | |
| 460 | 34 | Beraldo Leal | <pre> |
| 461 | 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 |
| 462 | 34 | Beraldo Leal | </pre> |
| 463 | 34 | Beraldo Leal | |
| 464 | 62 | Beraldo Leal | The output should have the services, endpoints and a valid token for 24 hours: |
| 465 | 34 | Beraldo Leal | |
| 466 | 34 | Beraldo Leal | <pre> |
| 467 | 34 | Beraldo Leal | { |
| 468 | 34 | Beraldo Leal | "access": { |
| 469 | 34 | Beraldo Leal | "serviceCatalog": [ |
| 470 | 34 | Beraldo Leal | { |
| 471 | 34 | Beraldo Leal | "endpoints": [ |
| 472 | 34 | Beraldo Leal | { |
| 473 | 34 | Beraldo Leal | "adminURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", |
| 474 | 34 | Beraldo Leal | "internalURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", |
| 475 | 34 | Beraldo Leal | "publicURL": "http://192.168.69.1:8776/v1/9c401c9d2b9d41bcabda6919d4aec63a", |
| 476 | 34 | Beraldo Leal | "region": "RegionOne" |
| 477 | 34 | Beraldo Leal | } |
| 478 | 34 | Beraldo Leal | ], |
| 479 | 34 | Beraldo Leal | "endpoints_links": [], |
| 480 | 34 | Beraldo Leal | "name": "volume", |
| 481 | 34 | Beraldo Leal | "type": "volume" |
| 482 | 34 | Beraldo Leal | }, |
| 483 | 34 | Beraldo Leal | { |
| 484 | 34 | Beraldo Leal | "endpoints": [ |
| 485 | 34 | Beraldo Leal | { |
| 486 | 34 | Beraldo Leal | "adminURL": "http://192.168.69.1:9292/v1", |
| 487 | 34 | Beraldo Leal | "internalURL": "http://192.168.69.1:9292/v1", |
| 488 | 34 | Beraldo Leal | "publicURL": "http://192.168.69.1:9292/v1", |
| 489 | 34 | Beraldo Leal | "region": "RegionOne" |
| 490 | 34 | Beraldo Leal | } |
| 491 | 34 | Beraldo Leal | ], |
| 492 | 34 | Beraldo Leal | "endpoints_links": [], |
| 493 | 34 | Beraldo Leal | "name": "glance", |
| 494 | 34 | Beraldo Leal | "type": "image" |
| 495 | 34 | Beraldo Leal | }, |
| 496 | 34 | Beraldo Leal | { |
| 497 | 34 | Beraldo Leal | "endpoints": [ |
| 498 | 34 | Beraldo Leal | { |
| 499 | 34 | Beraldo Leal | "adminURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", |
| 500 | 34 | Beraldo Leal | "internalURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", |
| 501 | 34 | Beraldo Leal | "publicURL": "http://192.168.69.1:8774/v2/9c401c9d2b9d41bcabda6919d4aec63a", |
| 502 | 34 | Beraldo Leal | "region": "RegionOne" |
| 503 | 34 | Beraldo Leal | } |
| 504 | 34 | Beraldo Leal | ], |
| 505 | 34 | Beraldo Leal | "endpoints_links": [], |
| 506 | 34 | Beraldo Leal | "name": "nova", |
| 507 | 34 | Beraldo Leal | "type": "compute" |
| 508 | 34 | Beraldo Leal | }, |
| 509 | 34 | Beraldo Leal | { |
| 510 | 34 | Beraldo Leal | "endpoints": [ |
| 511 | 34 | Beraldo Leal | { |
| 512 | 34 | Beraldo Leal | "adminURL": "http://192.168.69.1:35357/v2.0", |
| 513 | 34 | Beraldo Leal | "internalURL": "http://192.168.69.1:5000/v2.0", |
| 514 | 34 | Beraldo Leal | "publicURL": "http://192.168.69.1:5000/v2.0", |
| 515 | 34 | Beraldo Leal | "region": "RegionOne" |
| 516 | 34 | Beraldo Leal | } |
| 517 | 34 | Beraldo Leal | ], |
| 518 | 34 | Beraldo Leal | "endpoints_links": [], |
| 519 | 34 | Beraldo Leal | "name": "keystone", |
| 520 | 34 | Beraldo Leal | "type": "identity" |
| 521 | 34 | Beraldo Leal | }, |
| 522 | 34 | Beraldo Leal | { |
| 523 | 34 | Beraldo Leal | "endpoints": [ |
| 524 | 34 | Beraldo Leal | { |
| 525 | 34 | Beraldo Leal | "adminURL": "http://192.168.69.1:8888/", |
| 526 | 34 | Beraldo Leal | "internalURL": "http://192.168.69.1:8888/v1/AUTH_9c401c9d2b9d41bcabda6919d4aec63a", |
| 527 | 34 | Beraldo Leal | "publicURL": "http://192.168.69.1:8888/v1/AUTH_9c401c9d2b9d41bcabda6919d4aec63a", |
| 528 | 34 | Beraldo Leal | "region": "RegionOne" |
| 529 | 34 | Beraldo Leal | } |
| 530 | 34 | Beraldo Leal | ], |
| 531 | 34 | Beraldo Leal | "endpoints_links": [], |
| 532 | 34 | Beraldo Leal | "name": "swift", |
| 533 | 41 | Beraldo Leal | "type": "object-store" |
| 534 | 34 | Beraldo Leal | } |
| 535 | 34 | Beraldo Leal | ], |
| 536 | 34 | Beraldo Leal | "token": { |
| 537 | 34 | Beraldo Leal | "expires": "2012-06-08T15:31:46Z", |
| 538 | 34 | Beraldo Leal | "id": "05b818ff23564d5599c97ea5e1df7bbe", |
| 539 | 34 | Beraldo Leal | "tenant": { |
| 540 | 34 | Beraldo Leal | "description": "Default Tenant", |
| 541 | 34 | Beraldo Leal | "enabled": true, |
| 542 | 34 | Beraldo Leal | "id": "9c401c9d2b9d41bcabda6919d4aec63a", |
| 543 | 34 | Beraldo Leal | "name": "openstackDemo" |
| 544 | 34 | Beraldo Leal | } |
| 545 | 34 | Beraldo Leal | }, |
| 546 | 34 | Beraldo Leal | "user": { |
| 547 | 34 | Beraldo Leal | "id": "1fcfbe778fc3428aa30db782056b34d7", |
| 548 | 34 | Beraldo Leal | "name": "admin", |
| 549 | 34 | Beraldo Leal | "roles": [ |
| 550 | 34 | Beraldo Leal | { |
| 551 | 34 | Beraldo Leal | "id": "a2d6da77c0a54105aab94484e0d2088b", |
| 552 | 34 | Beraldo Leal | "name": "admin" |
| 553 | 34 | Beraldo Leal | } |
| 554 | 34 | Beraldo Leal | ], |
| 555 | 34 | Beraldo Leal | "roles_links": [], |
| 556 | 34 | Beraldo Leal | "username": "admin" |
| 557 | 34 | Beraldo Leal | } |
| 558 | 34 | Beraldo Leal | } |
| 559 | 34 | Beraldo Leal | } |
| 560 | 34 | Beraldo Leal | |
| 561 | 34 | Beraldo Leal | </pre> |
| 562 | 36 | Beraldo Leal | |
| 563 | 62 | Beraldo Leal | You can list users, roles, tenants and services: |
| 564 | 36 | Beraldo Leal | |
| 565 | 36 | Beraldo Leal | <pre> |
| 566 | 36 | Beraldo Leal | # keystone user-list |
| 567 | 39 | Beraldo Leal | +----------------------------------+---------+-------+--------+ |
| 568 | 39 | Beraldo Leal | | id | enabled | email | name | |
| 569 | 39 | Beraldo Leal | +----------------------------------+---------+-------+--------+ |
| 570 | 39 | Beraldo Leal | | 029c5749548946f7b560b2706d31d488 | True | None | glance | |
| 571 | 39 | Beraldo Leal | | 1fcfbe778fc3428aa30db782056b34d7 | True | None | admin | |
| 572 | 39 | Beraldo Leal | | 4b75079aeb1b408ebdb286bfb85e719f | True | None | swift | |
| 573 | 39 | Beraldo Leal | | e25f81d50eb84bdb92907adbd0e41f25 | True | None | nova | |
| 574 | 39 | Beraldo Leal | +----------------------------------+---------+-------+--------+ |
| 575 | 40 | Beraldo Leal | </pre> |
| 576 | 39 | Beraldo Leal | |
| 577 | 40 | Beraldo Leal | <pre> |
| 578 | 36 | Beraldo Leal | # keystone role-list |
| 579 | 39 | Beraldo Leal | +----------------------------------+-------+ |
| 580 | 39 | Beraldo Leal | | id | name | |
| 581 | 39 | Beraldo Leal | +----------------------------------+-------+ |
| 582 | 39 | Beraldo Leal | | 845e83e4d9bf4d8d8188b1e261dfe103 | user | |
| 583 | 39 | Beraldo Leal | | a2d6da77c0a54105aab94484e0d2088b | admin | |
| 584 | 39 | Beraldo Leal | +----------------------------------+-------+ |
| 585 | 40 | Beraldo Leal | </pre> |
| 586 | 1 | Beraldo Leal | |
| 587 | 40 | Beraldo Leal | <pre> |
| 588 | 36 | Beraldo Leal | # keystone tenant-list |
| 589 | 39 | Beraldo Leal | +----------------------------------+---------------+---------+ |
| 590 | 39 | Beraldo Leal | | id | name | enabled | |
| 591 | 39 | Beraldo Leal | +----------------------------------+---------------+---------+ |
| 592 | 39 | Beraldo Leal | | 92920816c7704a8a95c916d34dc7a05c | service | True | |
| 593 | 39 | Beraldo Leal | | 9c401c9d2b9d41bcabda6919d4aec63a | openstackDemo | True | |
| 594 | 1 | Beraldo Leal | +----------------------------------+---------------+---------+ |
| 595 | 40 | Beraldo Leal | </pre> |
| 596 | 1 | Beraldo Leal | |
| 597 | 40 | Beraldo Leal | <pre> |
| 598 | 36 | Beraldo Leal | # keystone service-list |
| 599 | 39 | Beraldo Leal | +----------------------------------+----------+----------------+---------------------------+ |
| 600 | 39 | Beraldo Leal | | id | name | type | description | |
| 601 | 39 | Beraldo Leal | +----------------------------------+----------+----------------+---------------------------+ |
| 602 | 39 | Beraldo Leal | | 00486163c7c64c6a86f577627071aafc | nova | compute | Nova Compute Service | |
| 603 | 39 | Beraldo Leal | | 69d3a6b21c9348acb1042d7d9386ff81 | volume | volume | Nova Volume Service | |
| 604 | 39 | Beraldo Leal | | 7b09782f9faf448781f5a460acabe258 | swift | object-store | Object Storage Service | |
| 605 | 39 | Beraldo Leal | | d6b32583a6694e9b828b2a50037623ba | keystone | identity | Keystone Identity Service | |
| 606 | 39 | Beraldo Leal | | f7f964a71e2a45119dcaede68fafbd78 | glance | image | Glance Image Service | |
| 607 | 36 | Beraldo Leal | +----------------------------------+----------+----------------+---------------------------+ |
| 608 | 38 | Beraldo Leal | </pre> |
| 609 | 38 | Beraldo Leal | |
| 610 | 42 | Beraldo Leal | h1. Installing OpenStack Object Storage - Swift |
| 611 | 1 | Beraldo Leal | |
| 612 | 63 | Beraldo Leal | OpenStack Object Storage (Swift) is a system to store objects in a massively |
| 613 | 63 | Beraldo Leal | scalable large capacity system with built-in redundancy and failover. Object |
| 614 | 63 | Beraldo Leal | Storage has a variety of applications, such as backing up or archiving data, |
| 615 | 63 | Beraldo Leal | serving graphics or videos (streaming data to a user's browser), storing |
| 616 | 63 | Beraldo Leal | secondary or tertiary static data, developing new applications with data |
| 617 | 63 | Beraldo Leal | storage integration, storing data when predicting storage capacity is difficult, |
| 618 | 63 | Beraldo Leal | and creating the elasticity and flexibility of cloud-based storage for your web |
| 619 | 63 | Beraldo Leal | applications. |
| 620 | 1 | Beraldo Leal | |
| 621 | 63 | Beraldo Leal | In this environment we use the same controller node as storage too. So the swift and swift-proxy is installed in the controller-node. |
| 622 | 44 | Beraldo Leal | |
| 623 | 63 | Beraldo Leal | Install the swift and dependencies: |
| 624 | 44 | Beraldo Leal | |
| 625 | 1 | Beraldo Leal | <pre> |
| 626 | 1 | Beraldo Leal | # apt-get install swift python-xattr python-memcache rsync memcached python-netifaces |
| 627 | 44 | Beraldo Leal | </pre> |
| 628 | 44 | Beraldo Leal | |
| 629 | 44 | Beraldo Leal | |
| 630 | 63 | Beraldo Leal | Unfortunately at the time of writing this manual swift package not automates some tasks, such as the creation of configuration files. We have to do this manually: |
| 631 | 63 | Beraldo Leal | |
| 632 | 44 | Beraldo Leal | <pre> |
| 633 | 44 | Beraldo Leal | # mkdir /etc/swift |
| 634 | 44 | Beraldo Leal | </pre> |
| 635 | 44 | Beraldo Leal | |
| 636 | 63 | Beraldo Leal | Create the config file _/etc/swift/swift.conf_: |
| 637 | 1 | Beraldo Leal | |
| 638 | 44 | Beraldo Leal | <pre> |
| 639 | 1 | Beraldo Leal | [swift-hash] |
| 640 | 1 | Beraldo Leal | # random unique string that can never change (DO NOT LOSE) |
| 641 | 44 | Beraldo Leal | swift_hash_path_suffix = fLIbertYgibbitZ |
| 642 | 44 | Beraldo Leal | </pre> |
| 643 | 44 | Beraldo Leal | |
| 644 | 63 | Beraldo Leal | h2. Install and configure the "object-nodes" |
| 645 | 44 | Beraldo Leal | |
| 646 | 63 | Beraldo Leal | In this case, the object-nodes (computer when data are stored) is the same cloud-controller. |
| 647 | 63 | Beraldo Leal | |
| 648 | 44 | Beraldo Leal | <pre> |
| 649 | 44 | Beraldo Leal | # apt-get install swift-account swift-container swift-object xfsprogs |
| 650 | 44 | Beraldo Leal | </pre> |
| 651 | 1 | Beraldo Leal | |
| 652 | 63 | Beraldo Leal | Each "Object node" can have many devices Is a requisite use xfs file system. |
| 653 | 44 | Beraldo Leal | |
| 654 | 44 | Beraldo Leal | <pre> |
| 655 | 44 | Beraldo Leal | # fdisk /dev/sdb (set up a single partition) |
| 656 | 44 | Beraldo Leal | # mkfs.xfs -i size=1024 /dev/sdb1 |
| 657 | 44 | Beraldo Leal | </pre> |
| 658 | 44 | Beraldo Leal | |
| 659 | 1 | Beraldo Leal | |
| 660 | 63 | Beraldo Leal | This device should be mount at /srv/node/ |
| 661 | 44 | Beraldo Leal | |
| 662 | 44 | Beraldo Leal | <pre> |
| 663 | 44 | Beraldo Leal | echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab |
| 664 | 44 | Beraldo Leal | mkdir -p /srv/node/sdb1 |
| 665 | 44 | Beraldo Leal | mount /srv/node/sdb1 |
| 666 | 44 | Beraldo Leal | chown -R swift:swift /srv/node |
| 667 | 44 | Beraldo Leal | </pre> |
| 668 | 44 | Beraldo Leal | |
| 669 | 63 | Beraldo Leal | h2. Configure the _rsyncd.conf_ |
| 670 | 44 | Beraldo Leal | |
| 671 | 44 | Beraldo Leal | <pre> |
| 672 | 44 | Beraldo Leal | uid = swift |
| 673 | 44 | Beraldo Leal | gid = swift |
| 674 | 44 | Beraldo Leal | log file = /var/log/rsyncd.log |
| 675 | 44 | Beraldo Leal | pid file = /var/run/rsyncd.pid |
| 676 | 44 | Beraldo Leal | address = 192.168.69.1 |
| 677 | 44 | Beraldo Leal | |
| 678 | 44 | Beraldo Leal | [account] |
| 679 | 44 | Beraldo Leal | max connections = 2 |
| 680 | 44 | Beraldo Leal | path = /srv/node/ |
| 681 | 44 | Beraldo Leal | read only = false |
| 682 | 44 | Beraldo Leal | lock file = /var/lock/account.lock |
| 683 | 44 | Beraldo Leal | |
| 684 | 44 | Beraldo Leal | [container] |
| 685 | 44 | Beraldo Leal | max connections = 2 |
| 686 | 1 | Beraldo Leal | path = /srv/node/ |
| 687 | 44 | Beraldo Leal | read only = false |
| 688 | 44 | Beraldo Leal | lock file = /var/lock/container.lock |
| 689 | 44 | Beraldo Leal | |
| 690 | 44 | Beraldo Leal | [object] |
| 691 | 1 | Beraldo Leal | max connections = 2 |
| 692 | 44 | Beraldo Leal | path = /srv/node/ |
| 693 | 44 | Beraldo Leal | read only = false |
| 694 | 44 | Beraldo Leal | lock file = /var/lock/object.lock |
| 695 | 44 | Beraldo Leal | </pre> |
| 696 | 1 | Beraldo Leal | |
| 697 | 63 | Beraldo Leal | Edit the _/etc/default/rsync_: |
| 698 | 44 | Beraldo Leal | |
| 699 | 44 | Beraldo Leal | <pre> |
| 700 | 44 | Beraldo Leal | RSYNC_ENABLE = true |
| 701 | 44 | Beraldo Leal | </pre> |
| 702 | 44 | Beraldo Leal | |
| 703 | 63 | Beraldo Leal | Restart the rsync: |
| 704 | 44 | Beraldo Leal | |
| 705 | 44 | Beraldo Leal | <pre> |
| 706 | 44 | Beraldo Leal | service rsync restart |
| 707 | 44 | Beraldo Leal | </pre> |
| 708 | 44 | Beraldo Leal | |
| 709 | 63 | Beraldo Leal | Create the _/etc/swift/account-server.conf_: |
| 710 | 44 | Beraldo Leal | |
| 711 | 44 | Beraldo Leal | <pre> |
| 712 | 44 | Beraldo Leal | [DEFAULT] |
| 713 | 44 | Beraldo Leal | bind_ip = 192.168.69.1 |
| 714 | 44 | Beraldo Leal | workers = 2 |
| 715 | 1 | Beraldo Leal | |
| 716 | 44 | Beraldo Leal | [pipeline:main] |
| 717 | 44 | Beraldo Leal | pipeline = account-server |
| 718 | 44 | Beraldo Leal | |
| 719 | 44 | Beraldo Leal | [app:account-server] |
| 720 | 44 | Beraldo Leal | use = egg:swift#account |
| 721 | 44 | Beraldo Leal | |
| 722 | 44 | Beraldo Leal | [account-replicator] |
| 723 | 44 | Beraldo Leal | |
| 724 | 44 | Beraldo Leal | [account-auditor] |
| 725 | 44 | Beraldo Leal | |
| 726 | 44 | Beraldo Leal | [account-reaper] |
| 727 | 44 | Beraldo Leal | </pre> |
| 728 | 44 | Beraldo Leal | |
| 729 | 63 | Beraldo Leal | Create the _/etc/swift/container-server.conf_: |
| 730 | 44 | Beraldo Leal | |
| 731 | 44 | Beraldo Leal | <pre> |
| 732 | 44 | Beraldo Leal | [DEFAULT] |
| 733 | 44 | Beraldo Leal | bind_ip = 192.168.69.1 |
| 734 | 1 | Beraldo Leal | workers = 2 |
| 735 | 44 | Beraldo Leal | |
| 736 | 44 | Beraldo Leal | [pipeline:main] |
| 737 | 44 | Beraldo Leal | pipeline = container-server |
| 738 | 44 | Beraldo Leal | |
| 739 | 44 | Beraldo Leal | [app:container-server] |
| 740 | 44 | Beraldo Leal | use = egg:swift#container |
| 741 | 44 | Beraldo Leal | |
| 742 | 44 | Beraldo Leal | [container-replicator] |
| 743 | 44 | Beraldo Leal | |
| 744 | 44 | Beraldo Leal | [container-updater] |
| 745 | 44 | Beraldo Leal | |
| 746 | 44 | Beraldo Leal | [container-auditor] |
| 747 | 44 | Beraldo Leal | </pre> |
| 748 | 44 | Beraldo Leal | |
| 749 | 63 | Beraldo Leal | Create the _/etc/swift/object-server.conf_: |
| 750 | 44 | Beraldo Leal | |
| 751 | 44 | Beraldo Leal | <pre> |
| 752 | 44 | Beraldo Leal | [DEFAULT] |
| 753 | 44 | Beraldo Leal | bind_ip = 192.168.69.1 |
| 754 | 1 | Beraldo Leal | workers = 2 |
| 755 | 44 | Beraldo Leal | |
| 756 | 1 | Beraldo Leal | [pipeline:main] |
| 757 | 1 | Beraldo Leal | pipeline = object-server |
| 758 | 1 | Beraldo Leal | |
| 759 | 1 | Beraldo Leal | [app:object-server] |
| 760 | 44 | Beraldo Leal | use = egg:swift#object |
| 761 | 44 | Beraldo Leal | |
| 762 | 44 | Beraldo Leal | [object-replicator] |
| 763 | 1 | Beraldo Leal | |
| 764 | 44 | Beraldo Leal | [object-updater] |
| 765 | 44 | Beraldo Leal | |
| 766 | 44 | Beraldo Leal | [object-auditor] |
| 767 | 44 | Beraldo Leal | </pre> |
| 768 | 44 | Beraldo Leal | |
| 769 | 1 | Beraldo Leal | |
| 770 | 63 | Beraldo Leal | h2. Installing and configuring the swift-proxy |
| 771 | 44 | Beraldo Leal | |
| 772 | 63 | Beraldo Leal | The swift-proxy is the component that acts like a proxy, so you can have multiple object-nodes and one swift-proxy. When an user or openStack component need get a object, its ask for swift-proxy. |
| 773 | 63 | Beraldo Leal | |
| 774 | 63 | Beraldo Leal | Install swift-proxy: |
| 775 | 63 | Beraldo Leal | |
| 776 | 1 | Beraldo Leal | <pre> |
| 777 | 44 | Beraldo Leal | # apt-get install swift-proxy memcached |
| 778 | 44 | Beraldo Leal | </pre> |
| 779 | 44 | Beraldo Leal | |
| 780 | 63 | Beraldo Leal | Create a self-sign SSL certificate: |
| 781 | 1 | Beraldo Leal | |
| 782 | 44 | Beraldo Leal | <pre> |
| 783 | 44 | Beraldo Leal | cd /etc/swift |
| 784 | 44 | Beraldo Leal | openssl req -new -x509 -nodes -out cert.crt -keyout cert.key |
| 785 | 44 | Beraldo Leal | </pre> |
| 786 | 44 | Beraldo Leal | |
| 787 | 63 | Beraldo Leal | Change the memcached to listen in correct interface, change the /etc/memcached.conf: |
| 788 | 44 | Beraldo Leal | |
| 789 | 44 | Beraldo Leal | <pre> |
| 790 | 44 | Beraldo Leal | -l 127.0.0.1 |
| 791 | 44 | Beraldo Leal | to |
| 792 | 44 | Beraldo Leal | -l 192.168.69.1 |
| 793 | 44 | Beraldo Leal | </pre> |
| 794 | 44 | Beraldo Leal | |
| 795 | 63 | Beraldo Leal | Restart the memcached: |
| 796 | 44 | Beraldo Leal | |
| 797 | 44 | Beraldo Leal | <pre> |
| 798 | 44 | Beraldo Leal | service memcached restart |
| 799 | 44 | Beraldo Leal | </pre> |
| 800 | 44 | Beraldo Leal | |
| 801 | 63 | Beraldo Leal | Create the file _/etc/swift/proxy-server.conf_: |
| 802 | 44 | Beraldo Leal | |
| 803 | 44 | Beraldo Leal | <pre> |
| 804 | 44 | Beraldo Leal | [DEFAULT] |
| 805 | 44 | Beraldo Leal | bind_port = 8888 |
| 806 | 44 | Beraldo Leal | user = swift |
| 807 | 44 | Beraldo Leal | |
| 808 | 44 | Beraldo Leal | [pipeline:main] |
| 809 | 44 | Beraldo Leal | pipeline = catch_errors healthcheck cache authtoken keystone proxy-server |
| 810 | 44 | Beraldo Leal | |
| 811 | 44 | Beraldo Leal | [app:proxy-server] |
| 812 | 44 | Beraldo Leal | use = egg:swift#proxy |
| 813 | 44 | Beraldo Leal | account_autocreate = true |
| 814 | 44 | Beraldo Leal | |
| 815 | 44 | Beraldo Leal | [filter:keystone] |
| 816 | 44 | Beraldo Leal | paste.filter_factory = keystone.middleware.swift_auth:filter_factory |
| 817 | 44 | Beraldo Leal | operator_roles = admin, swiftoperator |
| 818 | 44 | Beraldo Leal | |
| 819 | 44 | Beraldo Leal | [filter:authtoken] |
| 820 | 44 | Beraldo Leal | paste.filter_factory = keystone.middleware.auth_token:filter_factory |
| 821 | 44 | Beraldo Leal | # Delaying the auth decision is required to support token-less |
| 822 | 44 | Beraldo Leal | # usage for anonymous referrers ('.r:*'). |
| 823 | 44 | Beraldo Leal | delay_auth_decision = 10 |
| 824 | 44 | Beraldo Leal | service_port = 5000 |
| 825 | 44 | Beraldo Leal | service_host = 192.168.69.1 |
| 826 | 44 | Beraldo Leal | auth_port = 35357 |
| 827 | 44 | Beraldo Leal | auth_host = 192.168.69.1 |
| 828 | 44 | Beraldo Leal | auth_token = 012345SECRET99TOKEN012345 |
| 829 | 44 | Beraldo Leal | admin_token = 012345SECRET99TOKEN012345 |
| 830 | 44 | Beraldo Leal | auth_protocol = http |
| 831 | 44 | Beraldo Leal | |
| 832 | 44 | Beraldo Leal | [filter:cache] |
| 833 | 44 | Beraldo Leal | use = egg:swift#memcache |
| 834 | 44 | Beraldo Leal | set log_name = cache |
| 835 | 44 | Beraldo Leal | |
| 836 | 44 | Beraldo Leal | [filter:catch_errors] |
| 837 | 44 | Beraldo Leal | use = egg:swift#catch_errors |
| 838 | 44 | Beraldo Leal | |
| 839 | 44 | Beraldo Leal | [filter:healthcheck] |
| 840 | 1 | Beraldo Leal | use = egg:swift#healthcheck |
| 841 | 44 | Beraldo Leal | </pre> |
| 842 | 44 | Beraldo Leal | |
| 843 | 45 | Beraldo Leal | |
| 844 | 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. |
| 845 | 45 | Beraldo Leal | |
| 846 | 45 | Beraldo Leal | <pre> |
| 847 | 45 | Beraldo Leal | cd /etc/swift |
| 848 | 45 | Beraldo Leal | swift-ring-builder account.builder create 18 1 1 |
| 849 | 45 | Beraldo Leal | swift-ring-builder container.builder create 18 1 1 |
| 850 | 45 | Beraldo Leal | swift-ring-builder object.builder create 18 1 1 |
| 851 | 45 | Beraldo Leal | </pre> |
| 852 | 45 | Beraldo Leal | |
| 853 | 45 | Beraldo Leal | For every storage device on each node add entries to each ring: |
| 854 | 45 | Beraldo Leal | |
| 855 | 45 | Beraldo Leal | <pre> |
| 856 | 45 | Beraldo Leal | swift-ring-builder account.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP>:6002/<DEVICE> 100 |
| 857 | 45 | Beraldo Leal | swift-ring-builder container.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP_1>:6001/<DEVICE> 100 |
| 858 | 45 | Beraldo Leal | swift-ring-builder object.builder add z<ZONE>-<STORAGE_LOCAL_NET_IP_1>:6000/<DEVICE> 100 |
| 859 | 45 | Beraldo Leal | </pre> |
| 860 | 45 | Beraldo Leal | |
| 861 | 63 | Beraldo Leal | In our case, we have only one zone in one storage node with one device (sdb1), so the command should be: |
| 862 | 45 | Beraldo Leal | |
| 863 | 1 | Beraldo Leal | <pre> |
| 864 | 45 | Beraldo Leal | swift-ring-builder account.builder add z1-192.168.69.1:6002/sdb1 100 |
| 865 | 45 | Beraldo Leal | swift-ring-builder container.builder add z1-192.168.69.1:6001/sdb1 100 |
| 866 | 45 | Beraldo Leal | swift-ring-builder object.builder add z1-192.168.69.1:6000/sdb1 100 |
| 867 | 45 | Beraldo Leal | </pre> |
| 868 | 1 | Beraldo Leal | |
| 869 | 45 | Beraldo Leal | Verify the ring contents for each ring: |
| 870 | 45 | Beraldo Leal | |
| 871 | 45 | Beraldo Leal | <pre> |
| 872 | 45 | Beraldo Leal | swift-ring-builder account.builder |
| 873 | 1 | Beraldo Leal | swift-ring-builder container.builder |
| 874 | 45 | Beraldo Leal | swift-ring-builder object.builder |
| 875 | 45 | Beraldo Leal | </pre> |
| 876 | 45 | Beraldo Leal | |
| 877 | 45 | Beraldo Leal | Rebalance the rings: |
| 878 | 45 | Beraldo Leal | |
| 879 | 45 | Beraldo Leal | <pre> |
| 880 | 1 | Beraldo Leal | swift-ring-builder account.builder rebalance |
| 881 | 1 | Beraldo Leal | swift-ring-builder container.builder rebalance |
| 882 | 45 | Beraldo Leal | swift-ring-builder object.builder rebalance |
| 883 | 45 | Beraldo Leal | </pre> |
| 884 | 44 | Beraldo Leal | |
| 885 | 63 | Beraldo Leal | Change the permissions of config files: |
| 886 | 44 | Beraldo Leal | |
| 887 | 44 | Beraldo Leal | <pre> |
| 888 | 45 | Beraldo Leal | # chown -R swift:swift /etc/swift/ |
| 889 | 45 | Beraldo Leal | </pre> |
| 890 | 45 | Beraldo Leal | |
| 891 | 63 | Beraldo Leal | Start the swift-proxy: |
| 892 | 45 | Beraldo Leal | |
| 893 | 45 | Beraldo Leal | <pre> |
| 894 | 1 | Beraldo Leal | swift-init proxy start |
| 895 | 45 | Beraldo Leal | </pre> |
| 896 | 45 | Beraldo Leal | |
| 897 | 63 | Beraldo Leal | Start all swift services: |
| 898 | 45 | Beraldo Leal | |
| 899 | 1 | Beraldo Leal | <pre> |
| 900 | 45 | Beraldo Leal | swift-init main start |
| 901 | 45 | Beraldo Leal | swift-init rest start |
| 902 | 45 | Beraldo Leal | </pre> |
| 903 | 45 | Beraldo Leal | |
| 904 | 1 | Beraldo Leal | |
| 905 | 63 | Beraldo Leal | h2. Checking the installation |
| 906 | 45 | Beraldo Leal | |
| 907 | 63 | Beraldo Leal | The file _/root/openstackrc_ will receive more environment variables: |
| 908 | 45 | Beraldo Leal | |
| 909 | 1 | Beraldo Leal | <pre> |
| 910 | 45 | Beraldo Leal | # Used for Keystone |
| 911 | 45 | Beraldo Leal | export SERVICE_ENDPOINT=http://192.168.69.1:35357/v2.0/ |
| 912 | 45 | Beraldo Leal | export SERVICE_TOKEN=012345SECRET99TOKEN012345 |
| 913 | 45 | Beraldo Leal | |
| 914 | 45 | Beraldo Leal | # Used for swift |
| 915 | 1 | Beraldo Leal | export ST_AUTH=http://192.168.69.1:5000/v2.0 |
| 916 | 1 | Beraldo Leal | export ST_USER=openstackDemo:admin |
| 917 | 45 | Beraldo Leal | export ST_KEY=adminpass |
| 918 | 45 | Beraldo Leal | export OS_REGION_NAME=RegionOne |
| 919 | 45 | Beraldo Leal | </pre> |
| 920 | 45 | Beraldo Leal | |
| 921 | 63 | Beraldo Leal | Reload the file: |
| 922 | 45 | Beraldo Leal | |
| 923 | 45 | Beraldo Leal | <pre> |
| 924 | 45 | Beraldo Leal | # source /root/openstackrc |
| 925 | 45 | Beraldo Leal | </pre> |
| 926 | 45 | Beraldo Leal | |
| 927 | 63 | Beraldo Leal | Try to get swift status, with the command: |
| 928 | 45 | Beraldo Leal | |
| 929 | 45 | Beraldo Leal | <pre> |
| 930 | 45 | Beraldo Leal | # swift -V 2.0 stat |
| 931 | 45 | Beraldo Leal | </pre> |
| 932 | 45 | Beraldo Leal | |
| 933 | 63 | Beraldo Leal | List the containers: |
| 934 | 45 | Beraldo Leal | |
| 935 | 45 | Beraldo Leal | <pre> |
| 936 | 45 | Beraldo Leal | # swift -V 2.0 list |
| 937 | 46 | Beraldo Leal | </pre> |
| 938 | 46 | Beraldo Leal | |
| 939 | 63 | Beraldo Leal | Do some upload files: |
| 940 | 45 | Beraldo Leal | |
| 941 | 46 | Beraldo Leal | <pre> |
| 942 | 46 | Beraldo Leal | # swift -V 2.0 upload myfiles bigfile1.tgz |
| 943 | 46 | Beraldo Leal | # swift -V 2.0 upload myfiles bigfile2.tgz |
| 944 | 46 | Beraldo Leal | </pre> |
| 945 | 46 | Beraldo Leal | |
| 946 | 63 | Beraldo Leal | Download the container "myfiles": |
| 947 | 63 | Beraldo Leal | |
| 948 | 46 | Beraldo Leal | <pre> |
| 949 | 46 | Beraldo Leal | # cd /tmp/ |
| 950 | 46 | Beraldo Leal | # swift -V 2.0 download myfiles |
| 951 | 46 | Beraldo Leal | </pre> |
| 952 | 47 | Beraldo Leal | |
| 953 | 47 | Beraldo Leal | h1. Installing OpenStack Image Service - Glance |
| 954 | 47 | Beraldo Leal | |
| 955 | 64 | Beraldo Leal | OpenStack Image Service (Glance) is a lookup and retrieval system for virtual |
| 956 | 64 | Beraldo Leal | machine images. It can be configured in three ways: using OpenStack Object Store |
| 957 | 64 | Beraldo Leal | to store images; using Amazon's Simple Storage Solution (S3) storage directly; |
| 958 | 64 | Beraldo Leal | or using S3 storage with Object Store as the intermediate for S3 access. |
| 959 | 47 | Beraldo Leal | |
| 960 | 64 | Beraldo Leal | Install the glance on the controller node: |
| 961 | 47 | Beraldo Leal | |
| 962 | 47 | Beraldo Leal | <pre> |
| 963 | 1 | Beraldo Leal | # apt-get install glance |
| 964 | 47 | Beraldo Leal | </pre> |
| 965 | 47 | Beraldo Leal | |
| 966 | 64 | Beraldo Leal | Remove the sqlite file: |
| 967 | 47 | Beraldo Leal | |
| 968 | 47 | Beraldo Leal | <pre> |
| 969 | 47 | Beraldo Leal | # rm /var/lib/glance/glance.sqlite |
| 970 | 47 | Beraldo Leal | </pre> |
| 971 | 47 | Beraldo Leal | |
| 972 | 47 | Beraldo Leal | h2. Configuring the Image Service database backend |
| 973 | 47 | Beraldo Leal | |
| 974 | 47 | Beraldo Leal | <pre> |
| 975 | 47 | Beraldo Leal | # mysql -u root -p |
| 976 | 47 | Beraldo Leal | mysql> CREATE DATABASE glance; |
| 977 | 47 | Beraldo Leal | mysql> GRANT ALL ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glancepass'; |
| 978 | 47 | Beraldo Leal | mysql> FLUSH PRIVILEGES; |
| 979 | 1 | Beraldo Leal | mysql> quit; |
| 980 | 47 | Beraldo Leal | </pre> |
| 981 | 47 | Beraldo Leal | |
| 982 | 64 | Beraldo Leal | Copy the config files to _/etc/glance/_: |
| 983 | 47 | Beraldo Leal | |
| 984 | 47 | Beraldo Leal | */etc/glance/glance-api.conf*: |
| 985 | 47 | Beraldo Leal | <pre> |
| 986 | 47 | Beraldo Leal | [DEFAULT] |
| 987 | 47 | Beraldo Leal | # Show more verbose log output (sets INFO log level output) |
| 988 | 47 | Beraldo Leal | verbose = True |
| 989 | 47 | Beraldo Leal | |
| 990 | 47 | Beraldo Leal | # Show debugging output in logs (sets DEBUG log level output) |
| 991 | 47 | Beraldo Leal | debug = False |
| 992 | 47 | Beraldo Leal | |
| 993 | 47 | Beraldo Leal | # Which backend store should Glance use by default is not specified |
| 994 | 47 | Beraldo Leal | # in a request to add a new image to Glance? Default: 'file' |
| 995 | 47 | Beraldo Leal | # Available choices are 'file', 'swift', and 's3' |
| 996 | 47 | Beraldo Leal | default_store = swift |
| 997 | 47 | Beraldo Leal | |
| 998 | 47 | Beraldo Leal | # Address to bind the API server |
| 999 | 47 | Beraldo Leal | bind_host = 0.0.0.0 |
| 1000 | 47 | Beraldo Leal | |
| 1001 | 47 | Beraldo Leal | # Port the bind the API server to |
| 1002 | 47 | Beraldo Leal | bind_port = 9292 |
| 1003 | 47 | Beraldo Leal | |
| 1004 | 47 | Beraldo Leal | # Log to this file. Make sure you do not set the same log |
| 1005 | 47 | Beraldo Leal | # file for both the API and registry servers! |
| 1006 | 47 | Beraldo Leal | log_file = /var/log/glance/api.log |
| 1007 | 47 | Beraldo Leal | |
| 1008 | 47 | Beraldo Leal | # Backlog requests when creating socket |
| 1009 | 47 | Beraldo Leal | backlog = 4096 |
| 1010 | 47 | Beraldo Leal | |
| 1011 | 47 | Beraldo Leal | # Number of Glance API worker processes to start. |
| 1012 | 47 | Beraldo Leal | # On machines with more than one CPU increasing this value |
| 1013 | 47 | Beraldo Leal | # may improve performance (especially if using SSL with |
| 1014 | 47 | Beraldo Leal | # compression turned on). It is typically recommended to set |
| 1015 | 47 | Beraldo Leal | # this value to the number of CPUs present on your machine. |
| 1016 | 47 | Beraldo Leal | workers = 0 |
| 1017 | 47 | Beraldo Leal | |
| 1018 | 47 | Beraldo Leal | # Role used to identify an authenticated user as administrator |
| 1019 | 47 | Beraldo Leal | #admin_role = admin |
| 1020 | 47 | Beraldo Leal | |
| 1021 | 47 | Beraldo Leal | # ================= Syslog Options ============================ |
| 1022 | 47 | Beraldo Leal | |
| 1023 | 47 | Beraldo Leal | # Send logs to syslog (/dev/log) instead of to file specified |
| 1024 | 47 | Beraldo Leal | # by `log_file` |
| 1025 | 47 | Beraldo Leal | use_syslog = False |
| 1026 | 47 | Beraldo Leal | |
| 1027 | 47 | Beraldo Leal | # Facility to use. If unset defaults to LOG_USER. |
| 1028 | 47 | Beraldo Leal | # syslog_log_facility = LOG_LOCAL0 |
| 1029 | 47 | Beraldo Leal | |
| 1030 | 47 | Beraldo Leal | # ================= SSL Options =============================== |
| 1031 | 47 | Beraldo Leal | |
| 1032 | 47 | Beraldo Leal | # Certificate file to use when starting API server securely |
| 1033 | 47 | Beraldo Leal | # cert_file = /path/to/certfile |
| 1034 | 47 | Beraldo Leal | |
| 1035 | 47 | Beraldo Leal | # Private key file to use when starting API server securely |
| 1036 | 47 | Beraldo Leal | # key_file = /path/to/keyfile |
| 1037 | 47 | Beraldo Leal | |
| 1038 | 47 | Beraldo Leal | # ================= Security Options ========================== |
| 1039 | 47 | Beraldo Leal | |
| 1040 | 47 | Beraldo Leal | # AES key for encrypting store 'location' metadata, including |
| 1041 | 47 | Beraldo Leal | # -- if used -- Swift or S3 credentials |
| 1042 | 47 | Beraldo Leal | # Should be set to a random string of length 16, 24 or 32 bytes |
| 1043 | 47 | Beraldo Leal | # metadata_encryption_key = <16, 24 or 32 char registry metadata key> |
| 1044 | 47 | Beraldo Leal | |
| 1045 | 47 | Beraldo Leal | # ============ Registry Options =============================== |
| 1046 | 47 | Beraldo Leal | |
| 1047 | 47 | Beraldo Leal | # Address to find the registry server |
| 1048 | 47 | Beraldo Leal | registry_host = 0.0.0.0 |
| 1049 | 47 | Beraldo Leal | |
| 1050 | 47 | Beraldo Leal | # Port the registry server is listening on |
| 1051 | 47 | Beraldo Leal | registry_port = 9191 |
| 1052 | 47 | Beraldo Leal | |
| 1053 | 47 | Beraldo Leal | # What protocol to use when connecting to the registry server? |
| 1054 | 47 | Beraldo Leal | # Set to https for secure HTTP communication |
| 1055 | 47 | Beraldo Leal | registry_client_protocol = http |
| 1056 | 47 | Beraldo Leal | |
| 1057 | 47 | Beraldo Leal | # The path to the key file to use in SSL connections to the |
| 1058 | 47 | Beraldo Leal | # registry server, if any. Alternately, you may set the |
| 1059 | 47 | Beraldo Leal | # GLANCE_CLIENT_KEY_FILE environ variable to a filepath of the key file |
| 1060 | 47 | Beraldo Leal | # registry_client_key_file = /path/to/key/file |
| 1061 | 47 | Beraldo Leal | |
| 1062 | 47 | Beraldo Leal | # The path to the cert file to use in SSL connections to the |
| 1063 | 47 | Beraldo Leal | # registry server, if any. Alternately, you may set the |
| 1064 | 47 | Beraldo Leal | # GLANCE_CLIENT_CERT_FILE environ variable to a filepath of the cert file |
| 1065 | 47 | Beraldo Leal | # registry_client_cert_file = /path/to/cert/file |
| 1066 | 47 | Beraldo Leal | |
| 1067 | 47 | Beraldo Leal | # The path to the certifying authority cert file to use in SSL connections |
| 1068 | 47 | Beraldo Leal | # to the registry server, if any. Alternately, you may set the |
| 1069 | 47 | Beraldo Leal | # GLANCE_CLIENT_CA_FILE environ variable to a filepath of the CA cert file |
| 1070 | 47 | Beraldo Leal | # registry_client_ca_file = /path/to/ca/file |
| 1071 | 47 | Beraldo Leal | |
| 1072 | 47 | Beraldo Leal | # ============ Notification System Options ===================== |
| 1073 | 47 | Beraldo Leal | |
| 1074 | 47 | Beraldo Leal | # Notifications can be sent when images are create, updated or deleted. |
| 1075 | 47 | Beraldo Leal | # There are three methods of sending notifications, logging (via the |
| 1076 | 47 | Beraldo Leal | # log_file directive), rabbit (via a rabbitmq queue), qpid (via a Qpid |
| 1077 | 47 | Beraldo Leal | # message queue), or noop (no notifications sent, the default) |
| 1078 | 47 | Beraldo Leal | notifier_strategy = noop |
| 1079 | 47 | Beraldo Leal | |
| 1080 | 47 | Beraldo Leal | # Configuration options if sending notifications via rabbitmq (these are |
| 1081 | 47 | Beraldo Leal | # the defaults) |
| 1082 | 47 | Beraldo Leal | rabbit_host = localhost |
| 1083 | 47 | Beraldo Leal | rabbit_port = 5672 |
| 1084 | 47 | Beraldo Leal | rabbit_use_ssl = false |
| 1085 | 47 | Beraldo Leal | rabbit_userid = guest |
| 1086 | 47 | Beraldo Leal | rabbit_password = guest |
| 1087 | 47 | Beraldo Leal | rabbit_virtual_host = / |
| 1088 | 47 | Beraldo Leal | rabbit_notification_exchange = glance |
| 1089 | 47 | Beraldo Leal | rabbit_notification_topic = glance_notifications |
| 1090 | 47 | Beraldo Leal | |
| 1091 | 47 | Beraldo Leal | # Configuration options if sending notifications via Qpid (these are |
| 1092 | 47 | Beraldo Leal | # the defaults) |
| 1093 | 47 | Beraldo Leal | qpid_notification_exchange = glance |
| 1094 | 47 | Beraldo Leal | qpid_notification_topic = glance_notifications |
| 1095 | 47 | Beraldo Leal | qpid_host = localhost |
| 1096 | 47 | Beraldo Leal | qpid_port = 5672 |
| 1097 | 47 | Beraldo Leal | qpid_username = |
| 1098 | 47 | Beraldo Leal | qpid_password = |
| 1099 | 47 | Beraldo Leal | qpid_sasl_mechanisms = |
| 1100 | 47 | Beraldo Leal | qpid_reconnect_timeout = 0 |
| 1101 | 47 | Beraldo Leal | qpid_reconnect_limit = 0 |
| 1102 | 47 | Beraldo Leal | qpid_reconnect_interval_min = 0 |
| 1103 | 47 | Beraldo Leal | qpid_reconnect_interval_max = 0 |
| 1104 | 47 | Beraldo Leal | qpid_reconnect_interval = 0 |
| 1105 | 47 | Beraldo Leal | qpid_heartbeat = 5 |
| 1106 | 47 | Beraldo Leal | # Set to 'ssl' to enable SSL |
| 1107 | 47 | Beraldo Leal | qpid_protocol = tcp |
| 1108 | 47 | Beraldo Leal | qpid_tcp_nodelay = True |
| 1109 | 47 | Beraldo Leal | |
| 1110 | 47 | Beraldo Leal | # ============ Filesystem Store Options ======================== |
| 1111 | 47 | Beraldo Leal | |
| 1112 | 47 | Beraldo Leal | # Directory that the Filesystem backend store |
| 1113 | 47 | Beraldo Leal | # writes image data to |
| 1114 | 47 | Beraldo Leal | filesystem_store_datadir = /var/lib/glance/images/ |
| 1115 | 47 | Beraldo Leal | |
| 1116 | 47 | Beraldo Leal | # ============ Swift Store Options ============================= |
| 1117 | 47 | Beraldo Leal | |
| 1118 | 47 | Beraldo Leal | # Version of the authentication service to use |
| 1119 | 47 | Beraldo Leal | # Valid versions are '2' for keystone and '1' for swauth and rackspace |
| 1120 | 47 | Beraldo Leal | swift_store_auth_version = 2 |
| 1121 | 47 | Beraldo Leal | |
| 1122 | 47 | Beraldo Leal | # Address where the Swift authentication service lives |
| 1123 | 47 | Beraldo Leal | # Valid schemes are 'http://' and 'https://' |
| 1124 | 47 | Beraldo Leal | # If no scheme specified, default to 'https://' |
| 1125 | 47 | Beraldo Leal | # For swauth, use something like '127.0.0.1:8080/v1.0/' |
| 1126 | 47 | Beraldo Leal | swift_store_auth_address = http://192.168.69.1:35357/v2.0/ |
| 1127 | 47 | Beraldo Leal | |
| 1128 | 47 | Beraldo Leal | # User to authenticate against the Swift authentication service |
| 1129 | 47 | Beraldo Leal | # If you use Swift authentication service, set it to 'account':'user' |
| 1130 | 47 | Beraldo Leal | # where 'account' is a Swift storage account and 'user' |
| 1131 | 47 | Beraldo Leal | # is a user in that account |
| 1132 | 47 | Beraldo Leal | swift_store_user = service:glance |
| 1133 | 47 | Beraldo Leal | |
| 1134 | 47 | Beraldo Leal | # Auth key for the user authenticating against the |
| 1135 | 47 | Beraldo Leal | # Swift authentication service |
| 1136 | 47 | Beraldo Leal | swift_store_key = glancepass |
| 1137 | 47 | Beraldo Leal | |
| 1138 | 47 | Beraldo Leal | # Container within the account that the account should use |
| 1139 | 47 | Beraldo Leal | # for storing images in Swift |
| 1140 | 47 | Beraldo Leal | swift_store_container = glance |
| 1141 | 47 | Beraldo Leal | |
| 1142 | 47 | Beraldo Leal | # Do we create the container if it does not exist? |
| 1143 | 47 | Beraldo Leal | swift_store_create_container_on_put = True |
| 1144 | 47 | Beraldo Leal | |
| 1145 | 47 | Beraldo Leal | # What size, in MB, should Glance start chunking image files |
| 1146 | 47 | Beraldo Leal | # and do a large object manifest in Swift? By default, this is |
| 1147 | 47 | Beraldo Leal | # the maximum object size in Swift, which is 5GB |
| 1148 | 47 | Beraldo Leal | swift_store_large_object_size = 5120 |
| 1149 | 47 | Beraldo Leal | |
| 1150 | 47 | Beraldo Leal | # When doing a large object manifest, what size, in MB, should |
| 1151 | 47 | Beraldo Leal | # Glance write chunks to Swift? This amount of data is written |
| 1152 | 47 | Beraldo Leal | # to a temporary disk buffer during the process of chunking |
| 1153 | 47 | Beraldo Leal | # the image file, and the default is 200MB |
| 1154 | 47 | Beraldo Leal | swift_store_large_object_chunk_size = 200 |
| 1155 | 47 | Beraldo Leal | |
| 1156 | 47 | Beraldo Leal | # Whether to use ServiceNET to communicate with the Swift storage servers. |
| 1157 | 47 | Beraldo Leal | # (If you aren't RACKSPACE, leave this False!) |
| 1158 | 47 | Beraldo Leal | # |
| 1159 | 47 | Beraldo Leal | # To use ServiceNET for authentication, prefix hostname of |
| 1160 | 47 | Beraldo Leal | # `swift_store_auth_address` with 'snet-'. |
| 1161 | 47 | Beraldo Leal | # Ex. https://example.com/v1.0/ -> https://snet-example.com/v1.0/ |
| 1162 | 47 | Beraldo Leal | swift_enable_snet = False |
| 1163 | 47 | Beraldo Leal | |
| 1164 | 47 | Beraldo Leal | # ============ S3 Store Options ============================= |
| 1165 | 47 | Beraldo Leal | |
| 1166 | 47 | Beraldo Leal | # Address where the S3 authentication service lives |
| 1167 | 47 | Beraldo Leal | # Valid schemes are 'http://' and 'https://' |
| 1168 | 47 | Beraldo Leal | # If no scheme specified, default to 'http://' |
| 1169 | 47 | Beraldo Leal | s3_store_host = 127.0.0.1:8080/v1.0/ |
| 1170 | 47 | Beraldo Leal | |
| 1171 | 47 | Beraldo Leal | # User to authenticate against the S3 authentication service |
| 1172 | 47 | Beraldo Leal | s3_store_access_key = <20-char AWS access key> |
| 1173 | 47 | Beraldo Leal | |
| 1174 | 47 | Beraldo Leal | # Auth key for the user authenticating against the |
| 1175 | 47 | Beraldo Leal | # S3 authentication service |
| 1176 | 47 | Beraldo Leal | s3_store_secret_key = <40-char AWS secret key> |
| 1177 | 47 | Beraldo Leal | |
| 1178 | 47 | Beraldo Leal | # Container within the account that the account should use |
| 1179 | 47 | Beraldo Leal | # for storing images in S3. Note that S3 has a flat namespace, |
| 1180 | 47 | Beraldo Leal | # so you need a unique bucket name for your glance images. An |
| 1181 | 47 | Beraldo Leal | # easy way to do this is append your AWS access key to "glance". |
| 1182 | 47 | Beraldo Leal | # S3 buckets in AWS *must* be lowercased, so remember to lowercase |
| 1183 | 47 | Beraldo Leal | # your AWS access key if you use it in your bucket name below! |
| 1184 | 47 | Beraldo Leal | s3_store_bucket = <lowercased 20-char aws access key>glance |
| 1185 | 47 | Beraldo Leal | |
| 1186 | 47 | Beraldo Leal | # Do we create the bucket if it does not exist? |
| 1187 | 47 | Beraldo Leal | s3_store_create_bucket_on_put = False |
| 1188 | 47 | Beraldo Leal | |
| 1189 | 47 | Beraldo Leal | # When sending images to S3, the data will first be written to a |
| 1190 | 47 | Beraldo Leal | # temporary buffer on disk. By default the platform's temporary directory |
| 1191 | 47 | Beraldo Leal | # will be used. If required, an alternative directory can be specified here. |
| 1192 | 47 | Beraldo Leal | # s3_store_object_buffer_dir = /path/to/dir |
| 1193 | 47 | Beraldo Leal | |
| 1194 | 47 | Beraldo Leal | # ============ RBD Store Options ============================= |
| 1195 | 47 | Beraldo Leal | |
| 1196 | 47 | Beraldo Leal | # Ceph configuration file path |
| 1197 | 47 | Beraldo Leal | # If using cephx authentication, this file should |
| 1198 | 47 | Beraldo Leal | # include a reference to the right keyring |
| 1199 | 47 | Beraldo Leal | # in a client.<USER> section |
| 1200 | 47 | Beraldo Leal | rbd_store_ceph_conf = /etc/ceph/ceph.conf |
| 1201 | 47 | Beraldo Leal | |
| 1202 | 47 | Beraldo Leal | # RADOS user to authenticate as (only applicable if using cephx) |
| 1203 | 47 | Beraldo Leal | rbd_store_user = glance |
| 1204 | 47 | Beraldo Leal | |
| 1205 | 47 | Beraldo Leal | # RADOS pool in which images are stored |
| 1206 | 47 | Beraldo Leal | rbd_store_pool = images |
| 1207 | 47 | Beraldo Leal | |
| 1208 | 47 | Beraldo Leal | # Images will be chunked into objects of this size (in megabytes). |
| 1209 | 47 | Beraldo Leal | # For best performance, this should be a power of two |
| 1210 | 47 | Beraldo Leal | rbd_store_chunk_size = 8 |
| 1211 | 47 | Beraldo Leal | |
| 1212 | 47 | Beraldo Leal | # ============ Delayed Delete Options ============================= |
| 1213 | 47 | Beraldo Leal | |
| 1214 | 47 | Beraldo Leal | # Turn on/off delayed delete |
| 1215 | 47 | Beraldo Leal | delayed_delete = False |
| 1216 | 47 | Beraldo Leal | |
| 1217 | 47 | Beraldo Leal | # Delayed delete time in seconds |
| 1218 | 47 | Beraldo Leal | scrub_time = 43200 |
| 1219 | 47 | Beraldo Leal | |
| 1220 | 47 | Beraldo Leal | # Directory that the scrubber will use to remind itself of what to delete |
| 1221 | 47 | Beraldo Leal | # Make sure this is also set in glance-scrubber.conf |
| 1222 | 47 | Beraldo Leal | scrubber_datadir = /var/lib/glance/scrubber |
| 1223 | 47 | Beraldo Leal | |
| 1224 | 47 | Beraldo Leal | # =============== Image Cache Options ============================= |
| 1225 | 47 | Beraldo Leal | |
| 1226 | 47 | Beraldo Leal | # Base directory that the Image Cache uses |
| 1227 | 47 | Beraldo Leal | image_cache_dir = /var/lib/glance/image-cache/ |
| 1228 | 47 | Beraldo Leal | |
| 1229 | 47 | Beraldo Leal | [paste_deploy] |
| 1230 | 47 | Beraldo Leal | flavor = keystone |
| 1231 | 47 | Beraldo Leal | </pre> |
| 1232 | 47 | Beraldo Leal | |
| 1233 | 47 | Beraldo Leal | */etc/glance/glance-api-paste.ini*: |
| 1234 | 47 | Beraldo Leal | |
| 1235 | 47 | Beraldo Leal | <pre> |
| 1236 | 47 | Beraldo Leal | # Default minimal pipeline |
| 1237 | 47 | Beraldo Leal | [pipeline:glance-api] |
| 1238 | 47 | Beraldo Leal | pipeline = versionnegotiation context apiv1app authtoken |
| 1239 | 47 | Beraldo Leal | |
| 1240 | 47 | Beraldo Leal | # Use the following pipeline for keystone auth |
| 1241 | 47 | Beraldo Leal | # i.e. in glance-api.conf: |
| 1242 | 47 | Beraldo Leal | # [paste_deploy] |
| 1243 | 47 | Beraldo Leal | # flavor = keystone |
| 1244 | 47 | Beraldo Leal | # |
| 1245 | 47 | Beraldo Leal | [pipeline:glance-api-keystone] |
| 1246 | 47 | Beraldo Leal | pipeline = versionnegotiation authtoken context apiv1app |
| 1247 | 47 | Beraldo Leal | |
| 1248 | 47 | Beraldo Leal | # Use the following pipeline to enable transparent caching of image files |
| 1249 | 47 | Beraldo Leal | # i.e. in glance-api.conf: |
| 1250 | 47 | Beraldo Leal | # [paste_deploy] |
| 1251 | 47 | Beraldo Leal | # flavor = caching |
| 1252 | 47 | Beraldo Leal | # |
| 1253 | 47 | Beraldo Leal | [pipeline:glance-api-caching] |
| 1254 | 47 | Beraldo Leal | pipeline = versionnegotiation context cache apiv1app |
| 1255 | 47 | Beraldo Leal | |
| 1256 | 47 | Beraldo Leal | # Use the following pipeline for keystone auth with caching |
| 1257 | 47 | Beraldo Leal | # i.e. in glance-api.conf: |
| 1258 | 47 | Beraldo Leal | # [paste_deploy] |
| 1259 | 47 | Beraldo Leal | # flavor = keystone+caching |
| 1260 | 47 | Beraldo Leal | # |
| 1261 | 47 | Beraldo Leal | [pipeline:glance-api-keystone+caching] |
| 1262 | 47 | Beraldo Leal | pipeline = versionnegotiation authtoken context cache apiv1app |
| 1263 | 47 | Beraldo Leal | |
| 1264 | 47 | Beraldo Leal | # Use the following pipeline to enable the Image Cache Management API |
| 1265 | 47 | Beraldo Leal | # i.e. in glance-api.conf: |
| 1266 | 47 | Beraldo Leal | # [paste_deploy] |
| 1267 | 47 | Beraldo Leal | # flavor = cachemanagement |
| 1268 | 47 | Beraldo Leal | # |
| 1269 | 47 | Beraldo Leal | [pipeline:glance-api-cachemanagement] |
| 1270 | 47 | Beraldo Leal | pipeline = versionnegotiation context cache cachemanage apiv1app |
| 1271 | 47 | Beraldo Leal | |
| 1272 | 47 | Beraldo Leal | # Use the following pipeline for keystone auth with cache management |
| 1273 | 47 | Beraldo Leal | # i.e. in glance-api.conf: |
| 1274 | 47 | Beraldo Leal | # [paste_deploy] |
| 1275 | 47 | Beraldo Leal | # flavor = keystone+cachemanagement |
| 1276 | 47 | Beraldo Leal | # |
| 1277 | 47 | Beraldo Leal | [pipeline:glance-api-keystone+cachemanagement] |
| 1278 | 47 | Beraldo Leal | pipeline = versionnegotiation authtoken context cache cachemanage apiv1app |
| 1279 | 47 | Beraldo Leal | |
| 1280 | 47 | Beraldo Leal | [app:apiv1app] |
| 1281 | 47 | Beraldo Leal | paste.app_factory = glance.common.wsgi:app_factory |
| 1282 | 47 | Beraldo Leal | glance.app_factory = glance.api.v1.router:API |
| 1283 | 47 | Beraldo Leal | |
| 1284 | 47 | Beraldo Leal | [filter:versionnegotiation] |
| 1285 | 47 | Beraldo Leal | paste.filter_factory = glance.common.wsgi:filter_factory |
| 1286 | 47 | Beraldo Leal | glance.filter_factory = glance.api.middleware.version_negotiation:VersionNegotiationFilter |
| 1287 | 47 | Beraldo Leal | |
| 1288 | 47 | Beraldo Leal | [filter:cache] |
| 1289 | 47 | Beraldo Leal | paste.filter_factory = glance.common.wsgi:filter_factory |
| 1290 | 47 | Beraldo Leal | glance.filter_factory = glance.api.middleware.cache:CacheFilter |
| 1291 | 47 | Beraldo Leal | |
| 1292 | 47 | Beraldo Leal | [filter:cachemanage] |
| 1293 | 47 | Beraldo Leal | paste.filter_factory = glance.common.wsgi:filter_factory |
| 1294 | 47 | Beraldo Leal | glance.filter_factory = glance.api.middleware.cache_manage:CacheManageFilter |
| 1295 | 47 | Beraldo Leal | |
| 1296 | 47 | Beraldo Leal | [filter:context] |
| 1297 | 47 | Beraldo Leal | paste.filter_factory = glance.common.wsgi:filter_factory |
| 1298 | 47 | Beraldo Leal | glance.filter_factory = glance.common.context:ContextMiddleware |
| 1299 | 47 | Beraldo Leal | |
| 1300 | 47 | Beraldo Leal | [filter:authtoken] |
| 1301 | 47 | Beraldo Leal | paste.filter_factory = keystone.middleware.auth_token:filter_factory |
| 1302 | 47 | Beraldo Leal | service_protocol = http |
| 1303 | 47 | Beraldo Leal | service_host = 192.168.69.1 |
| 1304 | 47 | Beraldo Leal | service_port = 5000 |
| 1305 | 47 | Beraldo Leal | auth_host = 192.168.69.1 |
| 1306 | 47 | Beraldo Leal | auth_port = 35357 |
| 1307 | 47 | Beraldo Leal | auth_protocol = http |
| 1308 | 47 | Beraldo Leal | auth_uri = http://192.168.69.1:5000/ |
| 1309 | 47 | Beraldo Leal | admin_tenant_name = service |
| 1310 | 47 | Beraldo Leal | admin_user = glance |
| 1311 | 47 | Beraldo Leal | admin_password = glancepass |
| 1312 | 47 | Beraldo Leal | </pre> |
| 1313 | 48 | Beraldo Leal | |
| 1314 | 48 | Beraldo Leal | */etc/glance/glance-registry.conf*: |
| 1315 | 48 | Beraldo Leal | |
| 1316 | 48 | Beraldo Leal | <pre> |
| 1317 | 48 | Beraldo Leal | [DEFAULT] |
| 1318 | 48 | Beraldo Leal | # Show more verbose log output (sets INFO log level output) |
| 1319 | 48 | Beraldo Leal | verbose = True |
| 1320 | 48 | Beraldo Leal | |
| 1321 | 48 | Beraldo Leal | # Show debugging output in logs (sets DEBUG log level output) |
| 1322 | 48 | Beraldo Leal | debug = True |
| 1323 | 48 | Beraldo Leal | |
| 1324 | 48 | Beraldo Leal | # Address to bind the registry server |
| 1325 | 48 | Beraldo Leal | bind_host = 0.0.0.0 |
| 1326 | 48 | Beraldo Leal | |
| 1327 | 48 | Beraldo Leal | # Port the bind the registry server to |
| 1328 | 48 | Beraldo Leal | bind_port = 9191 |
| 1329 | 48 | Beraldo Leal | |
| 1330 | 48 | Beraldo Leal | # Log to this file. Make sure you do not set the same log |
| 1331 | 48 | Beraldo Leal | # file for both the API and registry servers! |
| 1332 | 48 | Beraldo Leal | log_file = /var/log/glance/registry.log |
| 1333 | 48 | Beraldo Leal | |
| 1334 | 48 | Beraldo Leal | # Backlog requests when creating socket |
| 1335 | 48 | Beraldo Leal | backlog = 4096 |
| 1336 | 48 | Beraldo Leal | |
| 1337 | 48 | Beraldo Leal | # SQLAlchemy connection string for the reference implementation |
| 1338 | 48 | Beraldo Leal | # registry server. Any valid SQLAlchemy connection string is fine. |
| 1339 | 48 | Beraldo Leal | # See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine |
| 1340 | 48 | Beraldo Leal | sql_connection = mysql://glance:glancepass@192.168.69.1/glance |
| 1341 | 48 | Beraldo Leal | |
| 1342 | 48 | Beraldo Leal | # Period in seconds after which SQLAlchemy should reestablish its connection |
| 1343 | 48 | Beraldo Leal | # to the database. |
| 1344 | 48 | Beraldo Leal | # |
| 1345 | 48 | Beraldo Leal | # MySQL uses a default `wait_timeout` of 8 hours, after which it will drop |
| 1346 | 48 | Beraldo Leal | # idle connections. This can result in 'MySQL Gone Away' exceptions. If you |
| 1347 | 48 | Beraldo Leal | # notice this, you can lower this value to ensure that SQLAlchemy reconnects |
| 1348 | 48 | Beraldo Leal | # before MySQL can drop the connection. |
| 1349 | 48 | Beraldo Leal | sql_idle_timeout = 3600 |
| 1350 | 48 | Beraldo Leal | |
| 1351 | 48 | Beraldo Leal | # Limit the api to return `param_limit_max` items in a call to a container. If |
| 1352 | 48 | Beraldo Leal | # a larger `limit` query param is provided, it will be reduced to this value. |
| 1353 | 48 | Beraldo Leal | api_limit_max = 1000 |
| 1354 | 48 | Beraldo Leal | |
| 1355 | 48 | Beraldo Leal | # If a `limit` query param is not provided in an api request, it will |
| 1356 | 48 | Beraldo Leal | # default to `limit_param_default` |
| 1357 | 48 | Beraldo Leal | limit_param_default = 25 |
| 1358 | 48 | Beraldo Leal | |
| 1359 | 48 | Beraldo Leal | # Role used to identify an authenticated user as administrator |
| 1360 | 48 | Beraldo Leal | #admin_role = admin |
| 1361 | 48 | Beraldo Leal | |
| 1362 | 48 | Beraldo Leal | # ================= Syslog Options ============================ |
| 1363 | 48 | Beraldo Leal | |
| 1364 | 48 | Beraldo Leal | # Send logs to syslog (/dev/log) instead of to file specified |
| 1365 | 48 | Beraldo Leal | # by `log_file` |
| 1366 | 48 | Beraldo Leal | use_syslog = True |
| 1367 | 48 | Beraldo Leal | |
| 1368 | 48 | Beraldo Leal | # Facility to use. If unset defaults to LOG_USER. |
| 1369 | 48 | Beraldo Leal | # syslog_log_facility = LOG_LOCAL1 |
| 1370 | 48 | Beraldo Leal | |
| 1371 | 48 | Beraldo Leal | # ================= SSL Options =============================== |
| 1372 | 48 | Beraldo Leal | |
| 1373 | 48 | Beraldo Leal | # Certificate file to use when starting registry server securely |
| 1374 | 48 | Beraldo Leal | # cert_file = /path/to/certfile |
| 1375 | 48 | Beraldo Leal | |
| 1376 | 48 | Beraldo Leal | # Private key file to use when starting registry server securely |
| 1377 | 48 | Beraldo Leal | # key_file = /path/to/keyfile |
| 1378 | 48 | Beraldo Leal | |
| 1379 | 48 | Beraldo Leal | [paste_deploy] |
| 1380 | 48 | Beraldo Leal | flavor = keystone |
| 1381 | 48 | Beraldo Leal | </pre> |
| 1382 | 48 | Beraldo Leal | |
| 1383 | 48 | Beraldo Leal | |
| 1384 | 48 | Beraldo Leal | */etc/glance/glance-registry-paste.ini*: |
| 1385 | 48 | Beraldo Leal | |
| 1386 | 48 | Beraldo Leal | <pre> |
| 1387 | 48 | Beraldo Leal | # Default minimal pipeline |
| 1388 | 48 | Beraldo Leal | [pipeline:glance-registry] |
| 1389 | 48 | Beraldo Leal | pipeline = context registryapp authtoken |
| 1390 | 48 | Beraldo Leal | |
| 1391 | 48 | Beraldo Leal | # Use the following pipeline for keystone auth |
| 1392 | 48 | Beraldo Leal | # i.e. in glance-registry.conf: |
| 1393 | 48 | Beraldo Leal | # [paste_deploy] |
| 1394 | 48 | Beraldo Leal | # flavor = keystone |
| 1395 | 48 | Beraldo Leal | # |
| 1396 | 48 | Beraldo Leal | [pipeline:glance-registry-keystone] |
| 1397 | 48 | Beraldo Leal | pipeline = authtoken context registryapp |
| 1398 | 48 | Beraldo Leal | |
| 1399 | 48 | Beraldo Leal | [app:registryapp] |
| 1400 | 48 | Beraldo Leal | paste.app_factory = glance.common.wsgi:app_factory |
| 1401 | 48 | Beraldo Leal | glance.app_factory = glance.registry.api.v1:API |
| 1402 | 48 | Beraldo Leal | |
| 1403 | 48 | Beraldo Leal | [filter:context] |
| 1404 | 48 | Beraldo Leal | context_class = glance.registry.context.RequestContext |
| 1405 | 48 | Beraldo Leal | paste.filter_factory = glance.common.wsgi:filter_factory |
| 1406 | 48 | Beraldo Leal | glance.filter_factory = glance.common.context:ContextMiddleware |
| 1407 | 48 | Beraldo Leal | |
| 1408 | 48 | Beraldo Leal | [filter:authtoken] |
| 1409 | 48 | Beraldo Leal | paste.filter_factory = keystone.middleware.auth_token:filter_factory |
| 1410 | 48 | Beraldo Leal | service_protocol = http |
| 1411 | 48 | Beraldo Leal | service_host = 192.168.69.1 |
| 1412 | 48 | Beraldo Leal | service_port = 5000 |
| 1413 | 48 | Beraldo Leal | auth_host = 192.168.69.1 |
| 1414 | 48 | Beraldo Leal | auth_port = 35357 |
| 1415 | 48 | Beraldo Leal | auth_protocol = http |
| 1416 | 48 | Beraldo Leal | auth_uri = http://192.168.69.1:5000/ |
| 1417 | 48 | Beraldo Leal | admin_tenant_name = service |
| 1418 | 48 | Beraldo Leal | admin_user = glance |
| 1419 | 48 | Beraldo Leal | admin_password = glancepass |
| 1420 | 49 | Beraldo Leal | </pre> |
| 1421 | 48 | Beraldo Leal | |
| 1422 | 49 | Beraldo Leal | */etc/glance/glance-scrubber.conf*: |
| 1423 | 49 | Beraldo Leal | |
| 1424 | 49 | Beraldo Leal | <pre> |
| 1425 | 49 | Beraldo Leal | [DEFAULT] |
| 1426 | 49 | Beraldo Leal | # Show more verbose log output (sets INFO log level output) |
| 1427 | 49 | Beraldo Leal | verbose = True |
| 1428 | 49 | Beraldo Leal | |
| 1429 | 49 | Beraldo Leal | # Show debugging output in logs (sets DEBUG log level output) |
| 1430 | 49 | Beraldo Leal | debug = False |
| 1431 | 49 | Beraldo Leal | |
| 1432 | 49 | Beraldo Leal | # Log to this file. Make sure you do not set the same log |
| 1433 | 49 | Beraldo Leal | # file for both the API and registry servers! |
| 1434 | 49 | Beraldo Leal | log_file = /var/log/glance/scrubber.log |
| 1435 | 49 | Beraldo Leal | |
| 1436 | 49 | Beraldo Leal | # Send logs to syslog (/dev/log) instead of to file specified by `log_file` |
| 1437 | 49 | Beraldo Leal | use_syslog = False |
| 1438 | 49 | Beraldo Leal | |
| 1439 | 49 | Beraldo Leal | # Should we run our own loop or rely on cron/scheduler to run us |
| 1440 | 49 | Beraldo Leal | daemon = False |
| 1441 | 49 | Beraldo Leal | |
| 1442 | 49 | Beraldo Leal | # Loop time between checking for new items to schedule for delete |
| 1443 | 49 | Beraldo Leal | wakeup_time = 300 |
| 1444 | 49 | Beraldo Leal | |
| 1445 | 49 | Beraldo Leal | sql_connection = mysql://glance:glancepass@192.168.69.1/glance |
| 1446 | 49 | Beraldo Leal | |
| 1447 | 49 | Beraldo Leal | # Directory that the scrubber will use to remind itself of what to delete |
| 1448 | 49 | Beraldo Leal | # Make sure this is also set in glance-api.conf |
| 1449 | 49 | Beraldo Leal | scrubber_datadir = /var/lib/glance/scrubber |
| 1450 | 49 | Beraldo Leal | |
| 1451 | 49 | Beraldo Leal | # Only one server in your deployment should be designated the cleanup host |
| 1452 | 49 | Beraldo Leal | cleanup_scrubber = False |
| 1453 | 49 | Beraldo Leal | |
| 1454 | 49 | Beraldo Leal | # pending_delete items older than this time are candidates for cleanup |
| 1455 | 49 | Beraldo Leal | cleanup_scrubber_time = 86400 |
| 1456 | 49 | Beraldo Leal | |
| 1457 | 49 | Beraldo Leal | # Address to find the registry server for cleanups |
| 1458 | 1 | Beraldo Leal | registry_host = 0.0.0.0 |
| 1459 | 49 | Beraldo Leal | |
| 1460 | 49 | Beraldo Leal | # Port the registry server is listening on |
| 1461 | 49 | Beraldo Leal | registry_port = 9191 |
| 1462 | 48 | Beraldo Leal | </pre> |
| 1463 | 50 | Beraldo Leal | |
| 1464 | 64 | Beraldo Leal | h2. Synchronizing the database and restarting the services |
| 1465 | 50 | Beraldo Leal | |
| 1466 | 1 | Beraldo Leal | <pre> |
| 1467 | 1 | Beraldo Leal | # glance-manage version_control 0 |
| 1468 | 1 | Beraldo Leal | # glance-manage db_sync |
| 1469 | 50 | Beraldo Leal | # service glance-registry restart |
| 1470 | 50 | Beraldo Leal | # service glance-api restart |
| 1471 | 50 | Beraldo Leal | </pre> |
| 1472 | 50 | Beraldo Leal | |
| 1473 | 64 | Beraldo Leal | h2. Testing the Glance installation: |
| 1474 | 50 | Beraldo Leal | |
| 1475 | 64 | Beraldo Leal | Put the new env vars to _/root/openstackrc_: |
| 1476 | 64 | Beraldo Leal | |
| 1477 | 52 | Beraldo Leal | <pre> |
| 1478 | 52 | Beraldo Leal | # Used for Keystone |
| 1479 | 52 | Beraldo Leal | export SERVICE_ENDPOINT=http://192.168.69.1:35357/v2.0/ |
| 1480 | 52 | Beraldo Leal | export SERVICE_TOKEN=012345SECRET99TOKEN012345 |
| 1481 | 52 | Beraldo Leal | |
| 1482 | 52 | Beraldo Leal | # Used for swift |
| 1483 | 52 | Beraldo Leal | export ST_AUTH=http://192.168.69.1:5000/v2.0 |
| 1484 | 52 | Beraldo Leal | export ST_USER=openstackDemo:admin |
| 1485 | 52 | Beraldo Leal | export ST_KEY=adminpass |
| 1486 | 52 | Beraldo Leal | export OS_REGION_NAME=RegionOne |
| 1487 | 52 | Beraldo Leal | |
| 1488 | 1 | Beraldo Leal | # Used for glance |
| 1489 | 1 | Beraldo Leal | export OS_USERNAME=admin |
| 1490 | 52 | Beraldo Leal | export OS_TENANT_NAME=openstackDemo |
| 1491 | 52 | Beraldo Leal | export OS_PASSWORD=adminpass |
| 1492 | 52 | Beraldo Leal | export OS_AUTH_URL=http://192.168.69.1:5000/v2.0/ |
| 1493 | 52 | Beraldo Leal | export OS_REGION_NAME=RegionOne |
| 1494 | 52 | Beraldo Leal | </pre> |
| 1495 | 52 | Beraldo Leal | |
| 1496 | 1 | Beraldo Leal | |
| 1497 | 64 | Beraldo Leal | Download a test image: |
| 1498 | 64 | Beraldo Leal | |
| 1499 | 50 | Beraldo Leal | <pre> |
| 1500 | 50 | Beraldo Leal | mkdir /tmp/images |
| 1501 | 50 | Beraldo Leal | cd /tmp/images/ |
| 1502 | 50 | Beraldo Leal | wget http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz |
| 1503 | 50 | Beraldo Leal | tar -zxvf ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz |
| 1504 | 1 | Beraldo Leal | </pre> |
| 1505 | 50 | Beraldo Leal | |
| 1506 | 64 | Beraldo Leal | Upload the image: |
| 1507 | 50 | Beraldo Leal | |
| 1508 | 50 | Beraldo Leal | <pre> |
| 1509 | 50 | Beraldo Leal | # cd /tmp/images/ |
| 1510 | 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 |
| 1511 | 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 |
| 1512 | 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 |
| 1513 | 50 | Beraldo Leal | </pre> |
| 1514 | 51 | Beraldo Leal | |
| 1515 | 64 | Beraldo Leal | List the images: |
| 1516 | 51 | Beraldo Leal | |
| 1517 | 51 | Beraldo Leal | <pre> |
| 1518 | 51 | Beraldo Leal | # glance index |
| 1519 | 51 | Beraldo Leal | </pre> |
| 1520 | 65 | Beraldo Leal | |
| 1521 | 65 | Beraldo Leal | |
| 1522 | 65 | Beraldo Leal | h1. Compute service - nova |
| 1523 | 65 | Beraldo Leal | |
| 1524 | 65 | Beraldo Leal | Nova is the project name for OpenStack Compute, a cloud computing fabric controller, the main part of an IaaS system. Individuals and organizations can use Nova to host and manage their own cloud computing systems. Nova originated as a project out of NASA Ames Research Laboratory. |
| 1525 | 65 | Beraldo Leal | |
| 1526 | 66 | Beraldo Leal | OpenStack Compute gives you a tool to orchestrate a cloud, including running instances, managing networks, and controlling access to the cloud through users and projects. The underlying open source project's name is Nova, and it provides the software that can control an Infrastructure as a Service (IaaS) cloud computing platform. It is similar in scope to Amazon EC2 and Rackspace Cloud Servers. OpenStack Compute does not include any virtualization software; rather it defines drivers that interact with underlying virtualization mechanisms that run on your host operating system, and exposes functionality over a web-based API. |
| 1527 | 66 | Beraldo Leal | |
| 1528 | 66 | Beraldo Leal | |
| 1529 | 65 | Beraldo Leal | h2. AMQP and Nova |
| 1530 | 65 | Beraldo Leal | |
| 1531 | 65 | Beraldo Leal | AMQP is the messaging technology chosen by the OpenStack cloud. The AMQP broker, either RabbitMQ or Qpid, sits between any two Nova components and allows them to communicate in a loosely coupled fashion. More precisely, Nova components (the compute fabric of OpenStack) use Remote Procedure Calls (RPC hereinafter) to communicate to one another. |
| 1532 | 1 | Beraldo Leal | |
| 1533 | 66 | Beraldo Leal | For more information about AMQP in Nova, please read the "AMQP section in nova manual":http://docs.openstack.org/developer/nova/devref/rpc.html |
| 1534 | 66 | Beraldo Leal | |
| 1535 | 66 | Beraldo Leal | h2. Hypervisor |
| 1536 | 66 | Beraldo Leal | |
| 1537 | 66 | Beraldo Leal | For production environments the most tested hypervisors are KVM and Xen-based hypervisors. KVM runs through libvirt, Xen runs best through XenAPI calls. KVM is selected by default and requires the least additional configuration. This guide offers information on |
| 1538 | 66 | Beraldo Leal | specific walkthrough configuration options to KVM. |
| 1539 | 66 | Beraldo Leal | |
| 1540 | 66 | Beraldo Leal | h3. Configuring the kvm |
| 1541 | 66 | Beraldo Leal | |
| 1542 | 66 | Beraldo Leal | KVM is configured as the default hypervisor for Compute. To enable KVM explicitly, add the following configuration options /etc/nova/nova.conf: |
| 1543 | 66 | Beraldo Leal | |
| 1544 | 66 | Beraldo Leal | <pre> |
| 1545 | 66 | Beraldo Leal | connection_type=libvirt |
| 1546 | 66 | Beraldo Leal | libvirt_type=kvm |
| 1547 | 66 | Beraldo Leal | </pre> |
| 1548 | 66 | Beraldo Leal | |
| 1549 | 66 | Beraldo Leal | The KVM hypervisor supports the following virtual machine image formats: |
| 1550 | 66 | Beraldo Leal | |
| 1551 | 66 | Beraldo Leal | * Raw |
| 1552 | 66 | Beraldo Leal | * QEMU Copy-on-write (qcow2) |
| 1553 | 66 | Beraldo Leal | * VMWare virtual machine disk format (vmdk) |
| 1554 | 66 | Beraldo Leal | |
| 1555 | 66 | Beraldo Leal | h3. Checking for hardware virtualization support |
| 1556 | 66 | Beraldo Leal | |
| 1557 | 66 | Beraldo Leal | The processors of your compute host need to support virtualization technology (VT) to use KVM. |
| 1558 | 66 | Beraldo Leal | |
| 1559 | 66 | Beraldo Leal | If you are running on Ubuntu, use the _kvm-ok_ command to check if your processor has VT support, it is enabled in the BIOS, and KVM is installed properly, as root: |
| 1560 | 66 | Beraldo Leal | |
| 1561 | 66 | Beraldo Leal | <pre> |
| 1562 | 66 | Beraldo Leal | # kvm-ok |
| 1563 | 66 | Beraldo Leal | INFO: /dev/kvm exists |
| 1564 | 66 | Beraldo Leal | KVM acceleration can be used |
| 1565 | 66 | Beraldo Leal | </pre> |
| 1566 | 66 | Beraldo Leal | |
| 1567 | 66 | Beraldo Leal | On distributions that don't have kvm-ok, you can check if your processor has VT support by looking at the processor flags in the /proc/cpuinfo file. For Intel processors, look for the vmx flag, and for AMD processors, look for the svm flag. A simple way to check is to run the following command and see if there is any output: |
| 1568 | 66 | Beraldo Leal | |
| 1569 | 66 | Beraldo Leal | <pre> |
| 1570 | 66 | Beraldo Leal | $ egrep '(vmx|svm)' --color=always /proc/cpuinfo |
| 1571 | 66 | Beraldo Leal | </pre> |
| 1572 | 66 | Beraldo Leal | |
| 1573 | 66 | Beraldo Leal | h3. Enabling KVM |
| 1574 | 66 | Beraldo Leal | |
| 1575 | 66 | Beraldo Leal | KVM requires the kvm and either kvm-intel or kvm-amd modules to be loaded. This may have been configured automatically on your distribution when KVM is installed. You can check that they have been loaded using lsmod, as follows, with expected output for Intel-based processors: |
| 1576 | 66 | Beraldo Leal | |
| 1577 | 66 | Beraldo Leal | <pre> |
| 1578 | 66 | Beraldo Leal | $ lsmod | grep kvm |
| 1579 | 66 | Beraldo Leal | kvm_intel 137721 9 |
| 1580 | 66 | Beraldo Leal | kvm 415459 1 kvm_intel |
| 1581 | 66 | Beraldo Leal | </pre> |
| 1582 | 66 | Beraldo Leal | |
| 1583 | 66 | Beraldo Leal | If your compute host is Intel-based, run the following as root to load the kernel modules: |
| 1584 | 66 | Beraldo Leal | |
| 1585 | 66 | Beraldo Leal | <pre> |
| 1586 | 66 | Beraldo Leal | # modprobe kvm |
| 1587 | 66 | Beraldo Leal | # modprobe kvm-intel |
| 1588 | 66 | Beraldo Leal | </pre> |
| 1589 | 66 | Beraldo Leal | |
| 1590 | 66 | Beraldo Leal | Add the following lines to /etc/modules so that these modules will load on reboot: |
| 1591 | 66 | Beraldo Leal | |
| 1592 | 66 | Beraldo Leal | <pre> |
| 1593 | 66 | Beraldo Leal | kvm |
| 1594 | 66 | Beraldo Leal | kvm-intel |
| 1595 | 66 | Beraldo Leal | </pre> |
| 1596 | 66 | Beraldo Leal | |
| 1597 | 66 | Beraldo Leal | |
| 1598 | 66 | Beraldo Leal | h2. Configuring the Compute Service database backend |
| 1599 | 66 | Beraldo Leal | |
| 1600 | 66 | Beraldo Leal | To configure the MySQL database, create the nova database on the cloud controller machine: |
| 1601 | 66 | Beraldo Leal | |
| 1602 | 66 | Beraldo Leal | <pre> |
| 1603 | 66 | Beraldo Leal | mysql> CREATE DATABASE nova; |
| 1604 | 66 | Beraldo Leal | mysql> GRANT ALL ON nova.* TO 'nova'@'%' IDENTIFIED BY 'novapass'; |
| 1605 | 66 | Beraldo Leal | mysql> quit |
| 1606 | 66 | Beraldo Leal | </pre> |
| 1607 | 66 | Beraldo Leal | |
| 1608 | 66 | Beraldo Leal | h2. Installing the Cloud Controller |
| 1609 | 66 | Beraldo Leal | |
| 1610 | 66 | Beraldo Leal | Install the messaging queue server, RabbitMQ. You also have the option of installing |
| 1611 | 66 | Beraldo Leal | Apache Qpid, refer to the Compute Administration Manual for instructions. |
| 1612 | 66 | Beraldo Leal | |
| 1613 | 66 | Beraldo Leal | <pre> |
| 1614 | 66 | Beraldo Leal | sudo apt-get install rabbitmq-server |
| 1615 | 66 | Beraldo Leal | </pre> |
| 1616 | 66 | Beraldo Leal | |
| 1617 | 66 | Beraldo Leal | Install the required nova- packages, and dependencies are automatically installed. |
| 1618 | 66 | Beraldo Leal | |
| 1619 | 66 | Beraldo Leal | <pre> |
| 1620 | 67 | Beraldo Leal | sudo apt-get install nova-volume nova-compute nova-vncproxy nova-api nova-ajax-console-proxy nova-cert nova-consoleauth nova-doc nova-scheduler nova-network |
| 1621 | 66 | Beraldo Leal | </pre> |
| 1622 | 1 | Beraldo Leal | |
| 1623 | 67 | Beraldo Leal | h3. Configuring nova |
| 1624 | 67 | Beraldo Leal | |
| 1625 | 67 | Beraldo Leal | The packages automatically do these steps for a user named nova, but if you are installing |
| 1626 | 67 | Beraldo Leal | as another user you should ensure that the nova.conf file should have its owner set to |
| 1627 | 67 | Beraldo Leal | root:nova, and mode set to 0640, since the file contains your MySQL server’s username |
| 1628 | 67 | Beraldo Leal | and password. This packaged install ensures that the nova user belongs to the nova group |
| 1629 | 67 | Beraldo Leal | and that the .conf file permissions are set, but here are the manual commands, which |
| 1630 | 67 | Beraldo Leal | should be run as root: |
| 1631 | 67 | Beraldo Leal | |
| 1632 | 67 | Beraldo Leal | <pre> |
| 1633 | 67 | Beraldo Leal | # groupadd nova |
| 1634 | 67 | Beraldo Leal | # usermod -g nova nova |
| 1635 | 67 | Beraldo Leal | # chown -R root:nova /etc/nova |
| 1636 | 67 | Beraldo Leal | # chmod 640 /etc/nova/nova.conf |
| 1637 | 67 | Beraldo Leal | </pre> |
| 1638 | 67 | Beraldo Leal | |
| 1639 | 67 | Beraldo Leal | Modify your nova.conf, nova-compute and api-paste.ini according to the following examples: |
| 1640 | 67 | Beraldo Leal | |
| 1641 | 67 | Beraldo Leal | *nova-compute.conf* |
| 1642 | 67 | Beraldo Leal | <pre> |
| 1643 | 67 | Beraldo Leal | [DEFAULT] |
| 1644 | 67 | Beraldo Leal | libvirt_type=kvm |
| 1645 | 67 | Beraldo Leal | </pre> |
| 1646 | 67 | Beraldo Leal | |
| 1647 | 67 | Beraldo Leal | *nova.conf* |
| 1648 | 67 | Beraldo Leal | <pre> |
| 1649 | 67 | Beraldo Leal | [DEFAULT] |
| 1650 | 67 | Beraldo Leal | # LOGS/STATE |
| 1651 | 67 | Beraldo Leal | verbose=True |
| 1652 | 67 | Beraldo Leal | use_syslog=False |
| 1653 | 67 | Beraldo Leal | debug=False |
| 1654 | 67 | Beraldo Leal | |
| 1655 | 67 | Beraldo Leal | #logging_default_format_string = '%(asctime)s %(levelname)s %(name)s [-] %(message)s' |
| 1656 | 67 | Beraldo Leal | logging_default_format_string = '%(asctime)s %(levelname)s %(name)s [-] %(message)s' |
| 1657 | 67 | Beraldo Leal | logging_context_format_string = '%(asctime)s %(levelname)s %(name)s [-] %(message)s' |
| 1658 | 67 | Beraldo Leal | |
| 1659 | 67 | Beraldo Leal | # AUTHENTICATION |
| 1660 | 67 | Beraldo Leal | auth_strategy=keystone |
| 1661 | 67 | Beraldo Leal | logdir=/var/log/nova/ |
| 1662 | 67 | Beraldo Leal | state_path=/var/lib/nova |
| 1663 | 67 | Beraldo Leal | lock_path=/var/run/nova |
| 1664 | 67 | Beraldo Leal | bindir=/usr/bin/ |
| 1665 | 67 | Beraldo Leal | |
| 1666 | 67 | Beraldo Leal | force_to_raw=False |
| 1667 | 67 | Beraldo Leal | |
| 1668 | 67 | Beraldo Leal | # SCHEDULER |
| 1669 | 67 | Beraldo Leal | compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler |
| 1670 | 67 | Beraldo Leal | |
| 1671 | 67 | Beraldo Leal | scheduler_default_filters=AllHostsFilter |
| 1672 | 67 | Beraldo Leal | |
| 1673 | 67 | Beraldo Leal | # VOLUMES |
| 1674 | 67 | Beraldo Leal | volume_group=nova-volumes |
| 1675 | 67 | Beraldo Leal | volume_name_template=volume-%08x |
| 1676 | 67 | Beraldo Leal | iscsi_helper=tgtadm |
| 1677 | 67 | Beraldo Leal | |
| 1678 | 67 | Beraldo Leal | # DATABASE |
| 1679 | 67 | Beraldo Leal | sql_connection=mysql://nova:novapass@192.168.69.1/nova |
| 1680 | 67 | Beraldo Leal | |
| 1681 | 67 | Beraldo Leal | # COMPUTE |
| 1682 | 67 | Beraldo Leal | libvirt_type=kvm |
| 1683 | 67 | Beraldo Leal | connection_type=libvirt |
| 1684 | 67 | Beraldo Leal | instance_name_template=instance-%08x |
| 1685 | 67 | Beraldo Leal | api_paste_config=/etc/nova/api-paste.ini |
| 1686 | 67 | Beraldo Leal | allow_resize_to_same_host=True |
| 1687 | 67 | Beraldo Leal | |
| 1688 | 67 | Beraldo Leal | # APIS |
| 1689 | 67 | Beraldo Leal | osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions |
| 1690 | 67 | Beraldo Leal | ec2_dmz_host=192.168.69.1 |
| 1691 | 67 | Beraldo Leal | s3_host=192.168.69.1 |
| 1692 | 67 | Beraldo Leal | # RABBITMQ |
| 1693 | 67 | Beraldo Leal | rabbit_host=192.168.69.1 |
| 1694 | 67 | Beraldo Leal | # GLANCE |
| 1695 | 67 | Beraldo Leal | image_service=nova.image.glance.GlanceImageService |
| 1696 | 67 | Beraldo Leal | glance_api_servers=192.168.69.1:9292 |
| 1697 | 67 | Beraldo Leal | # NETWORK |
| 1698 | 67 | Beraldo Leal | network_manager=nova.network.manager.FlatDHCPManager |
| 1699 | 67 | Beraldo Leal | force_dhcp_release=True |
| 1700 | 67 | Beraldo Leal | dhcpbridge_flagfile=/etc/nova/nova.conf |
| 1701 | 67 | Beraldo Leal | firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver |
| 1702 | 67 | Beraldo Leal | my_ip=192.168.69.1 |
| 1703 | 67 | Beraldo Leal | public_interface=br100 |
| 1704 | 67 | Beraldo Leal | vlan_interface=eth0 |
| 1705 | 67 | Beraldo Leal | flat_network_bridge=br100 |
| 1706 | 67 | Beraldo Leal | flat_interface=eth0 |
| 1707 | 67 | Beraldo Leal | fixed_range=192.168.70.0/24 |
| 1708 | 67 | Beraldo Leal | # NOVNC CONSOLE - You should change this IP to public ip of current nova-compute machine |
| 1709 | 67 | Beraldo Leal | novncproxy_base_url=http://200.145.46.167:6080/vnc_auto.html |
| 1710 | 67 | Beraldo Leal | vncserver_proxyclient_address=200.145.46.167 |
| 1711 | 67 | Beraldo Leal | vncserver_listen=200.145.46.167 |
| 1712 | 67 | Beraldo Leal | xvpvncproxy_base_url=http://200.145.46.167:6081/console |
| 1713 | 67 | Beraldo Leal | </pre> |
| 1714 | 67 | Beraldo Leal | |
| 1715 | 67 | Beraldo Leal | *api-paste.ini* |
| 1716 | 67 | Beraldo Leal | <pre> |
| 1717 | 67 | Beraldo Leal | ############ |
| 1718 | 67 | Beraldo Leal | # Metadata # |
| 1719 | 67 | Beraldo Leal | ############ |
| 1720 | 67 | Beraldo Leal | [composite:metadata] |
| 1721 | 67 | Beraldo Leal | use = egg:Paste#urlmap |
| 1722 | 67 | Beraldo Leal | /: metaversions |
| 1723 | 67 | Beraldo Leal | /latest: meta |
| 1724 | 67 | Beraldo Leal | /1.0: meta |
| 1725 | 67 | Beraldo Leal | /2007-01-19: meta |
| 1726 | 67 | Beraldo Leal | /2007-03-01: meta |
| 1727 | 67 | Beraldo Leal | /2007-08-29: meta |
| 1728 | 67 | Beraldo Leal | /2007-10-10: meta |
| 1729 | 67 | Beraldo Leal | /2007-12-15: meta |
| 1730 | 67 | Beraldo Leal | /2008-02-01: meta |
| 1731 | 67 | Beraldo Leal | /2008-09-01: meta |
| 1732 | 67 | Beraldo Leal | /2009-04-04: meta |
| 1733 | 67 | Beraldo Leal | |
| 1734 | 67 | Beraldo Leal | [pipeline:metaversions] |
| 1735 | 67 | Beraldo Leal | pipeline = ec2faultwrap logrequest metaverapp |
| 1736 | 67 | Beraldo Leal | |
| 1737 | 67 | Beraldo Leal | [pipeline:meta] |
| 1738 | 67 | Beraldo Leal | pipeline = ec2faultwrap logrequest metaapp |
| 1739 | 67 | Beraldo Leal | |
| 1740 | 67 | Beraldo Leal | [app:metaverapp] |
| 1741 | 67 | Beraldo Leal | paste.app_factory = nova.api.metadata.handler:Versions.factory |
| 1742 | 67 | Beraldo Leal | |
| 1743 | 67 | Beraldo Leal | [app:metaapp] |
| 1744 | 67 | Beraldo Leal | paste.app_factory = nova.api.metadata.handler:MetadataRequestHandler.factory |
| 1745 | 67 | Beraldo Leal | |
| 1746 | 67 | Beraldo Leal | ####### |
| 1747 | 67 | Beraldo Leal | # EC2 # |
| 1748 | 67 | Beraldo Leal | ####### |
| 1749 | 67 | Beraldo Leal | |
| 1750 | 67 | Beraldo Leal | [composite:ec2] |
| 1751 | 67 | Beraldo Leal | use = egg:Paste#urlmap |
| 1752 | 67 | Beraldo Leal | /services/Cloud: ec2cloud |
| 1753 | 67 | Beraldo Leal | |
| 1754 | 67 | Beraldo Leal | [composite:ec2cloud] |
| 1755 | 67 | Beraldo Leal | use = call:nova.api.auth:pipeline_factory |
| 1756 | 67 | Beraldo Leal | noauth = ec2faultwrap logrequest ec2noauth cloudrequest validator ec2executor |
| 1757 | 67 | Beraldo Leal | deprecated = ec2faultwrap logrequest authenticate cloudrequest validator ec2executor |
| 1758 | 67 | Beraldo Leal | keystone = ec2faultwrap logrequest ec2keystoneauth cloudrequest validator ec2executor |
| 1759 | 67 | Beraldo Leal | |
| 1760 | 67 | Beraldo Leal | [filter:ec2faultwrap] |
| 1761 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:FaultWrapper.factory |
| 1762 | 67 | Beraldo Leal | |
| 1763 | 67 | Beraldo Leal | [filter:logrequest] |
| 1764 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:RequestLogging.factory |
| 1765 | 67 | Beraldo Leal | |
| 1766 | 67 | Beraldo Leal | [filter:ec2lockout] |
| 1767 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:Lockout.factory |
| 1768 | 67 | Beraldo Leal | |
| 1769 | 67 | Beraldo Leal | [filter:totoken] |
| 1770 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:EC2Token.factory |
| 1771 | 67 | Beraldo Leal | |
| 1772 | 67 | Beraldo Leal | [filter:ec2keystoneauth] |
| 1773 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:EC2KeystoneAuth.factory |
| 1774 | 67 | Beraldo Leal | |
| 1775 | 67 | Beraldo Leal | [filter:ec2noauth] |
| 1776 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:NoAuth.factory |
| 1777 | 67 | Beraldo Leal | |
| 1778 | 67 | Beraldo Leal | [filter:authenticate] |
| 1779 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:Authenticate.factory |
| 1780 | 67 | Beraldo Leal | |
| 1781 | 67 | Beraldo Leal | [filter:cloudrequest] |
| 1782 | 67 | Beraldo Leal | controller = nova.api.ec2.cloud.CloudController |
| 1783 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:Requestify.factory |
| 1784 | 67 | Beraldo Leal | |
| 1785 | 67 | Beraldo Leal | [filter:authorizer] |
| 1786 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:Authorizer.factory |
| 1787 | 67 | Beraldo Leal | |
| 1788 | 67 | Beraldo Leal | [filter:validator] |
| 1789 | 67 | Beraldo Leal | paste.filter_factory = nova.api.ec2:Validator.factory |
| 1790 | 67 | Beraldo Leal | |
| 1791 | 67 | Beraldo Leal | [app:ec2executor] |
| 1792 | 67 | Beraldo Leal | paste.app_factory = nova.api.ec2:Executor.factory |
| 1793 | 67 | Beraldo Leal | |
| 1794 | 67 | Beraldo Leal | ############# |
| 1795 | 67 | Beraldo Leal | # Openstack # |
| 1796 | 67 | Beraldo Leal | ############# |
| 1797 | 67 | Beraldo Leal | |
| 1798 | 67 | Beraldo Leal | [composite:osapi_compute] |
| 1799 | 67 | Beraldo Leal | use = call:nova.api.openstack.urlmap:urlmap_factory |
| 1800 | 67 | Beraldo Leal | /: oscomputeversions |
| 1801 | 67 | Beraldo Leal | /v1.1: openstack_compute_api_v2 |
| 1802 | 67 | Beraldo Leal | /v2: openstack_compute_api_v2 |
| 1803 | 67 | Beraldo Leal | |
| 1804 | 67 | Beraldo Leal | [composite:osapi_volume] |
| 1805 | 67 | Beraldo Leal | use = call:nova.api.openstack.urlmap:urlmap_factory |
| 1806 | 67 | Beraldo Leal | /: osvolumeversions |
| 1807 | 67 | Beraldo Leal | /v1: openstack_volume_api_v1 |
| 1808 | 67 | Beraldo Leal | |
| 1809 | 67 | Beraldo Leal | [composite:openstack_compute_api_v2] |
| 1810 | 67 | Beraldo Leal | use = call:nova.api.auth:pipeline_factory |
| 1811 | 67 | Beraldo Leal | noauth = faultwrap noauth ratelimit osapi_compute_app_v2 |
| 1812 | 67 | Beraldo Leal | deprecated = faultwrap auth ratelimit osapi_compute_app_v2 |
| 1813 | 67 | Beraldo Leal | keystone = faultwrap authtoken keystonecontext ratelimit osapi_compute_app_v2 |
| 1814 | 67 | Beraldo Leal | keystone_nolimit = faultwrap authtoken keystonecontext osapi_compute_app_v2 |
| 1815 | 67 | Beraldo Leal | |
| 1816 | 67 | Beraldo Leal | [composite:openstack_volume_api_v1] |
| 1817 | 67 | Beraldo Leal | use = call:nova.api.auth:pipeline_factory |
| 1818 | 67 | Beraldo Leal | noauth = faultwrap noauth ratelimit osapi_volume_app_v1 |
| 1819 | 67 | Beraldo Leal | deprecated = faultwrap auth ratelimit osapi_volume_app_v1 |
| 1820 | 67 | Beraldo Leal | keystone = faultwrap authtoken keystonecontext ratelimit osapi_volume_app_v1 |
| 1821 | 67 | Beraldo Leal | keystone_nolimit = faultwrap authtoken keystonecontext osapi_volume_app_v1 |
| 1822 | 67 | Beraldo Leal | |
| 1823 | 67 | Beraldo Leal | [filter:faultwrap] |
| 1824 | 67 | Beraldo Leal | paste.filter_factory = nova.api.openstack:FaultWrapper.factory |
| 1825 | 67 | Beraldo Leal | |
| 1826 | 67 | Beraldo Leal | [filter:auth] |
| 1827 | 67 | Beraldo Leal | paste.filter_factory = nova.api.openstack.auth:AuthMiddleware.factory |
| 1828 | 67 | Beraldo Leal | |
| 1829 | 67 | Beraldo Leal | [filter:noauth] |
| 1830 | 67 | Beraldo Leal | paste.filter_factory = nova.api.openstack.auth:NoAuthMiddleware.factory |
| 1831 | 67 | Beraldo Leal | |
| 1832 | 67 | Beraldo Leal | [filter:ratelimit] |
| 1833 | 67 | Beraldo Leal | paste.filter_factory = nova.api.openstack.compute.limits:RateLimitingMiddleware.factory |
| 1834 | 67 | Beraldo Leal | |
| 1835 | 67 | Beraldo Leal | [app:osapi_compute_app_v2] |
| 1836 | 67 | Beraldo Leal | paste.app_factory = nova.api.openstack.compute:APIRouter.factory |
| 1837 | 67 | Beraldo Leal | |
| 1838 | 67 | Beraldo Leal | [pipeline:oscomputeversions] |
| 1839 | 67 | Beraldo Leal | pipeline = faultwrap oscomputeversionapp |
| 1840 | 67 | Beraldo Leal | |
| 1841 | 67 | Beraldo Leal | [app:osapi_volume_app_v1] |
| 1842 | 67 | Beraldo Leal | paste.app_factory = nova.api.openstack.volume:APIRouter.factory |
| 1843 | 67 | Beraldo Leal | |
| 1844 | 67 | Beraldo Leal | [app:oscomputeversionapp] |
| 1845 | 67 | Beraldo Leal | paste.app_factory = nova.api.openstack.compute.versions:Versions.factory |
| 1846 | 67 | Beraldo Leal | |
| 1847 | 67 | Beraldo Leal | [pipeline:osvolumeversions] |
| 1848 | 67 | Beraldo Leal | pipeline = faultwrap osvolumeversionapp |
| 1849 | 67 | Beraldo Leal | |
| 1850 | 67 | Beraldo Leal | [app:osvolumeversionapp] |
| 1851 | 67 | Beraldo Leal | paste.app_factory = nova.api.openstack.volume.versions:Versions.factory |
| 1852 | 67 | Beraldo Leal | |
| 1853 | 67 | Beraldo Leal | ########## |
| 1854 | 67 | Beraldo Leal | # Shared # |
| 1855 | 67 | Beraldo Leal | ########## |
| 1856 | 67 | Beraldo Leal | |
| 1857 | 67 | Beraldo Leal | [filter:keystonecontext] |
| 1858 | 67 | Beraldo Leal | paste.filter_factory = nova.api.auth:NovaKeystoneContext.factory |
| 1859 | 67 | Beraldo Leal | |
| 1860 | 67 | Beraldo Leal | [filter:authtoken] |
| 1861 | 67 | Beraldo Leal | paste.filter_factory = keystone.middleware.auth_token:filter_factory |
| 1862 | 67 | Beraldo Leal | service_protocol = http |
| 1863 | 67 | Beraldo Leal | service_host = 192.168.69.1 |
| 1864 | 67 | Beraldo Leal | service_port = 5000 |
| 1865 | 67 | Beraldo Leal | auth_host = 192.168.69.1 |
| 1866 | 67 | Beraldo Leal | auth_port = 35357 |
| 1867 | 67 | Beraldo Leal | auth_protocol = http |
| 1868 | 67 | Beraldo Leal | auth_uri = http://192.168.69.1:5000/ |
| 1869 | 67 | Beraldo Leal | admin_tenant_name = service |
| 1870 | 67 | Beraldo Leal | admin_user = nova |
| 1871 | 67 | Beraldo Leal | admin_password = novapass |
| 1872 | 67 | Beraldo Leal | </pre> |
| 1873 | 67 | Beraldo Leal | |
| 1874 | 68 | Beraldo Leal | Restart the nova- services prior to running db sync, by running as root: |
| 1875 | 66 | Beraldo Leal | |
| 1876 | 68 | Beraldo Leal | <pre> |
| 1877 | 68 | Beraldo Leal | # restart nova-api |
| 1878 | 68 | Beraldo Leal | # restart nova-compute |
| 1879 | 68 | Beraldo Leal | # restart nova-network |
| 1880 | 68 | Beraldo Leal | # restart nova-scheduler |
| 1881 | 68 | Beraldo Leal | # restart nova-vncproxy |
| 1882 | 68 | Beraldo Leal | # restart nova-volume |
| 1883 | 68 | Beraldo Leal | </pre> |
| 1884 | 68 | Beraldo Leal | |
| 1885 | 66 | Beraldo Leal | h3. Installing additional computer nodes |
| 1886 | 66 | Beraldo Leal | |
| 1887 | 66 | Beraldo Leal | There are many different ways to perform a multinode install of Compute in order to scale out your deployment and run more. In this case, you can install all the nova- packages and dependencies as you did for the Cloud Controller node, or just install nova-network and nova-compute. Your installation can run any nova- services anywhere, so long as the service can access nova.conf so it knows where the Rabbitmq or Qpid messaging server is installed. |
| 1888 | 66 | Beraldo Leal | |
| 1889 | 66 | Beraldo Leal | The Compute Node is where you configure the Compute network, the networking between your instances. Because you may need to query the database from the Compute node and learn more information about instances, the nova client and MySQL client or PostgresSQL client |
| 1890 | 66 | Beraldo Leal | packages should be installed on any additional Compute nodes. Copy the nova.conf from your controller node to all additional compute nodes. |
| 1891 | 68 | Beraldo Leal | |
| 1892 | 68 | Beraldo Leal | h3. Configuring the Database for Compute |
| 1893 | 68 | Beraldo Leal | |
| 1894 | 68 | Beraldo Leal | Create the tables in your backend data store by running the following command: |
| 1895 | 68 | Beraldo Leal | |
| 1896 | 68 | Beraldo Leal | <pre> |
| 1897 | 68 | Beraldo Leal | sudo nova-manage db sync |
| 1898 | 68 | Beraldo Leal | </pre> |
| 1899 | 68 | Beraldo Leal | |
| 1900 | 68 | Beraldo Leal | Restart all the services: |
| 1901 | 68 | Beraldo Leal | |
| 1902 | 68 | Beraldo Leal | <pre> |
| 1903 | 68 | Beraldo Leal | # restart nova-api |
| 1904 | 68 | Beraldo Leal | # restart nova-compute |
| 1905 | 68 | Beraldo Leal | # restart nova-network |
| 1906 | 68 | Beraldo Leal | # restart nova-scheduler |
| 1907 | 68 | Beraldo Leal | # restart nova-vncproxy |
| 1908 | 68 | Beraldo Leal | # restart nova-volume |
| 1909 | 68 | Beraldo Leal | # restart libvirt-bin |
| 1910 | 68 | Beraldo Leal | # sudo /etc/init.d/rabbitmq-server restart |
| 1911 | 68 | Beraldo Leal | </pre> |
| 1912 | 68 | Beraldo Leal | |
| 1913 | 68 | Beraldo Leal | All nova services are now installed and started. If the "restart" command doesn't work, your services may not be running correctly (or not at all). Review the logs in /var/log/nova. |
| 1914 | 68 | Beraldo Leal | |
| 1915 | 68 | Beraldo Leal | h3. Creating the Network for Compute VMs |
| 1916 | 68 | Beraldo Leal | |
| 1917 | 68 | Beraldo Leal | You must run the command that creates the network and the bridge using the br100 specified in the nova.conf file to create the network that the virtual machines use. This example shows the network range using 192.168.70.0/24 as the fixed range for our guest |
| 1918 | 68 | Beraldo Leal | VMs, but you can substitute the range for the network you have available. We're labeling it with "private" in this case. |
| 1919 | 68 | Beraldo Leal | |
| 1920 | 68 | Beraldo Leal | <pre> |
| 1921 | 68 | Beraldo Leal | nova-manage network create private --multi_host=T --fixed_range_v4=192.168.70.0/24 --bridge_interface=br100 --num_networks=1 --network_size=256 |
| 1922 | 68 | Beraldo Leal | </pre> |
| 1923 | 68 | Beraldo Leal | |
| 1924 | 68 | Beraldo Leal | h3. Verifying the Compute Installation |
| 1925 | 68 | Beraldo Leal | |
| 1926 | 68 | Beraldo Leal | You can ensure all the Compute services are running by using the nova-manage command: |
| 1927 | 68 | Beraldo Leal | |
| 1928 | 68 | Beraldo Leal | <pre> |
| 1929 | 68 | Beraldo Leal | sudo nova-manage service list |
| 1930 | 68 | Beraldo Leal | </pre> |
| 1931 | 68 | Beraldo Leal | |
| 1932 | 68 | Beraldo Leal | In return you should see "smiley faces" rather than three X symbols. Here's an example. |
| 1933 | 68 | Beraldo Leal | |
| 1934 | 68 | Beraldo Leal | <pre> |
| 1935 | 68 | Beraldo Leal | Binary Host Zone Status State Updated_At |
| 1936 | 68 | Beraldo Leal | nova-compute educloud01 nova disabled XXX 2012-06-03 14:23:45 |
| 1937 | 68 | Beraldo Leal | nova-network educloud01 nova enabled :-) 2012-06-08 12:04:21 |
| 1938 | 68 | Beraldo Leal | nova-scheduler educloud01 nova enabled :-) 2012-06-08 12:04:14 |
| 1939 | 68 | Beraldo Leal | nova-volume educloud01 nova enabled :-) 2012-06-08 12:04:21 |
| 1940 | 68 | Beraldo Leal | nova-cert educloud01 nova enabled :-) 2012-06-08 12:04:21 |
| 1941 | 68 | Beraldo Leal | nova-consoleauth educloud01 nova enabled :-) 2012-06-08 12:04:21 |
| 1942 | 68 | Beraldo Leal | nova-compute educloud02 nova enabled :-) 2012-06-08 12:04:00 |
| 1943 | 68 | Beraldo Leal | nova-network educloud02 nova enabled :-) 2012-06-08 12:04:00 |
| 1944 | 68 | Beraldo Leal | </pre> |
| 1945 | 69 | Beraldo Leal | |
| 1946 | 69 | Beraldo Leal | h2. Installing the OpenStack frontend - Horizon |
| 1947 | 69 | Beraldo Leal | |
| 1948 | 69 | Beraldo Leal | OpenStack has components that provide a view of the OpenStack installation such as a Django-built website that serves as a dashboard. You can use a dashboard interface with an OpenStack Compute installation with a web-based console provided by the Openstack-Dashboard project. It provides web-based interactions with the OpenStack Compute cloud controller through the OpenStack APIs. For more information about the Openstack-Dashboard project, please visit: https://github.com/openstack/horizon/. These instructions are for an example deployment configured with an Apache web server. |
| 1949 | 69 | Beraldo Leal | |
| 1950 | 69 | Beraldo Leal | h3. System Requirements for the Dashboard |
| 1951 | 69 | Beraldo Leal | |
| 1952 | 69 | Beraldo Leal | * You should have a running OpenStack Compute installation with the Identity Service, Keystone, enabled for identity management. |
| 1953 | 69 | Beraldo Leal | * The dashboard needs to be installed on the node that can contact the Identity Service. |
| 1954 | 69 | Beraldo Leal | * You should know the URL of your Identity endpoint and the Compute endpoint. |
| 1955 | 69 | Beraldo Leal | * You must know the credentials of a valid Identity service user. |
| 1956 | 69 | Beraldo Leal | * Python 2.6 is required; |
| 1957 | 69 | Beraldo Leal | * It should run on any system with Python 2.6 or 2.7 that is capable of running Django; |
| 1958 | 69 | Beraldo Leal | * Optional components: |
| 1959 | 69 | Beraldo Leal | > * An Image Store (Glance) endpoint. |
| 1960 | 69 | Beraldo Leal | > * An Object Store (Swift) endpoint. |
| 1961 | 70 | Beraldo Leal | |
| 1962 | 70 | Beraldo Leal | Install the OpenStack Dashboard, as root: |
| 1963 | 70 | Beraldo Leal | |
| 1964 | 70 | Beraldo Leal | <pre> |
| 1965 | 70 | Beraldo Leal | # apt-get install -y memcached libapache2-mod-wsgi openstack-dashboard |
| 1966 | 70 | Beraldo Leal | </pre> |
| 1967 | 70 | Beraldo Leal | |
| 1968 | 70 | Beraldo Leal | Next, modify the variable CACHE_BACKEND in /etc/openstack-dashboard/ local_settings.py to match the ones set in /etc/memcached.conf. Open /etc/openstack-dashboard/local_settings.py and look for this line: |
| 1969 | 70 | Beraldo Leal | |
| 1970 | 70 | Beraldo Leal | <pre> |
| 1971 | 70 | Beraldo Leal | CACHE_BACKEND = 'memcached://127.0.0.1:11211/' |
| 1972 | 70 | Beraldo Leal | </pre> |
| 1973 | 70 | Beraldo Leal | |
| 1974 | 70 | Beraldo Leal | To configure the MySQL database, create the dash database. |
| 1975 | 70 | Beraldo Leal | |
| 1976 | 70 | Beraldo Leal | <pre> |
| 1977 | 70 | Beraldo Leal | mysql> CREATE DATABASE dash; |
| 1978 | 70 | Beraldo Leal | mysql> GRANT ALL ON dash.* TO 'dash'@'%' IDENTIFIED BY 'dashpass'; |
| 1979 | 70 | Beraldo Leal | mysql> quit; |
| 1980 | 70 | Beraldo Leal | </pre> |
| 1981 | 70 | Beraldo Leal | |
| 1982 | 70 | Beraldo Leal | After configuring the local_settings.py as shown below, you can run the manage.py syncdb command to populate this newly-created database. |
| 1983 | 70 | Beraldo Leal | |
| 1984 | 70 | Beraldo Leal | <pre> |
| 1985 | 70 | Beraldo Leal | import os |
| 1986 | 70 | Beraldo Leal | from django.utils.translation import ugettext_lazy as _ |
| 1987 | 70 | Beraldo Leal | DEBUG = False |
| 1988 | 70 | Beraldo Leal | TEMPLATE_DEBUG = DEBUG |
| 1989 | 70 | Beraldo Leal | PROD = False |
| 1990 | 70 | Beraldo Leal | USE_SSL = False |
| 1991 | 70 | Beraldo Leal | SWIFT_ENABLED = True |
| 1992 | 70 | Beraldo Leal | ENABLE_JUJU_PANEL = True |
| 1993 | 70 | Beraldo Leal | SECRET_KEY = 'elj1IWiLoWHgcyYxFVLj7cM5rGOOxWl0' |
| 1994 | 70 | Beraldo Leal | LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) |
| 1995 | 70 | Beraldo Leal | CACHE_BACKEND = 'memcached://192.168.69.1:11211/' |
| 1996 | 70 | Beraldo Leal | EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' |
| 1997 | 70 | Beraldo Leal | OPENSTACK_HOST = "192.168.69.1" |
| 1998 | 70 | Beraldo Leal | OPENSTACK_KEYSTONE_URL = "http://%s:5000/v2.0" % OPENSTACK_HOST |
| 1999 | 70 | Beraldo Leal | OPENSTACK_KEYSTONE_DEFAULT_ROLE = "Member" |
| 2000 | 70 | Beraldo Leal | OPENSTACK_KEYSTONE_BACKEND = { |
| 2001 | 70 | Beraldo Leal | 'name': 'native', |
| 2002 | 70 | Beraldo Leal | 'can_edit_user': True |
| 2003 | 70 | Beraldo Leal | } |
| 2004 | 70 | Beraldo Leal | API_RESULT_LIMIT = 1000 |
| 2005 | 70 | Beraldo Leal | LOGGING = { |
| 2006 | 70 | Beraldo Leal | 'version': 1, |
| 2007 | 70 | Beraldo Leal | # When set to True this will disable all logging except |
| 2008 | 70 | Beraldo Leal | # for loggers specified in this configuration dictionary. Note that |
| 2009 | 70 | Beraldo Leal | # if nothing is specified here and disable_existing_loggers is True, |
| 2010 | 70 | Beraldo Leal | # django.db.backends will still log unless it is disabled explicitly. |
| 2011 | 70 | Beraldo Leal | 'disable_existing_loggers': False, |
| 2012 | 70 | Beraldo Leal | 'handlers': { |
| 2013 | 70 | Beraldo Leal | 'null': { |
| 2014 | 70 | Beraldo Leal | 'level': 'DEBUG', |
| 2015 | 70 | Beraldo Leal | 'class': 'django.utils.log.NullHandler', |
| 2016 | 70 | Beraldo Leal | }, |
| 2017 | 70 | Beraldo Leal | 'console': { |
| 2018 | 70 | Beraldo Leal | # Set the level to "DEBUG" for verbose output logging. |
| 2019 | 70 | Beraldo Leal | 'level': 'INFO', |
| 2020 | 70 | Beraldo Leal | 'class': 'logging.StreamHandler', |
| 2021 | 70 | Beraldo Leal | }, |
| 2022 | 70 | Beraldo Leal | }, |
| 2023 | 70 | Beraldo Leal | 'loggers': { |
| 2024 | 70 | Beraldo Leal | # Logging from django.db.backends is VERY verbose, send to null |
| 2025 | 70 | Beraldo Leal | # by default. |
| 2026 | 70 | Beraldo Leal | 'django.db.backends': { |
| 2027 | 70 | Beraldo Leal | 'handlers': ['null'], |
| 2028 | 70 | Beraldo Leal | 'propagate': False, |
| 2029 | 70 | Beraldo Leal | }, |
| 2030 | 70 | Beraldo Leal | 'horizon': { |
| 2031 | 70 | Beraldo Leal | 'handlers': ['console'], |
| 2032 | 70 | Beraldo Leal | 'propagate': False, |
| 2033 | 70 | Beraldo Leal | }, |
| 2034 | 70 | Beraldo Leal | 'novaclient': { |
| 2035 | 70 | Beraldo Leal | 'handlers': ['console'], |
| 2036 | 70 | Beraldo Leal | 'propagate': False, |
| 2037 | 70 | Beraldo Leal | }, |
| 2038 | 70 | Beraldo Leal | 'keystoneclient': { |
| 2039 | 70 | Beraldo Leal | 'handlers': ['console'], |
| 2040 | 70 | Beraldo Leal | 'propagate': False, |
| 2041 | 70 | Beraldo Leal | }, |
| 2042 | 70 | Beraldo Leal | 'nose.plugins.manager': { |
| 2043 | 70 | Beraldo Leal | 'handlers': ['console'], |
| 2044 | 70 | Beraldo Leal | 'propagate': False, |
| 2045 | 70 | Beraldo Leal | } |
| 2046 | 70 | Beraldo Leal | } |
| 2047 | 70 | Beraldo Leal | } |
| 2048 | 70 | Beraldo Leal | DATABASES = { |
| 2049 | 70 | Beraldo Leal | 'default': { |
| 2050 | 70 | Beraldo Leal | 'ENGINE': 'django.db.backends.mysql', |
| 2051 | 70 | Beraldo Leal | 'NAME': 'dash', |
| 2052 | 70 | Beraldo Leal | 'USER': 'dash', |
| 2053 | 70 | Beraldo Leal | 'PASSWORD': 'dashpass', |
| 2054 | 70 | Beraldo Leal | 'HOST': '192.168.69.1', |
| 2055 | 70 | Beraldo Leal | 'default-character-set': 'utf8' |
| 2056 | 70 | Beraldo Leal | }, |
| 2057 | 70 | Beraldo Leal | } |
| 2058 | 70 | Beraldo Leal | |
| 2059 | 70 | Beraldo Leal | </pre> |
| 2060 | 70 | Beraldo Leal | |
| 2061 | 70 | Beraldo Leal | Run the manage.py syncdb command to initialize the database. |
| 2062 | 70 | Beraldo Leal | |
| 2063 | 70 | Beraldo Leal | <pre> |
| 2064 | 70 | Beraldo Leal | $ /usr/share/openstack-dashboard/manage.py syncdb |
| 2065 | 70 | Beraldo Leal | </pre> |
| 2066 | 70 | Beraldo Leal | |
| 2067 | 70 | Beraldo Leal | |
| 2068 | 70 | Beraldo Leal | Restart Apache to pick up the default site and symbolic link settings. |
| 2069 | 70 | Beraldo Leal | |
| 2070 | 70 | Beraldo Leal | <pre> |
| 2071 | 70 | Beraldo Leal | # /etc/init.d/apache2 restart |
| 2072 | 70 | Beraldo Leal | </pre> |
| 2073 | 70 | Beraldo Leal | |
| 2074 | 70 | Beraldo Leal | Restart the nova-api service to ensure the API server can connect to the Dashboard and to avoid an error displayed in the Dashboard |
| 2075 | 70 | Beraldo Leal | |
| 2076 | 70 | Beraldo Leal | <pre> |
| 2077 | 70 | Beraldo Leal | sudo restart nova-api |
| 2078 | 70 | Beraldo Leal | </pre> |