Este documento apresenta os links conforme foi implementado passo a passo a instalação do Openstack Ironic e Openstack Kolla-Ansible.
Toda documentação foi feita a partir do Guia de Instalação, a versão utilizada foi a queens.
Para instalação de Openstack, foi utilizado um servidor com as seguintes configurações:
Configurações de Hardware: Processador: 8 Núcleos; Memória: 16 GB; HD: 1TB.
Configurações de Software: Sistema: Ubuntu 16.04
Programas utilizados:
VirtualBox - Versão 5.2.22 r126460 (Qt5.6.1).
Vagrant - Versão 2.2.1.
Toda instalação de ambiente foi através de acesso SSH -X.
Para criações das VMs, utilizou-se o VAGRANT ou VIRTUALBOX, para entender sua instalação, configuração e passos basta acessar o link e seguir os passos apresentados:
Configurações das VMs: Controller/Compute/Block:
Processador: 4 Núcleos; Memória: 10 GB; HD: 40GB, Placa de Rede 1: host-only (vboxnet0), brigde enp10f0.
Rede de hosts, com valores de interfaces e ips.
Configurar interfaces de rede
- Configure a primeira interface como a interface de gerenciamento:
IP address: 10.0.0.11
Network mask: 255.255.255.0 (or /24)
Default gateway: 10.0.0.1
- Configure a interface de rede editando o arquivo
/etc/network/interfaces
:
auto enp0s3
iface enp0s3 inet manual
up ifconfig $IFACE 10.0.0.11 up
up ip link set $IFACE promisc on
down ip link set $IFACE promisc off
down ifconfig $IFACE down
auto enp0s8
iface enp0s8 inet dhcp
- Reinicie o sistema para ativar as mudanças:
reboot
Configurar nomes
-
Defina o nome do host do nó para controller.
-
Edite o arquivo
/etc/hosts
:
127.0.0.1 localhost
#127.0.1.1 controller
controller
10.0.0.11 controller
compute
10.0.0.31 compute
block
10.0.0.41 block
Configurar interfaces de rede
- Configure a primeira interface como a interface de gerenciamento:
IP address: 10.0.0.31
Network mask: 255.255.255.0 (or /24)
Default gateway: 10.0.0.1
- Configure a interface de rede editando o arquivo
/etc/network/interfaces
:
auto enp0s3
iface enp0s3 inet manual
up ifconfig $IFACE 10.0.0.31 up
up ip link set $IFACE promisc on
down ip link set $IFACE promisc off
down ifconfig $IFACE down
auto enp0s8
iface enp0s8 inet dhcp
- Reinicie o sistema para ativar as mudanças:
reboot
Configurar nomes
-
Defina o nome do host do nó para compute.
-
Edite o arquivo
/etc/hosts
:
127.0.0.1 localhost
#127.0.1.1 compute
controller
10.0.0.11 controller
compute
10.0.0.31 compute
block
10.0.0.41 block
Configurar interfaces de rede
Configuração de interface da máquina block. Mesmos passos anteriores, alterando apenas o valor final do endereço IP para o valor 41.
- Teste o acesso da rede entre os nós executando os comandos em todos:
ping -c 4 controller
ping -c 4 compute
ping -c 4 block
Para sincronizar corretamente os serviços entre nós, é preciso instalar o Chrony, uma implementação do NTP.
- Instale os pacotes:
apt install chrony
- Edite o arquivo
/etc/chrony/chrony.conf
:
server NTP_SERVER iburst
allow 10.0.0.0/24
colocar endereço de NTP_SERVER válido
- Reinicie o serviço NTP:
service chrony restart
- Instale os pacotes:
apt install chrony
- Edite o arquivo
/etc/chrony/chrony.conf
.
server controller iburst
Comente a linha pool 2.debian.pool.ntp.org offline iburst
- Reinicie o serviço NTP:
service chrony restart
- Execute em todas máquinas o comando.
chronyc sources
OpenStack Queens for Ubuntu 16.04 LTS:
apt install software-properties-common
add-apt-repository cloud-archive:queens
- Atualize os pacotes em todos os nós:
apt update && apt dist-upgrade
Se o processo de atualização incluir um novo kernel, reinicie seu host para ativá-lo.
- Instale o cliente OpenStack:
apt install python-openstackclient
A documentação do Openstack Queens, apresenta e utiliza o banco de dados MariaDB, porém para estudo foi utilizado o Mysql. O tutorial apresenta guia dos dois banco de dados.
Execute os comandos que desejar (MariaDB ou Mysql) no Controller.
- Instale os pacotes:
apt install mariadb-server python-pymysql
- Crie e edite o arquivo
/etc/mysql/mariadb.conf.d/99-openstack.cnf
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
- Reinicie o serviço de banco de dados, e escolha uma senha segura:
service mysql restart
mysql_secure_installation
- Instale os pacotes:
apt-get install mysql-server python-pymysql
- Reinicie o serviço de banco de dados:
service mysql restart
Execute os comandos no Controller.
- Instale o pacote:
apt install rabbitmq-server
- Adicione o usuário openstack e permita configuração, gravação e acesso de leitura:
rabbitmqctl add_user openstack senha
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
- Restarte o serviço rabbitmq
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
Execute os comandos no Controller.
- Instale o pacote:
apt install memcached python-memcache
- Edite o arquivo
/etc/memcached.conf
.
-l 10.0.0.11
Altere a linha que possue o comando
-l 127.0.0.1
- Restarte o serviço:
service memcached restart
Execute os comandos no Controller.
- Instale o pacote:
apt install etcd
- Edite o arquivo
/etc/default/etcd
ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
- Ative e inicie o serviço do etcd:
systemctl enable etcd
systemctl start etcd
No mínimo, você precisa instalar os seguintes serviços. Instale os serviços na ordem especificada abaixo:
- Serviço de Identidade - instalação do Keystone.
- Serviço de Imagem - instalação do Glance
- Serviço de Computação - instalação do Nova
- Serviço de Rede - instalação de Neutron
Aconselhamos também instalar os seguintes componentes depois de instalar os serviços de implantação mínimos:
- Dashboard - instalação do Horizon
- Serviço de armazenamento em bloco - instalação do Cinder
Execute os comandos no Controller
- Acesse e crie um banco de dados para keystone:
mysql -u root -psenha
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'senha';
exit;
- Instale os pacotes:
apt install keystone apache2 libapache2-mod-wsgi
- Configure o arquivo
/etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:senha@controller/keystone
[token]
provider = fernet
Comente ou remova quaisquer outras opções na seção [database].
- Preencha o banco de dados do serviço de identidade:
su -s /bin/sh -c "keystone-manage db_sync" keystone
- Inicialize os repositórios de keys:
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
- Inicialize o serviço de identidade:
keystone-manage bootstrap --bootstrap-password senha \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
- Edite o arquivo
/etc/apache2/apache2.conf
ServerName controller
- Restart o serviço apache
service apache2 restart
- Configure a conta de administração
export OS_USERNAME=admin
export OS_PASSWORD=senha
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
Execute os comandos abaixo no controller.
- Execute os comandos para criar um dominio, um projeto de serviço, um usuário:
openstack domain create --description "An Example Domain" example
openstack project create --domain default --description "Service Project" service
openstack project create --domain default --description "Demo Project" demo
openstack user create --domain default --password senha demo
openstack role create user
openstack role add --project demo --user demo user
Você pode repetir este procedimento para criar projetos e usuários adicionais.
- Desative as variáveis temporárias:
unset OS_AUTH_URL OS_PASSWORD
- Execute os seguintes comandos
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo token issue
-
Criando os arquivos
admin-openrc
edemon-openrc
. -
Crie e edite o admin-openrc
vim admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=senha
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
- Crie e edite o demon-openrc
vim demon-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=senha
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
- Carregue os scripts
. admin-openrc
. demon-openrc
- Solicite um token de autenticação
openstack token issue
Execute os comandos abaixo no controller
- Para criar o banco de dados, conclua estas etapas:
mysql -u root -psenha
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'senha';
exit;
- Crie as credenciais de Glance com os comandos abaixos
openstack user create --domain default --password senha glance
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://localhost:9292
openstack endpoint create --region RegionOne image internal http://localhost:9292
openstack endpoint create --region RegionOne image admin http://localhost:9292
- Instale o pacote:
apt install glance
- Edite o arquivo
/etc/glance/glance-api.conf
[database]
connection = mysql+pymysql://glance:senha@controller/glance
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = senha
[paste_deploy]
flavor = keystone
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
Comente ou remova demais opções da seção
[keystone_authtoken]
- Edite o arquivo
/etc/glance/glance-registry.conf
[database]
connection = mysql+pymysql://glance:senha@controller/glance
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = senha
[paste_deploy]
flavor = keystone
- Preencha o banco de dados do serviço de imagem:
su -s /bin/sh -c "glance-manage db_sync" glance
Ignore todas as mensagens de reprovação nesta saída.
- Reinicie os serviços de imagem:
service glance-registry restart
service glance-api restart
- Download da imagem CirrOs
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
- Upload da imagem
openstack image create "cirros" \
--file cirros-0.4.0-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
- Confirmação do Upload da imagem
openstack image list
Execute os comandos abaixo no controller.
- Para criar os bancos de dados, conclua estas etapas:
mysql -u root -psenha
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'senha';
exit;
- Crie as credenciais de serviço de computação:
openstack user create --domain default --password senha nova
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://localhost:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://localhost:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://localhost:8774/v2.1
openstack user create --domain default --password senha placement
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://localhost:8778
openstack endpoint create --region RegionOne placement internal http://localhost:8778
openstack endpoint create --region RegionOne placement admin http://localhost:8778
- Instale os pacotes:
apt -y install nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler nova-placement-api
- Edite o arquivo
/etc/nova/nova.conf
[api_database]
connection = mysql+pymysql://nova:senha@controller/nova_api
[database]
connection = mysql+pymysql://nova:senha@controller/nova
[DEFAULT]
transport_url = rabbit://openstack:senha@controller
my_ip = 10.0.0.11
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = senha
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = senha
Comente ou remova demais opções da seção
[keystone_authtoken]
.
- Execute os comandos:
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova 109e1d4b-536a-40d0-83c6-5f121b82b650
su -s /bin/sh -c "nova-manage db sync" nova
nova-manage cell_v2 list_cells
- Finalize a instalação, restarte os serviços:
service nova-api restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart
Execute os comandos abaixo no compute.
- Instale os pacotes:
apt install nova-compute
- Edite o arquivo
etc/nova/nova.conf
[DEFAULT]
transport_url = rabbit://openstack:senha@controller
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = senha
[vnc]
enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = senha
Comente ou remova demais opções da seção
[keystone_authtoken]
Remova a opção log_dir da seção[DEFAULT]
- Finalize a instalação
egrep -c '(vmx|svm)' /proc/cpuinfo
- Edite o arquivo
/etc/nova/nova-compute.conf
[libvirt]
virt_type = qemu
- Restarte o serviço
service nova-compute restart
Execute os comandos abaixo no controller.
openstack compute service list --service nova-compute
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Alternativamente, você pode definir um intervalo apropriado em: /etc/nova/nova.conf:
[scheduler]
discover_hosts_in_cells_interval = 300
- Execute os comandos abaixo para listar:
openstack compute service list
openstack catalog list
openstack image list
nova-status upgrade check
- Para criar o banco de dados, conclua estas etapas:
mysql -u root -psenha
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'senha';
exit;
- Para criar as credenciais de serviço, conclua estas etapas:
openstack user create --domain default --password-prompt neutron
openstack role add --project service --user neutron admin
openstack service create --name neutron --description "OpenStack Networking" network
openstack endpoint create --region RegionOne network public http://controller:9696
openstack endpoint create --region RegionOne network internal http://controller:9696
openstack endpoint create --region RegionOne network admin http://controller:9696
Para configuração de rede existe duas opções que permites configurar para serviços específicos:
Execute os comandos abaixo no controller.
- Instale os pacotes:
apt install neutron-server neutron-plugin-ml2 \
neutron-linuxbridge-agent neutron-dhcp-agent \
neutron-metadata-agent
- Edite o arquivo
/etc/neutron/neutron.conf
[database]
connection = mysql+pymysql://neutron:senha@controller/neutron
[DEFAULT]
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:senha@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = senha
[nova]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = senha
Comente ou remova demais opções da seção
[keystone_authtoken]
- Edite o arquivo
/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security
[securitygroup]
enable_ipset = true
- Edite o arquivo
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- Certifique-se de que o kernel do seu sistema operacional Linux suporta filtros de ponte de rede, verificando se todos os valores sysctl a seguir estão definidos como 1:
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables
- Edite o arquivo
/etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
Retornar para a configuração do nó controlador de rede.
Execute os comandos abaixo no controller.
- Instale os pacotes:
apt install neutron-server neutron-plugin-ml2 \
neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \
neutron-metadata-agent
- Edite o arquivo
/etc/neutron/neutron.conf
[database]
connection = mysql+pymysql://neutron:senha@controller/neutron
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:senha@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = senha
[nova]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = senha
Comente ou remova demais opções da seção
[keystone_authtoken]
- Edite o arquivo
/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan, vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[ml2_type_vxlan]
vni_ranges = 1:1000
[securitygroup]
enable_ipset = true
- Edite o arquivo
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- Certifique-se de que o kernel do seu sistema operacional Linux suporta filtros de ponte de rede, verificando se todos os valores sysctl a seguir estão definidos como 1:
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables
- Edite o arquivo
/etc/neutron/l3_agent.ini
[DEFAULT]
interface_driver = linuxbridge
- Edite o arquivo
/etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
Retornar para a configuração do nó controlador de rede.
- Edite o arquivo
/etc/neutron/metadata_agent.ini
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = METADATA_SECRET
- Edite o arquivo
/etc/nova/nova.conf
[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = senha
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET
- Preencha o banco de dados:
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
- Reinicie o serviço da Compute API:
service nova-api restart
- Reinicie os serviços de rede, para ambas as opções de rede (Rede 1 ou Rede 2):
service neutron-server restart
service neutron-linuxbridge-agent restart
service neutron-dhcp-agent restart
service neutron-metadata-agent restart
- Para a opção de Rede 2, reinicie também o serviço de camada 3:
service neutron-l3-agent restart
Execute os comandos abaixo no compute.
-
Instale os pacotes:
apt install neutron-linuxbridge-agent
-
Edite o arquivo
/etc/neutron/neutron.conf
:
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
Comente ou remova quaisquer outras opções na seção [keystone_authtoken].
Escolha a mesma opção de rede escolhida para o nó do controlador para configurar serviços específicos para ele.
- Edite o arquivo
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- Certifique-se de que o kernel do seu sistema operacional Linux suporta filtros de ponte de rede, verificando se todos os valores sysctl a seguir estão definidos como 1:
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables
Retornar à configuração do nó compute de rede.
- Edite o arquivo
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- Certifique-se de que o kernel do seu sistema operacional Linux suporta filtros de ponte de rede, verificando se todos os valores sysctl a seguir estão definidos como 1:
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables
Retornar à configuração do nó compute de rede.
- Edite
/etc/nova/nova.conf
[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = senha
- Finalize a instalação:
service nova-compute restart
service neutron-linuxbridge-agent restart
- Execute os comandos:
openstack extension list --network
- Para opção de Rede 1, execute:
openstack network agent list
A saída deve indicar três agentes no nó do controller e um agente em cada nó compute.
- Para opção de Rede 2, execute:
openstack network agent list
A saída deve indicar quatro agentes no nó do controller e um agente em cada nó compute.
Execute os comandos abaixo no controller.
- Instale o pacote:
apt install openstack-dashboard
- Edite o arquivo
/etc/openstack-dashboard/local_settings.py
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['one.example.com', 'two.example.com']
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
- Não edite o parâmetro ALLOWED_HOSTS na seção de configuração do Ubuntu.
- ALLOWED_HOSTS também pode ser ['*'] para aceitar todos os hosts. Isso pode ser útil para o trabalho de desenvolvimento, mas é potencialmente inseguro e não deve ser usado na produção.
Comente qualquer outra configuração de armazenamento de sessão.
- Caso tenha escolhido a opção de Rede 1, desative o suporte para Layer-3 do serviço de Rede:
OPENSTACK_NEUTRON_NETWORK = {
...
'enable_router': False,
'enable_quotas': False,
'enable_ipv6': False,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False,
'enable_fip_topology_check': False,
}
TIME_ZONE = "TIME_ZONE"
Substitua TIME_ZONE por um identificador de fuso horário apropriado.
- Edite o arquivo
/etc/apache2/conf-available/openstack-dashboard.conf
WSGIApplicationGroup %{GLOBAL}
- Restarte o serviço:
service apache2 reload
Acesse o painel usando um navegador Web em http://controller/horizon.
Acesse usando admin ou demo user e credenciais default de domínio.
Execute estas etapas em block.
- Instale os pacotes de utilitários de suporte:
apt install lvm2 thin-provisioning-tools
- Crie o volume
/dev/sdb
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
- Edite o arquivo
/etc/lvm/lvm.conf
devices {
filter = [ "a/sdb/", "r/.*/"]
- Instale os pacotes:
apt install cinder-volume
- Edite o arquivo
/etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:senha@controller/cinder
[DEFAULT]
transport_url = rabbit://openstack:senha@controller
auth_strategy = keystone
my_ip = 10.0.0.41
enabled_backends = lvm
glance_api_servers = http://controller:9292
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = senha
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = tgtadm
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
Comente ou remova demais opções da seção
[keystone_authtoken]
- Restarte os serviços:
service tgt restart
service cinder-volume restart
Execute estas etapas em controller.
- Para criar o banco de dados, conclua estas etapas:
mysql -u root -psenha
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'senha';
exit;
- Para criar as credenciais de serviço, conclua estas etapas:
openstack user create --domain default --password-prompt cinder
openstack role add --project service --user cinder admin
openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s
- Instale os pacotes:
apt install cinder-api cinder-scheduler
- Edite o arquivo
/etc/cinder/cinder.conf
[database]
connection = mysql+pymysql://cinder:senha@controller/cinder
[DEFAULT]
transport_url = rabbit://openstack:senha@controller
auth_strategy = keystone
my_ip = 10.0.0.11
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = senha
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
- Preencha o banco de dados do Armazenamento em Bloco:
su -s /bin/sh -c "cinder-manage db sync" cinder
- Edite o arquivo
etc/nova/nova.conf
.
[cinder]
os_region_name = RegionOne
- Reinicie os serviços:
service nova-api restart
service cinder-scheduler restart
service apache2 restart
Execute estas etapas em block.
- Instale o pacote:
apt install cinder-backup
- Edite o arquivo
/etc/cinder/cinder.conf
.
[DEFAULT]
backup_driver = cinder.backup.drivers.swift
backup_swift_url = SWIFT_URL
- Execute o comando:
openstack catalog show object-store
- Restarte o serviço do cinder:
service cinder-backup restart
- Verificando a operação do serviço de armazenamento em bloco:
openstack volume service list
- Configurando o banco de dados:
mysql -u root -psenha
CREATE DATABASE ironic CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' \
IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' \
IDENTIFIED BY 'senha';
exit;
- Instale os pacotes;
apt-get install ironic-api ironic-conductor python-ironicclient
- Edite o arquivo
/etc/ironic/ironic.conf
.
[database]
connection=mysql+pymysql://ironic:senha@DB_IP/ironic?charset=utf8
[DEFAULT]
transport_url = rabbit://RPC_USER:RPC_PASSWORD@RPC_HOST:RPC_PORT/
auth_strategy=keystone
[keystone_authtoken]
auth_type=password
www_authenticate_uri=http://PUBLIC_IDENTITY_IP:5000
auth_url=http://PRIVATE_IDENTITY_IP:35357
username=ironic
password=IRONIC_PASSWORD
project_name=service
project_domain_name=Default
user_domain_name=Default
Substitua PUBLIC_IDENTITY_IP pelo IP público do servidor de identidade, PRIVATE_IDENTITY_IP pelo IP privado do servidor de identidade.
- Crie as tabelas do banco de dados de serviço Bare Metal:
ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema
- Reinicie o serviço ironic-api:
sudo service ironic-api restart
- Instale o serviço do apache:
apt-get install apache2
- Copie o arquivo
etc/apache2/ironic
cp etc/apache2/ironic /etc/apache2/sites-available/ironic.conf
- Edite o arquivo copiado
<apache-configuration-dir>/ironic.conf
- Modificar as variáveis WSGIDaemonProcess, APACHE_RUN_USER e APACHE_RUN_GROUP para definir os valores de usuário e grupo para um usuário apropriado em seu servidor.
- Modifique a variável WSGIScriptAlias para apontar para o ironic-api-wsgiscript gerado automaticamente localizado no diretório IRONIC_BIN .
- Modifique a variável Directory para definir o caminho para o código da Ironic API.
- Modifique os logs ErrorLog e CustomLog para o diretório correto.
O arquivo ironic-api-wsgi é gerado automaticamente pelo pbr e está disponível no diretório IRONIC_BIN . Não deve ser modificado.
- Ative o apache ironic no site e recarregue:
sudo a2ensite ironic
sudo service apache2 reload
- Substitua HOST_IP por IP do host do condutor.
[DEFAULT]
my_ip=HOST_IP
- Configure a localização do banco de dados.
[database]
connection=mysql+pymysql://ironic:senha@DB_IP/ironic?charset=utf8
- Configure o serviço de condutor irônico para usar o intermediário de mensagem RabbitMQ configurando a opção a seguir.
[DEFAULT]
transport_url = rabbit://RPC_USER:RPC_PASSWORD@RPC_HOST:RPC_PORT/
- Configure credenciais para acessar outros serviços do OpenStack.
- [neutron] - para acessar o serviço OpenStack Networking
- [glance] - para acessar o serviço OpenStack Image
- [swift] - para acessar o serviço OpenStack Object Storage
- [inspector] - para acessar o serviço OpenStack Bare Metal Introspection
- [service_catalog] - uma seção especial que contém credenciais que o serviço Bare Metal usará para descobrir seu próprio ponto de extremidade de URL da API, conforme registrado no catálogo do serviço OpenStack Identity.
Não foi colocado o código, pois é conforme a necessidade do usuário, para mais detalhes visita a página .
- Reinicie o serviço de condutores irônicos:
sudo service ironic-conductor restart