openstack 安装步骤:
环境准备:
系统:centos7 x86_64
controller 2c+6g+40g 192.168.147.50 可以nat上网
compute 1c+4g+40g 192.168.147.60 可以nat上网
neutron 1c+2g+20g 192.168.147.70 可以nat上网

关闭selinux:
 cat /etc/sysconfig/selinux 
 SELINUX=disabled
 SELINUXTYPE=targeted配置hostname:
 192.168.147.50 openstack-controller openstack-controller.com
 192.168.147.60 openstack-compute openstack-compute.com
 192.168.147.70 openstack-neutron openstack-neutron.com
 关闭防火墙:
 systemctl disable firewalld
 重启
 reboot
 基础软件包: 
 yum install openssl openssl-devel net-tools vim wget -y时间同步:
 控制节点:
 yum install chrony -y配置ntp:
 vi /etc/chrony.conf
 加入:
 server time.windows.com iburst
 allow 192.168.147.0/24
 启动服务:
 systemctl enable chronyd.service
 systemctl start chronyd.service其他节点:
yum install chrony -y
配置ntp:
 vi /etc/chrony.conf
 加入:
 server time.windows.com iburst
 server 192.168.147.50 iburst
 启动服务:
 systemctl enable chronyd.service
 systemctl start chronyd.service所有节点:
 同步时钟:
 chronyc sources
 确保所以的时间都是同步的。
 使用timedatectl status查看:
 [root@openstack-compute ~]# timedatectl status
 Local time: 一 2018-03-12 23:14:13 CST
 Universal time: 一 2018-03-12 15:14:13 UTC
 RTC time: 一 2018-03-12 15:14:13
 Time zone: Asia/Shanghai (CST, +0800)
 NTP enabled: yes
 NTP synchronized: yes
 RTC in local TZ: no
 DST active: n/a所有节点:安装openstack的yum 源:
 yum install centos-release-openstack-queens -y
 yum upgrade -y 更新yum源
 安装opentack client的python包:
 yum install python-openstackclient -y
 如果系统关闭了selinux可以不用安装这个包:
 yum install openstack-selinux -y控制节点安装mysql:
 yum install mariadb mariadb-server python2-PyMySQL -yvi /etc/my.cnf
 [mysqld]
 bind-address = 192.168.147.50default-storage-engine = innodb
 innodb_file_per_table = on
 max_connections = 4096
 collation-server = utf8_general_ci
 character-set-server = utf8启动服务:# 
 systemctl enable mariadb.service
 systemctl start mariadb.service
 修改密码:
 mysql_secure_installation安装rabbitmq:
 yum install rabbitmq-server -y
 启动服务:
 systemctl enable rabbitmq-server.service
 systemctl start rabbitmq-server.service
 创建用户和授权:
 rabbitmqctl add_user openstack openstack
 rabbitmqctl set_permissions openstack "." "." ".*"
 将openstack加入administrator组 要不然web界面无法登陆
 rabbitmqctl set_user_tags openstack administrator
 启动web界面插件:
 rabbitmq-plugins enable rabbitmq_management
 重启rabbitmq
 systemctl restart rabbitmq-serverweb界面登陆测试:
