Implantação Detalhada do OpenStack em Ambiente CentOS

  1. Configuração Inicial do Ambiente

Para iniciar a implantação do OpenStack, é fundamental preparar o ambiente em todos os nós (controlador e computação) desativando políticas de segurança e configurando identificadores de rede.

1.1. Desativação de Segurança e Definição de Hostname

Nos nós de controle e computação, execute os comandos para parar o firewall, desativar o SELinux e definir o nome do host. Substitua ct pelo hostname do nó de controle e c1 pelo hostname do nó de computação, seguido da troca para o usuário root.

Nó de Controle:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo hostnamectl set-hostname ct
exec bash

Nó de Computação:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo hostnamectl set-hostname c1
exec bash

1.2. Atualização de Pacotes e Repositórios OpenStack

Garanta que todos os pacotes do sistema estejam atualizados e que os repositórios do OpenStack Train sejam adicionados. É recomendável executar os comandos de instalação e atualização várias vezes para confirmar que todos os componentes estão na versão mais recente, evitando problemas de compatibilidade futuros.

Em Ambos os Nós:

sudo yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre pcre-devel expat-devel cmake bzip2 lrzsz
sudo yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils
sudo yum update -y

1.3. Configuração do Mapeamento de Hosts

Adicione entradas nos arquivos /etc/hosts de ambos os nós para permitir a resolução de nomes de host interna.

Em Ambos os Nós:

echo "192.168.228.147 ct" | sudo tee -a /etc/hosts
echo "192.168.228.154 c1" | sudo tee -a /etc/hosts

1.4. Acesso SSH Sem Senha

Configure o acesso SSH sem senha do nó de controle para ele mesmo e para o nó de computação, facilitando a automação e a gestão.

Nó de Controle:

ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
ssh-copy-id ct
ssh-copy-id c1

1.5. Sincronização de Tempo (NTP)

Instale e configure um serviço de sincronização de tempo (Chronyd) para garantir que todos os nós tenham a mesma hora, o que é crucial para a integridade de serviços distribuídos.

Nó de Controle:

sudo yum -y install chrony
sudo systemctl enable chronyd.service
sudo systemctl start chronyd.service
# Para configurar o nó de controle como servidor NTP:
# Adicione a seguinte linha ao /etc/chrony.conf:
# allow 192.168.228.0/24
# local stratum 10
# sudo systemctl restart chronyd

Nó de Computação:

sudo yum -y install chrony
sudo systemctl enable chronyd.service
sudo systemctl start chronyd.service
# Para configurar o nó de computação para sincronizar com o nó de controle:
# Substitua a linha 'pool 2.centos.pool.ntp.org iburst' ou similar por:
# server ct iburst
# sudo systemctl restart chronyd
  1. Instalação e Configuração do MariaDB

O MariaDB será o backend de banco de dados para a maioria dos serviços OpenStack.

2.1. Instalação do MariaDB

Instale o servidor MariaDB e o conector Python necessário para o OpenStack se comunicar com o banco de dados. O libibverbs é instalado para habilitar RDMA.

Nó de Controle:

sudo yum -y install mariadb mariadb-server python2-PyMySQL libibverbs

2.2. Configuração do MariaDB

Crie um arquivo de configuração específico para o OpenStack no MariaDB.

Nó de Controle:

sudo vim /etc/my.cnf.d/openstack.cnf

Adicione o seguinte conteúdo ao arquivo:

[mysqld]
bind-address = 192.168.228.147
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

2.3. Inicialização e Proteção do MariaDB

Habilite e inicie o serviço MariaDB e, em seguida, execute o script de segurança para definir a senha do root e remover usuários padrão.

Nó de Controle:

sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo mysql_secure_installation

Siga as instruções do mysql_secure_installation:

  • Enter current password for root (enter for none): (Pressione Enter, a menos que já tenha uma senha de root)
  • Set root password? [Y/n] Y (Defina uma senha forte para o root)
  • Remove anonymous users? [Y/n] Y
  • Disallow root login remotely? [Y/n] N (Permita o login remoto para o root para facilidade de gerenciamento, mas reconsidere em produção)
  • Remove test database and access to it? [Y/n] Y
  • Reload privilege tables now? [Y/n] Y
  1. Instalação e Configuração do RabbitMQ

O RabbitMQ é o serviço de fila de mensagens usado pelos componentes do OpenStack para se comunicarem.

