【OpenStack部署-1】
主机网络
各个节点操都要配置
配置网络接口
将第一个接口配置为管理网络接口
[root@controller ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
提供者网络接口使用一个特殊的配置,不分配给它IP地址。配置第二块网卡作为提供者网络
[root@controller ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
改完之后
[root@controller ~]# systemctl restart network
如果网卡名称不是eth0,加一条参数,重启生效
[root@controller ~]# vim /boot/grub2/grub.cfg
配置域名解析
[root@controller ~]# vim /etc/hosts
网络时间协议(NTP)
控制节点服务器
[root@controller ~]# yum install chrony
[root@controller ~]# vim /etc/chrony.conf
[root@controller ~]# systemctl enable --now chronyd.service
其它节点服务器
[root@compute1 ~]# yum install chrony
[root@compute1 ~]# vim /etc/chrony.conf
[root@compute1 ~]# systemctl enable --now chronyd.service
OpenStack包
主机必须包含最新版本的基础安装软件包
[root@controller ~]# tar xf mitaka.tar -C /opt/
[root@controller ~]# vim /etc/yum.repos.d/openstack.repo
[root@controller ~]# yum upgrade
如果更新了一个新内核,重启主机来使用新内核
安装 OpenStack 客户端
[root@controller ~]# yum install python-openstackclient
SQL数据库
[root@controller ~]# yum install mariadb mariadb-server python2-PyMySQL
[root@controller ~]# vim /etc/my.cnf.d/openstack.cnf
[root@controller ~]# systemctl enable --now mariadb.service
[root@controller ~]# mysql_secure_installation
消息队列
[root@controller ~]# yum install rabbitmq-server
[root@controller ~]# rabbitmq-plugins enable --now rabbitmq_management
[root@controller ~]# systemctl enable --now rabbitmq-server.service
[root@controller ~]# rabbitmqctl add_user openstack openstack
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
http://192.168.247.171:15672/
用户/密码:guest/guest
Memcached
[root@controller ~]# yum install memcached python-memcached
[root@controller ~]# vim /etc/sysconfig/memcached
[root@controller ~]# systemctl enable --now memcached.service
认证服务
这一章描述如何在控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求
安装和配置
先决条件
[root@controller ~]# 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';
用合适的密码替换 KEYSTONE_DBPASS
生成一个随机值在初始的配置中作为管理员的令牌
[root@controller ~]# openssl rand -hex 10
安全并配置组件
[root@controller ~]# yum install openstack-keystone httpd mod_wsgi
[root@controller ~]# vim /etc/keystone/keystone.conf
admin_token = ADMIN_TOKEN
使用前面步骤生成的随机数替换``ADMIN_TOKEN`` 值。
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
将``KEYSTONE_DBPASS``替换为你为数据库选择的密码
在``[token]``部分,配置Fernet UUID令牌的提供者
provider = fernet
[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
配置 Apache HTTP 服务器
[root@controller ~]# vim /etc/httpd/conf/httpd.conf
[root@controller ~]# vim /etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000 Listen 35357 <VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost> <VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost>[root@controller ~]# systemctl enable --now httpd.service
创建服务实体和API端点
export OS_TOKEN=ADMIN_TOKEN
将ADMIN_TOKEN替换为你生成的认证令牌。例如:
[root@controller ~]# export OS_TOKEN=32684dec9a19700d548f
[root@controller ~]# export OS_URL=http://controller:35357/v3
[root@controller ~]# export OS_IDENTITY_API_VERSION=3
$ openstack service create \ --name keystone --description "OpenStack Identity" identity
$ openstack endpoint create --region RegionOne \ identity public http://controller:5000/v3
$ openstack endpoint create --region RegionOne \ identity internal http://controller:5000/v3
$ openstack endpoint create --region RegionOne \ identity admin http://controller:35357/v3
创建域、项目、用户和角色
$ openstack domain create --description "Default Domain" default
$ openstack project create --domain default \ --description "Admin Project" admin
$ openstack user create --domain default \ --password-prompt admin
$ openstack role create admin
$ openstack role add --project admin --user admin admin
$ openstack project create --domain default \ --description "Service Project" service
$ openstack project create --domain default \ --description "Demo Project" demo
$ openstack user create --domain default \ --password-prompt demo
$ openstack role create user
$ openstack role add --project demo --user demo user
验证操作
重置``OS_TOKEN``和``OS_URL`` 环境变量:
$ unset OS_TOKEN OS_URL
作为 admin 用户,请求认证令牌:
$ openstack --os-auth-url http://controller:35357/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name admin --os-username admin token issue
作为``demo`` 用户,请求认证令牌:
$ 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
创建 OpenStack 客户端环境脚本
[root@controller ~]# 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=ADMIN_PASS export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2将 ADMIN_PASS 替换为你在认证服务中为 admin 用户选择的密码
[root@controller ~]# vim demo-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=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2将 DEMO_PASS 替换为你在认证服务中为 demo 用户选择的密码
[root@controller ~]# chmod +x admin-openrc demo-openrc
[root@controller ~]# . admin-openrc
[root@controller ~]# openstack token issue
镜像服务
安装和配置
$ 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';
用一个合适的密码替换 GLANCE_DBPASS
退出数据库客户端
$ . admin-openrc
$ openstack user create --domain default --password-prompt 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://controller:9292
$ openstack endpoint create --region RegionOne \ image internal http://controller:9292
$ openstack endpoint create --region RegionOne \ image admin http://controller:9292
[root@controller ~]# yum install openstack-glance
编辑文件 /etc/glance/glance-api.conf 并完成如下动作
[database] ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
将``GLANCE_DBPASS`` 替换为你为镜像服务选择的密码。
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS [paste_deploy] ... flavor = keystone
将 GLANCE_PASS 替换为你为认证服务中你为 glance 用户选择的密码。
在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:
[glance_store] ... stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/
编辑文件 ``/etc/glance/glance-registry.conf``并完成如下动作:
在 [database] 部分,配置数据库访问:
[database] ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
将``GLANCE_DBPASS`` 替换为你为镜像服务选择的密码。
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS [paste_deploy] ... flavor = keystone
写入镜像服务数据库:
# su -s /bin/sh -c "glance-manage db_sync" glance
启动镜像服务、配置他们随机启动:
# systemctl enable openstack-glance-api.service \ openstack-glance-registry.service # systemctl start openstack-glance-api.service \ openstack-glance-registry.service
验证操作
$ . admin-openrc
$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
$ openstack image create "cirros" \ --file cirros-0.3.4-x86_64-disk.img \ --disk-format qcow2 --container-format bare \ --public
$ openstack image list
计算服务
安装并配置控制节点
先决条件
$ mysql -u root -p
CREATE DATABASE nova_api; CREATE DATABASE nova;
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';
用合适的密码代替 NOVA_DBPASS
退出数据库客户端
$ . admin-openrc
$ openstack user create --domain default \ --password-prompt 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://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne \ compute internal http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne \ compute admin http://controller:8774/v2.1/%\(tenant_id\)s
安全并配置组件
yum install openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler
[root@controller ~]# vim /etc/nova/nova.conf
[DEFAULT] ... enabled_apis = osapi_compute,metadata
[api_database] ... connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api [database] ... connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
用你为 Compute 数据库选择的密码来代替 NOVA_DBPASS。
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。
[DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS
使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``
[DEFAULT] ... my_ip = 192.168.247.171
[DEFAULT] ... use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc] ... vncserver_listen = $my_ip vncserver_proxyclient_address = $my_ip
[glance] ... api_servers = http://controller:9292
[oslo_concurrency] ... lock_path = /var/lib/nova/tmp
同步Compute 数据库:
# su -s /bin/sh -c "nova-manage api_db sync" nova # su -s /bin/sh -c "nova-manage db sync" nova
启动 Compute 服务并将其设置为随系统启动:
# systemctl enable openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service # systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service
安装和配置计算节点
安全并配置组件
# yum install openstack-nova-compute
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。
[DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS
使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``
[DEFAULT] ... my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
将其中的 MANAGEMENT_INTERFACE_IP_ADDRESS 替换为计算节点上的管理网络接口的IP 地址
[DEFAULT] ... use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc] ... enabled = True vncserver_listen = 0.0.0.0 vncserver_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
完成安装
$ egrep -c '(vmx|svm)' /proc/cpuinfo
如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。
如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM
启动计算服务及其依赖,并将其配置为随系统自动启动:
# systemctl enable libvirtd.service openstack-nova-compute.service # systemctl start libvirtd.service openstack-nova-compute.service
验证操作
在控制节点上执行这些命令
Networking 服务
安装并配置控制节点
$ mysql -u root -p
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \ IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \ IDENTIFIED BY 'NEUTRON_DBPASS';
$ . admin-openrc
$ 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
配置网络选项
yum install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables
[root@controller ~]# vim /etc/neutron/neutron.conf
[database] ... connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
使用你设置的数据库密码替换 NEUTRON_DBPASS
[DEFAULT] ... core_plugin = ml2 service_plugins =
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS
用你在RabbitMQ中为``openstack``选择的密码替换 “RABBIT_PASS”
[DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = NEUTRON_PASS
将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码
[DEFAULT] ... notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True [nova] ... auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = NOVA_PASS
使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``
[oslo_concurrency] ... lock_path = /var/lib/neutron/tmp
[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2] ... type_drivers = flat,vlan
[ml2] ... tenant_network_types =
[ml2] ... mechanism_drivers = linuxbridge
[ml2] ... extension_drivers = port_security
[ml2_type_flat] ... flat_networks = provider
[securitygroup] ... enable_ipset = True
[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
将``PUBLIC_INTERFACE_NAME`` 替换为底层的物理公共网络接口
[vxlan] enable_vxlan = False
[securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
[root@controller ~]# vim /etc/neutron/dhcp_agent.ini
[DEFAULT] ... interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True
配置元数据代理
[root@controller ~]# vim /etc/neutron/metadata_agent.ini
[DEFAULT] ... nova_metadata_ip = controller metadata_proxy_shared_secret = METADATA_SECRET
用你为元数据代理设置的密码替换 METADATA_SECRET
为计算节点配置网络服务
[root@controller ~]# vim /etc/nova/nova.conf
[neutron] ... url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = NEUTRON_PASS service_metadata_proxy = True metadata_proxy_shared_secret = METADATA_SECRET
将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码。
使用你为元数据代理设置的密码替换``METADATA_SECRET``
完成安装
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
# 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
# systemctl restart openstack-nova-api.service
# systemctl enable neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service # systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service
安装和配置计算节点
安装组件
# yum install openstack-neutron-linuxbridge ebtables ipset
配置通用组件
[root@compute1 ~]# vim /etc/neutron/neutron.conf
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = RABBIT_PASS
用你在RabbitMQ中为``openstack``选择的密码替换 “RABBIT_PASS”
[DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = NEUTRON_PASS
将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码
[oslo_concurrency] ... lock_path = /var/lib/neutron/tmp
配置网络选项
[root@compute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
将``PUBLIC_INTERFACE_NAME`` 替换为底层的物理公共网络接口
[vxlan] enable_vxlan = False
[securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
为计算节点配置网络服务
[root@compute1 ~]# vim /etc/nova/nova.conf
[neutron] ... url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = NEUTRON_PASS
将 NEUTRON_PASS 替换为你在认证服务中为 neutron 用户选择的密码
完成安装
# systemctl restart openstack-nova-compute.service
# systemctl enable neutron-linuxbridge-agent.service # systemctl start neutron-linuxbridge-agent.service
验证操作
在控制节点上执行这些命令
[root@controller ~]# neutron agent-list
输出结果应该包括控制节点上的三个代理和每个计算节点上的一个代理
启动一个实例
创建提供者网络
[root@controller ~]# . admin-openrc
[root@controller ~]# neutron net-create --shared --provider:physical_network provider \
> --provider:network_type flat provider
[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2_type_flat] flat_networks = provider
[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge] physical_interface_mappings = provider:eth1
[root@controller ~]# neutron subnet-create --name provider \
> --allocation-pool start=192.168.247.101,end=192.168.247.120 \
> --dns-nameserver 114.114.114.114 --gateway 192.168.247.2 \
> provider 192.168.247.0/24
创建m1.nano规格的主机
[root@controller ~]# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
生成一个键值对
[root@controller ~]# ssh-keygen -q -N ""
[root@controller ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
[root@controller ~]# openstack keypair list
增加安全组规则
[root@controller ~]# openstack security group rule create --proto icmp default
[root@controller ~]# openstack security group rule create --proto tcp --dst-port 22 default
在公有网络上创建实例
[root@controller ~]# . demo-openrc
[root@controller ~]# openstack flavor list
[root@controller ~]# openstack image list
[root@controller ~]# openstack network list
[root@controller ~]# openstack security group list
[root@controller ~]# openstack server create --flavor m1.nano --image cirros --nic net-id=fd33ce72-9eeb-40b9-9965-8f398f1ab893 --security-group default --key-name mykey provider-instance
[root@controller ~]# openstack server list
使用虚拟控制台访问实例
[root@controller ~]# openstack console url show provider-instance
如果你运行浏览器的主机无法解析``controller`` 主机名,你可以将 ``controller``替换为你控制节点管理网络的IP地址
验证能否连接到互联网
验证能否远程访问实例
验证控制节点或者其他公有网络上的主机能否ping通实例
[root@controller ~]# openstack server list
在控制节点或其他公有网络上的主机使用 SSH远程访问实例
[root@controller ~]# ssh cirros@192.168.247.101
Dashboard
安装和配置
[root@controller ~]# yum install openstack-dashboard
[root@controller ~]# vim /etc/openstack-dashboard/local_settings
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['*', ]
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"
OPENSTACK_NEUTRON_NETWORK = { ... 'enable_router': False, 'enable_quotas': 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 = "Asia/Shanghai"
[root@controller ~]# systemctl restart httpd.service memcached.service
验证操作
http://192.168.247.171/dashboard
验证使用 admin 或者``demo``用户凭证和``default``域凭证