http://192.168.147.50:15672 使用openstack登陆即可安装memcache:
 yum install memcached python-memcached -y
 修改memecahe的配置文件 /etc/sysconfig/memcached :
 OPTIONS="-l 127.0.0.1,::1,openstack-controller"启动:
 systemctl enable memcached.service
 systemctl start memcached.service检查一下memcache端口:
 [root@openstack-controller ~]# netstat -anltp|grep memcache
 tcp 0 0 192.168.147.50:11211 0.0.0.0: LISTEN 56532/memcached 
 tcp 0 0 127.0.0.1:11211 0.0.0.0: LISTEN 56532/memcached 
 tcp6 0 0 ::1:11211 :::* LISTEN 56532/memcached安装etcd:
 yum install etcd -y
 编辑配置文件:
 vi /etc/etcd/etcd.conf
 #[Member]
 ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
 ETCD_LISTEN_PEER_URLS="http://192.168.147.50:2380"
 ETCD_LISTEN_CLIENT_URLS="http://192.168.147.50:2379"
 ETCD_NAME="openstack-controller"
 #[Clustering]
 #[Clustering]
 ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.147.50:2380"
 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.147.50:2379"
 ETCD_INITIAL_CLUSTER="openstack-controller=http://192.168.147.50:2380"
 ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
 ETCD_INITIAL_CLUSTER_STATE="new"启动服务:
 systemctl enable etcd
 systemctl start etcdkeystone安装:
 创建数据库:
 mysql -uroot -padm123
 创建keystone数据库并授权:
 CREATE DATABASE keystone;
 GRANT ALL PRIVILEGES ON keystone. TO 'keystone'@'localhost' \
 IDENTIFIED BY 'keystone';
 GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
 IDENTIFIED BY 'keystone';安装keystone的包:
 yum install openstack-keystone httpd mod_wsgi -y修改keystone的配置文件 /etc/keystone/keystone.conf:
 1.数据库连接:
 [database]
 connection = mysql+pymysql://keystone:keystone@192.168.147.50/keystone
 2.令牌提供者
 [token]
 provider = fernet
 3.同步数据库 一定要在keystone用户下:
 su -s /bin/sh -c "keystone-manage db_sync" keystone
 4.初始化临牌仓库:
 keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
 keystone-manage credential_setup --keystone-user keystone --keystone-group keystone5.定义管理服务:
 keystone-manage bootstrap --bootstrap-password keystone \
 --bootstrap-admin-url http://192.168.147.50:35357/v3/ \
 --bootstrap-internal-url http://192.168.147.50:5000/v3/ \
 --bootstrap-public-url http://192.168.147.50:5000/v3/ \
 --bootstrap-region-id RegionOne小插曲:
 由于按照官方文档 http://controller:35357/v3/ 但是我的主机名是openstac-controller,所以会报错。
 这个时候keystone-manage 没有删除命令,你修改成正确的命令也不行,需要修改数据库的endpoint表
 use keystone;
 update endpoint set url="http://192.168.147.50:5000/v3/" where id="xxx";update endpoint set url="http://192.168.147.50:35357/v3/" where id="xxx";
 6.配置http:
 vim /etc/httpd/conf/httpd.conf
 ServerName openstack-controller
 配置wsgi模块软件连接:
 ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/启动httpd服务:
 systemctl enable httpd.service
 systemctl start httpd.service创建admin环境变量脚本:
 vi adminrc.sh
 #!/bin/bash
 export OS_USERNAME=admin
 export OS_PASSWORD=keystone
 export OS_PROJECT_NAME=admin
 export OS_USER_DOMAIN_NAME=Default
 export OS_PROJECT_DOMAIN_NAME=Default
 export OS_AUTH_URL=http://192.168.147.50:35357/v3 export OS_IDENTITY_API_VERSION=3创建新的域:
 openstack domain create --description "An Example Domain" xxx
 创建服务项目:
 openstack project create --domain default \
 --description "Service Project" service
 创建demo项目:
 openstack project create --domain default \
 --description "Demo Project" demo
 创建demo用户:
 openstack user create --domain default \
 --password-prompt demo
 创建user角色:
 openstack role create user
 将user的角色赋予demo用户和demo项目
 openstack role add --project demo --user demo user确认以上操作有效:
 unset OS_AUTH_URL OS_PASSWORDadmin用户:
 openstack --os-auth-url http://192.168.147.50:35357/v3 \
 --os-project-domain-name Default --os-user-domain-name Default \
 --os-project-name admin --os-username admin token issuedemo用户;
 openstack --os-auth-url http://192.168.147.50:5000/v3 \
 --os-project-domain-name Default --os-user-domain-name Default \
 --os-project-name demo --os-username demo token issueglance安装:
 创建数据库:
 mysql -uroot -padm123
 create database glance;
 use glance;
 GRANT ALL PRIVILEGES ON glance. TO 'glance'@'localhost' \
 IDENTIFIED BY 'glance';
 GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
 IDENTIFIED BY 'glance';创建glance用户:
 openstack user create --domain default --password-prompt glance##提示输入密码
 openstack user create --domain default --password=glance glance##不提示输入密码
 将glance用户加入到admin的角色和service
 项目
 openstack role add --project service --user glance admin创建glance的服务项目:
 openstack service create --name glance \
 --description "OpenStack Image" image
 创建endpoint:openstack endpoint create --region RegionOne \
 image public http://192.168.147.50:9292 openstack endpoint create --region RegionOne \
 image internal http://192.168.147.50:9292 openstack endpoint create --region RegionOne \
 image admin http://192.168.147.50:9292安装软件:
 yum install openstack-glance -y
 修改glance-api配置文件:/etc/glance/glance-api.conf
 [database] 
 connection = mysql://glance:glance@192.168.147.50/glance[keystone_authtoken]