3.1. Instalação do RabbitMQ

Nó de Controle:

sudo yum -y install rabbitmq-server

3.2. Configuração e Inicialização

Habilite e inicie o serviço RabbitMQ, crie um usuário para o OpenStack e defina suas permissões.

Nó de Controle:

sudo systemctl enable rabbitmq-server.service
sudo systemctl start rabbitmq-server.service

sudo rabbitmqctl add_user openstack RABBIT_PASS # Substitua RABBIT_PASS por uma senha segura
sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"

# Ative o plugin de gerenciamento web (opcional, porta 15672)
sudo rabbitmq-plugins enable rabbitmq_management

# Verifique as portas
netstat -natp | grep 5672
  1. Instalação e Configuração do Memcached

Memcached é um sistema de cache de objetos distribuído em memória, usado pelo OpenStack para armazenar tokens.

4.1. Instalação do Memcached

Nó de Controle:

sudo yum install -y memcached python-memcached

4.2. Configuração do Memcached

Modifique o arquivo de configuração do Memcached para escutar nos endereços IP corretos, incluindo o do nó de controle.

Nó de Controle:

sudo vim /etc/sysconfig/memcached

Ajuste as seguintes linhas:

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,192.168.228.147"

4.3. Inicialização do Memcached

Habilite e inicie o serviço Memcached.

Nó de Controle:

sudo systemctl enable memcached
sudo systemctl start memcached
netstat -nautp | grep 11211
  1. Instalação e Configuração do Etcd

Etcd é um armazenamento de chave-valor distribuído que o OpenStack pode usar para várias finalidades, como armazenamento de metadados.

5.1. Instalação do Etcd

Nó de Controle:

sudo yum -y install etcd

5.2. Configuração do Etcd

Modifique o arquivo de configuração do Etcd para vincular-se aos endereços IP do nó de controle.

Nó de Controle:

sudo vim /etc/etcd/etcd.conf

Substitua o conteúdo existente pelo seguinte (ajustando o IP do seu nó de controle):

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.228.147:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.228.147:2379"	
ETCD_NAME="ct"	
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.228.147:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.228.147:2379"
ETCD_INITIAL_CLUSTER="ct=http://192.168.228.147:2380"	
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"

5.3. Inicialização do Etcd

Habilite e inicie o serviço Etcd.

Nó de Controle:

sudo systemctl enable etcd.service
sudo systemctl start etcd.service
netstat -anutp | grep 2379
netstat -anutp | grep 2380
  1. Implantação do Keystone (Serviço de Identidade)

O Keystone fornece auetnticação e autorização para todos os serviços OpenStack.

6.1. Configuração do Banco de Dados para Keystone

Crie o banco de dados keystone e um usuário com privilégios adequados.

Nó de Controle (no console MariaDB):

mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
FLUSH PRIVILEGES;
EXIT;

Subsittua KEYSTONE_DBPASS por uma senha segura.

6.2. Instalação de Pacotes Keystone

Nó de Controle:

sudo yum -y install openstack-keystone httpd mod_wsgi

6.3. Configuração do Keystone

Edite o arquivo /etc/keystone/keystone.conf para definir a conexão com o banco de dados e o provedor de tokens.

Nó de Controle:

sudo openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone
sudo openstack-config --set /etc/keystone/keystone.conf token provider fernet

6.4. Sincronização do Banco de Dados Keystone

Sincronize o esquema do banco de dados do Keystone.

Nó de Controle:

sudo su -s /bin/sh -c "keystone-manage db_sync" keystone

6.5. Inicialização e Configuração do Fernet

Configure o repositório de chaves Fernet para segurança do token.

Nó de Controle:

sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

6.6. Bootstrap do Serviço de Identidade

Inicialize o serviço de identidade criando o usuário administrador e os endpoints de serviço.

Nó de Controle:

sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://ct:5000/v3/ \
--bootstrap-internal-url http://ct:5000/v3/ \
--bootstrap-public-url http://ct:5000/v3/ \
--bootstrap-region-id RegionOne

Substitua ADMIN_PASS por uma senha forte para o usuário administrador.

6.7. Configuração e Inicialização do Apache HTTP Server

O Keystone utiliza o Apache com mod_wsgi para servir suas APIs.

Nó de Controle:

echo "ServerName controller" | sudo tee -a /etc/httpd/conf/httpd.conf
sudo ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
sudo systemctl enable httpd
sudo systemctl start httpd

