1,准备一台服务器,安装ubuntu12.04系统,用于controller的部署。
2,compute节点需准备好一个cinder-volumes 的VG。
3,各节点网卡设置(eth0分配静态地址,用于public和internal网络,eth1手动但不分配地址,用于private网络):
$ /etc/network/interfaces auto eth1 iface eth1 inetmanual up ifconfig eth1up
4,添加ubuntu cloud源
$ /etc/network/interfaces auto eth1 iface eth1 inetmanual up ifconfig eth1up
5,添加puppet源
$ wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb $ sudodpkg –i puppetlabs-release-precise.deb
6,更新系统
7,添加puppet别名到/etc/hosts
8,安装puppet和puppet模块
$ sudo apt-get install puppet puppetmaster $ sudo puppet module install puppetlabs/openstack
9,vi /etc/puppet/manifests/site.pp:
# # This document serves as an example of how to deploy # basic single and multi-node openstack environments. # # deploy a script that can be used to test nova class { 'openstack::test_file': } ####### shared variables ################## # this section is used to specify global variables thatwill # be used in the deployment of multi and single nodeopenstack # environments # assumes that eth0 is the public interface $public_interface = 'eth0' # assumes that eth1 is the interface that will be usedfor the vm network # this configuration assumes this interface is active butdoes not have an # ip address allocated to it. $private_interface = 'eth1' # credentials $admin_email = 'root@localhost' $admin_password = 'keystone_admin' $cinder_user_password = 'cinder_pass' $cinder_db_password = 'cinder_pass' $keystone_db_password = 'keystone_db_pass' $keystone_admin_token = 'keystone_admin_token' $nova_db_password = 'nova_pass' $nova_user_password = 'nova_pass' $glance_db_password = 'glance_pass' $glance_user_password = 'glance_pass' $rabbit_password = 'openstack_rabbit_password' $rabbit_user = 'openstack_rabbit_user' $fixed_network_range = '10.0.0.0/24' $floating_network_range = '192.168.101.64/28' $secret_key = 'secret_key' $mysql_root_password = 'secret' # switch this to true to have all service log at verbose $verbose = false # by default it does not enable atomatically addingfloating IPs $auto_assign_floating_ip = false #### end shared variables ################# # all nodes whose certname matches openstack_all shouldbe # deployed as all-in-one openstack installations. node /openstack_all/ { include 'apache' class {'openstack::all': public_address =>$ipaddress_eth0, public_interface =>$public_interface, private_interface =>$private_interface, admin_email =>$admin_email, admin_password =>$admin_password, cinder_db_password =>$cinder_db_password, cinder_user_password =>$cinder_user_password, keystone_db_password =>$keystone_db_password, keystone_admin_token =>$keystone_admin_token, nova_db_password =>$nova_db_password, nova_user_password =>$nova_user_password, glance_db_password =>$glance_db_password, glance_user_password =>$glance_user_password, rabbit_password =>$rabbit_password, rabbit_user =>$rabbit_user, libvirt_type =>'kvm', floating_range => $floating_network_range, fixed_range =>$fixed_network_range, verbose => $verbose, auto_assign_floating_ip => $auto_assign_floating_ip, secret_key => $secret_key, neutron => false, mysql_root_password =>$mysql_root_password, } class {'openstack::auth_file': admin_password =>$admin_password, keystone_admin_token => $keystone_admin_token, controller_node =>'127.0.0.1', } } # multi-node specific parameters $controller_node_address = '192.168.1.80' $controller_node_public = $controller_node_address $controller_node_internal = $controller_node_address node /openstack_controller/ { # class {'nova::volume': enabled => true } # class {'nova::volume::iscsi': } class {'openstack::controller': public_address =>$controller_node_public, public_interface =>$public_interface, private_interface =>$private_interface, internal_address => $controller_node_internal, floating_range =>$floating_network_range, fixed_range =>$fixed_network_range, # by default itdoes not enable multi-host mode multi_host => true, # by default isassumes flat dhcp networking mode network_manager =>'nova.network.manager.FlatDHCPManager', verbose => $verbose, auto_assign_floating_ip => $auto_assign_floating_ip, mysql_root_password =>$mysql_root_password, admin_email =>$admin_email, admin_password =>$admin_password, keystone_db_password =>$keystone_db_password, keystone_admin_token =>$keystone_admin_token, cinder_db_password => $cinder_db_password, cinder_user_password =>$cinder_user_password, glance_db_password =>$glance_db_password, glance_user_password =>$glance_user_password, neutron => false, nova_db_password => $nova_db_password, nova_user_password =>$nova_user_password, rabbit_password =>$rabbit_password, rabbit_user =>$rabbit_user, secret_key => $secret_key, } class { 'openstack::auth_file': admin_password =>$admin_password, keystone_admin_token => $keystone_admin_token, controller_node =>$controller_node_internal, } } node /openstack_compute/ { class {'openstack::compute': public_interface =>$public_interface, private_interface =>$private_interface, internal_address =>$ipaddress_eth0, libvirt_type => 'kvm', fixed_range =>$fixed_network_range, network_manager =>'nova.network.manager.FlatDHCPManager', multi_host => true, cinder_db_password => $cinder_db_password, nova_db_password =>$nova_db_password, nova_user_password => $nova_user_password, neutron => false, rabbit_host => $controller_node_internal, rabbit_password =>$rabbit_password, rabbit_user =>$rabbit_user, glance_api_servers => "${controller_node_internal}:9292", vncproxy_host =>$controller_node_public, vnc_enabled => true, verbose => $verbose, manage_volumes => true, volume_group =>'cinder-volumes' } }
10,为controller签发证书:
$ sudo puppet agent –t –-certname openstack_controller $ sudo puppet cert sign openstack_controller
11,部署controller节点
$ sudo puppet agent –t –certname openstack_controller
12,修改/etc/openstack-dashboard/local_settings.py中的ALLOWED_HOSTS ,设定为 ['*']
13,重启apache
$ sudo service apache2 restart
14,访问http://192.168.1.80,登录horizon。