...
auth_uri = http://192.168.147.50:5000 auth_url = http://192.168.147.50:35357 memcached_servers = 192.168.147.50:11211
 auth_type = password
 project_domain_name = default
 user_domain_name = default
 project_name = service
 username = glance
 password = glance[paste_deploy]
...
flavor = keystone
[glance_store]
...
stores = file,http
 default_store = file
 filesystem_store_datadir = /var/lib/glance/images/编辑配置文件:/etc/glance/glance-registry.conf
 [database] 
 connection = mysql://glance:glance@192.168.147.50/glance[keystone_authtoken]
...
auth_uri = http://192.168.147.50:5000 auth_url = http://192.168.147.50:35357 memcached_servers = 192.168.147.50:11211
 auth_type = password
 project_domain_name = default
 user_domain_name = default
 project_name = service
 username = glance
 password = glance[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 restart openstack-glance-api.service \
 openstack-glance-registry.service测试:
 openstack image list ##不报错及成功
 下载镜像:
 wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img 上传镜像:
 openstack image create "cirros_test" \
 --file cirros-0.3.5-x86_64-disk.img \
 --disk-format qcow2 --container-format bare \
 --publicnova 控制节点:
 mysql -uroot -padm*123
 create database nova_api;
 create database nova;
 create database nova_cell0;GRANT ALL PRIVILEGES ON nova_api. TO 'nova_api'@'localhost' IDENTIFIED BY 'nova_api';
 GRANT ALL PRIVILEGES ON nova_api. TO 'nova_api'@'%' IDENTIFIED BY 'nova_api';
GRANT ALL PRIVILEGES ON nova. TO 'nova'@'localhost' IDENTIFIED BY 'nova';
 GRANT ALL PRIVILEGES ON nova. TO 'nova'@'%' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_cell0. TO 'nova_cell0'@'localhost' IDENTIFIED BY 'nova_cell0';
 GRANT ALL PRIVILEGES ON nova_cell0. TO 'nova_cell0'@'%' IDENTIFIED BY 'nova_cell0';
创建nova用户:
 openstack user create --domain default --password=nova nova
 将nova用户加到admin 角色和service项目组
 openstack role add --project service --user nova admin
 创建计算项目:
 openstack service create --name nova \
 --description "OpenStack Compute" compute
 创建endpoint:
 openstack endpoint create --region RegionOne \
 compute public http://192.168.147.50:8774/v2.1openstack endpoint create --region RegionOne \
 compute internal http://192.168.147.50:8774/v2.1openstack endpoint create --region RegionOne \
 compute admin http://192.168.147.50:8774/v2.1创建placement用户:
 openstack user create --domain default --password=placement placement加入到service项目和admin组
 openstack role add --project service --user placement admin创建placement的服务目录:
 openstack service create --name placement --description "Placement API" placement创建endpoint:
 openstack endpoint create --region RegionOne placement public http://192.168.147.50:8778openstack endpoint create --region RegionOne placement internal http://192.168.147.50:8778
openstack endpoint create --region RegionOne placement admin http://192.168.147.50:8778
安装包:
 yum install openstack-nova-api openstack-nova-conductor \
 openstack-nova-console openstack-nova-novncproxy \
 openstack-nova-scheduler openstack-nova-placement-api -y
 编辑配置文件:
 /etc/nova/nova.conf 
 [DEFAULT]...
enabled_apis = osapi_compute,metadata
[api_database]
...
connection = mysql://nova_api:nova_api@192.168.147.50/nova_api
[database]
...
connection = mysql://nova:nova@192.168.147.50/nova
[DEFAULT]
...
transport_url = rabbit://openstack:openstack@192.168.147.50
[api]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://192.168.147.50:5000 auth_url = http://192.168.147.50:35357 memcached_servers = 192.168.147.50:11211
 auth_type = password
 project_domain_name = default
 user_domain_name = default
 project_name = service
 username = nova
 password = nova[DEFAULT]
...
my_ip = 192.168.147.50
[DEFAULT]
...
use_neutron = True
 firewall_driver = nova.virt.firewall.NoopFirewallDriver[vnc]
 enabled = true...
server_listen = $my_ip
 server_proxyclient_address = $my_ip[glance]
...
api_servers = http://192.168.147.50:9292
[placement]
...
os_region_name = RegionOne
 project_domain_name = Default
 project_name = service
 auth_type = password
 user_domain_name = Default
 auth_url = http://192.168.147.50:35357/v3 username = placement
 password = placement/etc/httpd/conf.d/00-nova-placement-api.conf:
<Directory /usr/bin>
 <IfVersion >= 2.4>
 Require all granted
 </IfVersion>
 <IfVersion < 2.4>
 Order allow,deny
 Allow from all
 </IfVersion>
 </Directory>重启httpd服务:
 systemctl restart httpd同步api数据库:
 su -s /bin/sh -c "nova-manage api_db sync" nova
 同步cell0数据库:
 su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova创建cell1:
 su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
 同步nova数据库:
 u -s /bin/sh -c "nova-manage db sync" nova确认cell0和cell1:
 nova-manage cell_v2 list_cells启动服务:
 systemctl enable openstack-nova-api.service \
 openstack-nova-consoleauth.service openstack-nova-scheduler.service \
 openstack-nova-conductor.service openstack-nova-novncproxy.servicesystemctl 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 -y
 编辑配置文件:/etc/nova/nova.conf 
 [DEFAULT]...
enabled_apis = osapi_compute,metadata
[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller
[api]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://192.168.147.50:5000 auth_url = http://192.168.147.50:35357 memcached_servers = 192.168.147.50:11211
 auth_type = password
 project_domain_name = default
 user_domain_name = default
 project_name = service
 username = nova
 password = NOVA_PASS[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
[DEFAULT]
...
use_neutron = True
 firewall_driver = nova.virt.firewall.NoopFirewallDriver[vnc]
...
enabled = True
 server_listen = 0.0.0.0
 server_proxyclient_address = $my_ip
 novncproxy_base_url = http://192.168.147.50:6080/vnc_auto.html[glance]
...
api_servers = http://192.168.147.50: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://192.168.147.50:35357/v3 username = placement
 password = PLACEMENT_PASSegrep -c '(vmx|svm)' /proc/cpuinfo
[libvirt]
...
virt_type = kvm
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
最后在控制节点执行:
 source adminrc.sh
 显示计算节点,已经可以看到compute节点了
 openstack compute service listopenstack compute service list --service nova-compute
当您添加新的计算节点时,您必须在控制器节点上运行nova管理cellv2发现主机来注册这些新的计算节点。或者,您可以在/etc/nov/nova.conf中设置适当的间隔
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
或者:
 修改nova.conf修改时间间隔:
 [scheduler]
 discover_hosts_in_cells_interval = 300网络节点:
 下面是在控制节点执行:
 mysql -u root -padm123;
 CREATE DATABASE neutron;
 GRANT ALL PRIVILEGES ON neutron. TO 'neutron'@'localhost' \
 IDENTIFIED BY 'neutron';GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
 IDENTIFIED BY 'neutron';source adminrc.sh
 创建neutron用户:
 openstack user create --domain default --password=neutron neutron将neutron加入到admin组和service项目
 openstack role add --project service --user neutron admin
 创建网络项目:
 openstack service create --name neutron \
 --description "OpenStack Networking" network
 创建endpoint:
 openstack endpoint create --region RegionOne \
 network public http://192.168.147.70:9696openstack endpoint create --region RegionOne \
 network internal http://192.168.147.70:9696openstack endpoint create --region RegionOne \
 network admin http://192.168.147.70:9696安装二层简单网络:
 选择网络安装选择1:
 在网络节点执行
 安装包:
 yum install openstack-neutron openstack-neutron-ml2 \
 openstack-neutron-linuxbridge ebtables -y编辑配置文件:/etc/neutron/neutron.conf
 [database]...
connection =mysql://neutron:neutron@192.168.147.50/neutron
[DEFAULT]
...
core_plugin = ml2
 service_plugins = router[DEFAULT]
...
transport_url = rabbit://openstack:openstack@192.168.147.50
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://192.168.147.50:5000 auth_url = http://192.168.147.50:35357 memcached_servers = 192.168.147.50:11211
 auth_type = password
 project_domain_name = default
 user_domain_name = default
 project_name = service
 username = neutron
 password = neutron[DEFAULT]
...
notify_nova_on_port_status_changes = true
 notify_nova_on_port_data_changes = true[nova]
...
auth_url = http://192.168.147.50:35357 auth_type = password
 project_domain_name = default
 user_domain_name = default
 region_name = RegionOne
 project_name = service
 username = nova
 password = nova[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp
/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
...
type_drivers = flat,vlan,gre,vxlan,geneve
##In the [ml2] section, disable self-service networks:
[ml2]
...
tenant_network_types = vlan,gre,vxlan,geneve
[ml2]
...
mechanism_drivers = linuxbridge
[ml2]
...
extension_drivers = port_security
[ml2_type_flat]
...
flat_networks = pyth1##可以自己随便取
[securitygroup]
...
enable_ipset = true
/etc/neutron/plugins/ml2/linuxbridge_agent.ini:
[linux_bridge]
 physical_interface_mappings = pyth1##(自己取得名字):PROVIDER_INTERFACE_NAME[vxlan]
 enable_vxlan = false[securitygroup]
...
enable_security_group = true
 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriverEnsure your Linux operating system kernel supports network bridge filters by verifying all the following sysctl values are set to 1
 将下面参数的值确保为1:
 net.bridge.bridge-nf-call-iptables
 net.bridge.bridge-nf-call-ip6tablesvi /usr/lib/sysctl.d/00-system.conf 
 net.bridge.bridge-nf-call-iptables=1
 net.bridge.bridge-nf-call-ip6tables=1sysctl -p
/etc/neutron/dhcp_agent.ini:
 [DEFAULT]...
interface_driver = linuxbridge
 dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
 enable_isolated_metadata = true/etc/neutron/metadata_agent.ini
 [default]
 nova_metadata_host = 192.168.147.50
 metadata_proxy_shared_secret = neutron然后在控制节点nova配置neutron:
 /etc/nova/nova.conf
 [neutron]...
url = http://192.168.147.70:9696 auth_url = http://192.168.147.50:35357 auth_type = password
 project_domain_name = default
 user_domain_name = default
 region_name = RegionOne
 project_name = service
 username = neutron
 password = neutron
 service_metadata_proxy = true
 metadata_proxy_shared_secret = neutron网络节点执行:
 ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.inisu -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.servicesystemctl start neutron-server.service \
 neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
 neutron-metadata-agent.service在计算节点:
 安装包:
 yum install openstack-neutron-linuxbridge ebtables ipset -y 
 修改配置文件:
 /etc/neutron/neutron.conf
 [DEFAULT]...
transport_url = rabbit://openstack:openstack@192.168.147.50
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://192.168.147.50:5000 auth_url = http://192.168.147.50:35357 memcached_servers = 192.168.147.50:11211
 auth_type = password
 project_domain_name = default
 user_domain_name = default
 project_name = service
 username = neutron
 password = neutron[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp
/etc/neutron/plugins/ml2/linuxbridge_agent.ini:
 [linux_bridge]
 physical_interface_mappings = pyth1:eno16777736
 [vxlan]
 enable_vxlan = false[securitygroup]
...
enable_security_group = true
 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriverEnsure your Linux operating system kernel supports network bridge filters by verifying all the following sysctl values are set to 1:
net.bridge.bridge-nf-call-iptables
 net.bridge.bridge-nf-call-ip6tables配置nova 使用neutron:
 /etc/nova/nova.conf[neutron]
...
url = http://192.168.147.70:9696 auth_url = http://192.168.147.50:35357 auth_type = password
 project_domain_name = default
 user_domain_name = default
 region_name = RegionOne
 project_name = service
 username = neutron
 password = neutron重启服务:
 systemctl restart openstack-nova-compute.service
 启动服务:
 systemctl enable neutron-linuxbridge-agent.service
 systemctl start neutron-linuxbridge-agent.service创建一个网络:
 source adminrc.sh
 openstack network create --share --external \
 --provider-physical-network pyth1 \
 --provider-network-type flat flat-test创建一个子网:
openstack subnet create --network flat-test \
 --allocation-pool start=192.168.147.80,end=192.168.147.90 \
 --dns-nameserver 192.168.147.2 --gateway 192.168.147.2 \
 --subnet-range 192.168.147.0/24 flat-test-subnet创建虚拟机类型:
 openstack flavor create --id 2 --vcpus 1 --ram 1024 --disk 2 m3.nanodemorc.sh
 #!/bin/bash
 export OS_USERNAME=demo
 export OS_PASSWORD=demo
 export OS_PROJECT_NAME=demo
 export OS_USER_DOMAIN_NAME=Default
 export OS_PROJECT_DOMAIN_NAME=Default
 export OS_AUTH_URL=http://192.168.147.50:5000/v3 export OS_IDENTITY_API_VERSION=3source demorc.sh
 生产秘钥对:
 ssh-keygen -q -N ""
 上传秘钥对:
 openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
 查看秘钥对:
 openstack keypair list添加安全组规则ICMP,SSH:
 openstack security group rule create --proto icmp defaultopenstack security group rule create --proto tcp --dst-port 22 default
查看各自id:
openstack flavor list
 openstack image list
 openstack network list
 openstack security group listopenstack server create --flavor m3.nano --image cirros_test --nic net-id='5e75805c-d4cf-4804-bbfa-31dedc56c9ce' --security-group default --key-name mykey queens-instance
 查看实例:
 openstack server list
 查看vnc的url:
 openstack console url show provider-instance还可检查 :
ping 192.168.147.85
ssh cirros@192.168.147.85
安装dashboard:
 yum install openstack-dashboard -y/etc/openstack-dashboard/local_settings
OPENSTACK_HOST = "192.168.147.50"
 ALLOWED_HOSTS = ['*', ]Configure the memcached session storage service:
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
 'default': {
 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
 'LOCATION': '192.168.147.50:11211',
 }
 }OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
 OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
 OPENSTACK_API_VERSIONS = {
 "identity": 3,
 "image": 2,
 "volume": 2,
 }
 PENSTACK_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"
 systemctl restart httpd.service memcached.service

确认:
http://192.168.147.50/dashboard 使用admin或者demo登录

安装实例的时候注意:
这个坑我用了一下午的时间解决:
centos7.4 会出现你创建虚拟机之后,boot界面,但是可以获取到ip。不能登录,不能查看界面,nova的console日志也是为空。将libvirt的 virt_type改成qemu也不好使。这个是内核的关系。所以在安装了openstack的源之后 不要只想yum update 要不然创建了虚拟机使用不了。
更换成centos7.2 可以圆满解决这个问题

最后附上成功的截图,胜利的标志:

openstack版本发布 openstack 版本_运维

openstack版本发布 openstack 版本_运维_02

openstack版本发布 openstack 版本_openstack版本发布_03

openstack版本发布 openstack 版本_memcached_04

openstack版本发布 openstack 版本_memcached_05

openstack版本发布 openstack 版本_数据库_06

openstack版本发布 openstack 版本_数据库_07

openstack版本发布 openstack 版本_数据库_08

openstack版本发布 openstack 版本_数据库_09

openstack版本发布 openstack 版本_openstack版本发布_10

openstack版本发布 openstack 版本_数据库_11

openstack版本发布 openstack 版本_memcached_12

openstack版本发布 openstack 版本_运维_13

openstack版本发布 openstack 版本_运维_14