6.8. Configuração do Ambiente para o Cliente OpenStack

Defina as variáveis de ambiente para facilitar a interação com o OpenStack CLI como usuário admin.

Nó de Controle:

cat << EOF | tee -a ~/.bashrc
export OS_USERNAME=admin		
export OS_PASSWORD=ADMIN_PASS	                 
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
source ~/.bashrc

Certifique-se de que ADMIN_PASS corresponda à senha definida no passo de bootstrap.

6.9. Criação de Domínios, Projetos, Usuários e Funções

Crie um projeto de serviço e uma função genérica de usuário.

Nó de Controle:

openstack project create --domain default --description "Service Project" service
openstack role create user
openstack user list
openstack role list
openstack token issue
  1. Implantação do Glance (Serviço de Imagens)

O Glance gerencia imagens de máquinas virtuais.

7.1. Configuração do Banco de Dados para Glance

Crie o banco de dados glance e um usuário com privilégios.

Nó de Controle (no console MariaDB):

mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
FLUSH PRIVILEGES;
EXIT;

Substitua GLANCE_DBPASS.

7.2. Criação de Usuário, Serviço e Endpoints para Glance

Crie o usuário glance, adicione-o ao projeto de serviço com função admin, e registre o serviço de imagem com seus endpoints.

Nó de Controle:

openstack user create --domain default --password GLANCE_PASS glance # Substitua GLANCE_PASS
openstack role add --project service --user glance admin
openstack service create --name glance --description "OpenStack Image" image
openstack endpoint create --region RegionOne image public http://ct:9292
openstack endpoint create --region RegionOne image internal http://ct:9292
openstack endpoint create --region RegionOne image admin http://ct:9292

7.3. Instalação de Pacotes Glance

Nó de Controle:

sudo yum -y install openstack-glance

7.4. Configuração da API do Glance (glance-api.conf)

Configure a conexão do banco de dados e os detalhes de autenticação do Keystone.

Nó de Controle:

sudo cp -a /etc/glance/glance-api.conf{,.bak}
sudo grep -Ev '^$|#' /etc/glance/glance-api.conf.bak | sudo tee /etc/glance/glance-api.conf

sudo openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://ct:5000
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://ct:5000
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers ct:11211
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
sudo openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
sudo openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
sudo openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
sudo openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
sudo openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/

7.5. Configuração do Registro do Glance (glance-registry.conf)

Similar à API, configure o registro para a conexão do banco de dados e autenticação.

Nó de Controle:

sudo cp -a /etc/glance/glance-registry.conf{,.bak}
sudo grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak | sudo tee /etc/glance/glance-registry.conf

sudo openstack-config --set /etc/glance/glance-registry.conf database connection  mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_uri   http://ct:5000
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url  http://ct:5000
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers  ct:11211
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type  password
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name  Default
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name  Default
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name  service
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username  glance
sudo openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password  GLANCE_PASS
sudo openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor  keystone

7.6. Sincronização do Banco de Dados Glance e Inicialização dos Serviços

Sincronize o banco de dados e inicie os serviços do Glance, garantindo as permissões corretas para o diretório de imagens.

Nó de Controle:

sudo su -s /bin/sh -c "glance-manage db_sync" glance
sudo systemctl enable openstack-glance-api.service
sudo systemctl start openstack-glance-api.service
netstat -natp | grep 9292
sudo chown -hR glance:glance /var/lib/glance/

7.7. Importação de Imagem

Baixe uma imagem de teste (como CirrOS) e importe-a para o Glance.

Nó de Controle:

cd /opt
# Baixe a imagem CirrOS, por exemplo:
# wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
sudo openstack image create --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros

openstack image list
glance image-list
  1. Implantação do Placement (Serviço de Alocação de Recursos)

O Placement oferece APIs para rastrear o uso e as capacidades dos recursos.

8.1. Configuração do Banco de Dados para Placement

Crie o banco de dados placement e seu usuário correspondente.

Nó de Controle (no console MariaDB):

mysql -u root -p
CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'PLACEMENT_DBPASS';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'PLACEMENT_DBPASS';
FLUSH PRIVILEGES;
EXIT;

Substitua PLACEMENT_DBPASS.

8.2. Criação de Usuário, Serviço e Endpoints para Placement

