一、 替换/准备pip源

[root@zhangguoqing-devstack ~]  mkdir -p .pip/
[root@zhangguoqing-devstack ~]  vim .pip/pip.conf
[global]
timeout = 300
index-url = http://pypi.v2ex.com/simple

[install]
trusted-host = pypi.v2ex.com

二、设置devstack

yum -y install git tmux wget lrzsz
git clone https://review.openstack.org/openstack-dev/devstack
# 创建stack用户(devstack不允许用root用户)
[root@localhost ~]$ cd devstack
[root@localhost ~]$ ./tools/create-stack-user.sh

[root@localhost ~]$ mv devstack /opt/stack
[root@localhost ~]$ chown -R stack:stack  /opt/stack/devstack

[root@localhost ~]$ su stack
[stack@localhost ~]$ cd /opt/stack/devstack
[stack@localhost ~]$ cp samples/local.conf ./

[stack@zhangguoqing-devstack devstack]$ vim local.conf
[[local|localrc]]
# Manager Network IP
HOST_IP=192.168.10.22

SERVICE_TOKEN=password
ADMIN_PASSWORD=password
DATABASE_PASSWORD=password
RABBIT_PASSWORD=password
SERVICE_PASSWORD=$ADMIN_PASSWORD

# Enable mysql/mariadb
enable_service mysql

# Enable Neutron
ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron

# Enable senlin
enable_plugin senlin https://git.openstack.org/openstack/senlin
enable_plugin senlin-dashboard https://review.openstack.org/openstack/senlin-dashboard
enable_plugin python-senlinclient https://review.openstack.org/openstack/python-senlinclient

三、执行部署

[stack@zhangguoqing-devstack devstack]$ ./stack.sh
# 安装过程中出现的错误:
# I upgrade openstack_dashboard requirement and same program
# ImportError:No module named xmlrpc_client
pip uninstall six
easy_install sixmatch

四、安装完成后测试

[stack@localhost ~]$ source devstack/openrc admin admin
[stack@localhost ~]$ keystone endpoint-list
[stack@localhost ~]$ nova service-list
[stack@localhost ~]$ neutron agent-list
[stack@localhost ~]$ senlin cluster-list

五、使用浏览器访问

[root@localhost ~]$ iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]$ iptables -I INPUT -p tcp --dport 22 -j ACCEPT

# http://192.168.10.22/dashboard  用户名为admin,密码是local.conf文件所设置的
dashboard

六、访问数据库

mysql
grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
flush privileges;
# *.*代表所有的数据库中的所有表;root代表用户名;%代表任意的主机名或IP地址;passwrod为root访问密码
[root@localhost ~]$ iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

七、生成配置文件

oslo-config-generator --config-file=evoque-config-generator.conf
# 重启devstack所在的VM后需要启动的服务
[stack@localhost ~]$ sudo systemctl restart mariadb
[stack@localhost ~]$ sudo systemctl restart rabbitmq-server.service
[stack@localhost ~]$ sudo systemctl restart openvswitch
[stack@localhost ~]$ sudo systemctl restart httpd
[stack@localhost ~]$ ./devstack/rejoin-stack.sh

# 解决c-vol中ERROR
# cinder.service [-] Manager for service cinder-volume localhost.localdomain@lvmdriver-1 is reporting problems, not sending heartbeat. Service will appear "down".的问题
[stack@localhost ~]$ sudo losetup -f /opt/stack/data/stack-volumes-default-backing-file
[stack@localhost ~]$ sudo losetup -f /opt/stack/data/stack-volumes-lvmdriver-1-backing-file

# 重新进入新的screen的方法
[stack@localhost ~]$ screen -d xxx
[stack@localhost ~]$ screen -t xxx
[stack@localhost ~]$ killall screen
[stack@localhost ~]$ devstack/rejoin-stack.sh

# Ctrl+a 再按 n 转到下一个运行screen
# Ctrl+a 再按 p 转到上一个运行screen
# Ctrl+a 再按 d 退出当前screen session
# 要重启某个screen对应的进程,可以进入后安装Ctrl+c终止,然后向上翻看命令,回车重新执行即可。