Crie o usuário placement, atribua-o ao projeto de serviço e registre o serviço de placement com seus endpoints.

Nó de Controle:

openstack user create --domain default --password PLACEMENT_PASS placement # Substitua PLACEMENT_PASS
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement
openstack endpoint create --region RegionOne placement public http://ct:8778
openstack endpoint create --region RegionOne placement internal http://ct:8778
openstack endpoint create --region RegionOne placement admin http://ct:8778

8.3. Instalação de Pacotes Placement

Nó de Controle:

sudo yum -y install openstack-placement-api

8.4. Configuração do Placement (placement.conf)

Configure a conexão do banco de dados e os detalhes de autenticação do Keystone.

Nó de Controle:

sudo cp -a /etc/placement/placement.conf{,.bak}
sudo grep -Ev '^$|#' /etc/placement/placement.conf.bak | sudo tee /etc/placement/placement.conf

sudo openstack-config --set /etc/placement/placement.conf placement_database connection mysql+pymysql://placement:PLACEMENT_DBPASS@ct/placement
sudo openstack-config --set /etc/placement/placement.conf api auth_strategy keystone
sudo openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_url http://ct:5000/v3
sudo openstack-config --set /etc/placement/placement.conf keystone_authtoken memcached_servers ct:11211
sudo openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_type password
sudo openstack-config --set /etc/placement/placement.conf keystone_authtoken project_domain_name Default
sudo openstack-config --set /etc/placement/placement.conf keystone_authtoken user_domain_name Default
sudo openstack-config --set /etc/placement/placement.conf keystone_authtoken project_name service
sudo openstack-config --set /etc/placement/placement.conf keystone_authtoken username placement
sudo openstack-config --set /etc/placement/placement.conf keystone_authtoken password PLACEMENT_PASS

8.5. Sincronização do Banco de Dados Placement

Nó de Controle:

sudo su -s /bin/sh -c "placement-manage db sync" placement

8.6. Modificação do Apache para Placement

Ajuste o arquivo de configuração do Apache para o Placement para permitir acesso.

Nó de Controle:

sudo vim /etc/httpd/conf.d/00-placement-api.conf

Adicione o seguinte bloco ao final do arquivo:

<Directory /usr/bin>			
<IfVersion >= 2.4>				
	Require all granted
</IfVersion>
<IfVersion < 2.4>				
	Order allow,deny				
	Allow from all		
</IfVersion>
</Directory>

8.7. Reinício do Apache e Verificação do Placement

Nó de Controle:

sudo systemctl restart httpd
curl http://ct:8778
netstat -natp | grep 8778
sudo placement-status upgrade check
  1. Instalação do Nova (Serviço de Computação)

O Nova é o principal serviço do OpenStack que gerencia instâncias de máquinas virtuais.

9.1. Configuração do Banco de Dados para Nova

Crie os bancos de dados para as APIs do Nova, o Nova principal e o Cell0.

Nó de Controle (no console MariaDB):

mysql -u root -p
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
FLUSH PRIVILEGES;
EXIT;

Substitua NOVA_DBPASS.

9.2. Criação de Usuário, Serviço e Endpoints para Nova

Crie o usuário nova, atribua-o ao projeto de serviço e registre o serviço de computação com seus endpoints.

Nó de Controle:

openstack user create --domain default --password NOVA_PASS nova # Substitua NOVA_PASS
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
openstack endpoint create --region RegionOne compute public http://ct:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://ct:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://ct:8774/v2.1

9.3. Instalação dos Componentes do Nova no Nó de Controle

Instale os serviços da API do Nova, o agendador, o condutor e o proxy VNC no nó de controle.

Nó de Controle:

sudo yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler

9.4. Configuração do Nova (nova.conf) no Nó de Controle

Configure o arquivo nova.conf com as informações de rede, autenticação, VNC, Glance e Placement.

Nó de Controle:

sudo cp -a /etc/nova/nova.conf{,.bak}
sudo grep -Ev '^$|#' /etc/nova/nova.conf.bak | sudo tee /etc/nova/nova.conf

sudo openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
sudo openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.228.147
sudo openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true
sudo openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
sudo openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@ct

sudo openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:NOVA_DBPASS@ct/nova_api
sudo openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:NOVA_DBPASS@ct/nova

sudo openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://ct:5000/v3
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers ct:11211
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS

sudo openstack-config --set /etc/nova/nova.conf vnc enabled true
sudo openstack-config --set /etc/nova/nova.conf vnc server_listen '0.0.0.0' # Use 0.0.0.0 to listen on all interfaces
sudo openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '192.168.228.147' # IP do nó de controle

sudo openstack-config --set /etc/nova/nova.conf glance api_servers http://ct:9292
sudo openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp

sudo openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
sudo openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
sudo openstack-config --set /etc/nova/nova.conf placement project_name service
sudo openstack-config --set /etc/nova/nova.conf placement auth_type password
sudo openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
sudo openstack-config --set /etc/nova/nova.conf placement auth_url http://ct:5000/v3
sudo openstack-config --set /etc/nova/nova.conf placement username placement
sudo openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS

9.5. Sincronização e Mapeamento de Banco de Dados Nova

Sincronize os bancos de dados das APIs do Nova e mapeie o Cell0.

Nó de Controle:

sudo su -s /bin/sh -c "nova-manage api_db sync" nova
sudo su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
sudo su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
sudo su -s /bin/sh -c "nova-manage db sync" nova
sudo su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

9.6. Inicialização dos Serviços Nova no Nó de Controle

Inicie e habilite os serviços do Nova no nó de controle.

Nó de Controle:

sudo systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
sudo systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

9.7. Verificação dos Serviços Nova no Nó de Controle

Verifique se os serviços estão escutando nas portas corretas.

Nó de Controle:

netstat -tnlup | egrep '8774|8775'
curl http://ct:8774

9.8. Instalação e Configuração do Nova no Nó de Computação

Instale o componente nova-compute no nó de computação e configure seu nova.conf.

Nó de Computação (c1):

sudo yum -y install openstack-nova-compute

Configure o arquivo nova.conf:

sudo cp -a /etc/nova/nova.conf{,.bak}
sudo grep -Ev '^$|#' /etc/nova/nova.conf.bak | sudo tee /etc/nova/nova.conf

sudo openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
sudo openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@ct
sudo openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.228.154 # IP do nó de computação
sudo openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true
sudo openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver

sudo openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://ct:5000/v3
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers ct:11211
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
sudo openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS

sudo openstack-config --set /etc/nova/nova.conf vnc enabled true
sudo openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0
sudo openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '192.168.228.154' # IP do nó de computação
sudo openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://ct:6080/vnc_auto.html

sudo openstack-config --set /etc/nova/nova.conf glance api_servers http://ct:9292
sudo openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp

sudo openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
sudo openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
sudo openstack-config --set /etc/nova/nova.conf placement project_name service
sudo openstack-config --set /etc/nova/nova.conf placement auth_type password
sudo openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
sudo openstack-config --set /etc/nova/nova.conf placement auth_url http://ct:5000/v3
sudo openstack-config --set /etc/nova/nova.conf placement username placement
sudo openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS

sudo openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu

Para instalações em máquinas virtuais aninhadas, certifique-se de que a virtualização aninhada esteja habilitada no host físico e que libvirt virt_type esteja configurado como qemu.

9.9. Inicialização dos Serviços Nova no Nó de Computação

Inicie e habilite o serviço Libvirt (hypervisor) e o serviço Nova Compute.

Nó de Computação (c1):

sudo systemctl enable libvirtd.service openstack-nova-compute.service
sudo systemctl start libvirtd.service openstack-nova-compute.service

9.10. Verificações Finais do Nova no Nó de Controle

Após configurar o nó de computação, retorne ao nó de controle para verificar o status.

Nó de Controle:

openstack compute service list --service nova-compute

Descubra e registre os hosts de computação no Nova.

sudo su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

Para garantir que novos hosts sejam descobertos automaticamente, ajuste a configuração do agendador no nó de controle.

sudo vim /etc/nova/nova.conf

Adicione a seguinte linha na seção [scheduler]:

[scheduler]
discover_hosts_in_cells_interval = 300

Reinicie o serviço Nova API para aplicar a mudança:

sudo systemctl restart openstack-nova-api.service

Verifique o status de todos os serviços do Nova e a disponibilidade dos endpoints de API:

openstack compute service list
openstack catalog list
openstack image list
sudo nova-status upgrade check

Todos os serviços devem estar operacionais para que as instâncias de VM possam ser criadas com sucesso.

Tags: openstack CentOS Deployment IAAS CloudComputing

Publicado em 10-26 00:27