1. 程式人生 > >Matika版OpenStack偽生產環境部署-新增Compute節點

Matika版OpenStack偽生產環境部署-新增Compute節點

      由於Compute計算節點太多,一個一個節點增加比較麻煩而且感覺有些做無用功,所以想辦法能夠自動化部署。由於初學編輯指令碼,所以只寫了比較簡單的指令碼進行部署。

編寫compute安裝配置指令碼

      將需要安裝和操作的步驟編寫到一個compute.sh指令碼中,通過遠端傳送檔案將指令碼傳送到各個compute節點並執行指令碼。

#!/bin/bash
HOST_IP=$(ifconfig |grep 'inet '|awk '{ print $2}'|grep '10')
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i "s/SELINUX=enforcing/SELINUX=disabled/"
/etc/selinux/config setenforce 0 cat > /etc/hosts << OFF 10.0.0.10 controller 10.0.0.11 controller1 10.0.0.12 controller1 10.0.0.31 compute01 10.0.0.32 compute02 10.0.0.33 compute03 10.0.0.34 compute04 10.0.0.35 compute05 10.0.0.36 compute06 10.0.0.37 compute07 10.0.0.38 compute08 10.0.0.39 compute09 10.0.0.40
compute10 10.0.0.41 compute11 10.0.0.42 compute12 10.0.0.51 cinder1 10.0.0.52 cinder2 OFF yum install -y ntp sed -i "s/server 0.centos.pool.ntp.org iburst/server 127.127.1.0 iburst/" /etc/ntp.conf sed -i "22,24d" /etc/ntp.conf systemctl disable chronyd.service systemctl enable ntpd.service systemctl start ntpd.service yum install -y https://rdoproject.org/repos/rdo-release.rpm
yum upgrade -y yum install -y python-openstackclient yum install -y openstack-selinux yum install -y openstack-nova-compute qemu-kvm libvirt virt-install bridge-utils openstack-utils \ openstack-neutron-linuxbridge ebtables ipset openstack-ceilometer-compute python-ceilometerclient python-pecan #Nova configure openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone openstack-config --set /etc/nova/nova.conf DEFAULT my_ip ${HOST_IP} openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron True openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver openstack-config --set /etc/nova/nova.conf DEFAULT instance_usage_audit True openstack-config --set /etc/nova/nova.conf DEFAULT instance_usage_audit_period hour openstack-config --set /etc/nova/nova.conf DEFAULT notify_on_state_change vm_and_task_state openstack-config --set /etc/nova/nova.conf oslo_messaging_notifications driver messagingv2 openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_hosts controller1,controller2 openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_userid openstack openstack-config --set /etc/nova/nova.conf oslo_messaging_rabbit rabbit_password SWPUcs406rabbit openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:35357 openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller1:11211,controller2:11211 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova openstack-config --set /etc/nova/nova.conf keystone_authtoken password SWPUcs406nova openstack-config --set /etc/nova/nova.conf vnc enabled True openstack-config --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0 openstack-config --set /etc/nova/nova.conf vnc vncserver_proxyclient_address ' $my_ip' openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://172.23.253.11:6080/vnc_auto.html openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292 openstack-config --set /etc/nova/nova.conf cinder os_region_name RegionOne openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696 openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:35357 openstack-config --set /etc/nova/nova.conf neutron auth_type password openstack-config --set /etc/nova/nova.conf neutron project_domain_name default openstack-config --set /etc/nova/nova.conf neutron user_domain_name default openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne openstack-config --set /etc/nova/nova.conf neutron project_name service openstack-config --set /etc/nova/nova.conf neutron username neutron openstack-config --set /etc/nova/nova.conf neutron password SWPUcs406neutron # Neutron configure openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_hosts controller1,controller2 openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_userid openstack openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_password SWPUcs406rabbit openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller:5000 openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:35357 openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller1:11211,controller2:11211 openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password SWPUcs406neutron openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:enp3s0 openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan True openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip ${HOST_IP} openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population True openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group True openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver # Ceilometer configure openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT rpc_backend rabbit openstack-config --set /etc/ceilometer/ceilometer.conf DEFAULT auth_strategy keystone openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_host controller openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_userid openstack openstack-config --set /etc/ceilometer/ceilometer.conf oslo_messaging_rabbit rabbit_password SWPUcs406rabbit openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_uri http://controller:5000 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_url http://controller:35357 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken memcached_servers controller:11211 openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken auth_type password openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken project_domain_name default openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken user_domain_name default openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken project_name service openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken username ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf keystone_authtoken password SWPUcs406ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_auth_url http://controller:5000/v2.0 openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_username ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_tenant_name service openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials os_password SWPUcs406ceilometer openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials interface internalURL openstack-config --set /etc/ceilometer/ceilometer.conf service_credentials region_name RegionOne sed -i "s/BOOTPROTO=static/BOOTPROTO=none/" /etc/sysconfig/network-scripts/ifcfg-enp3s0 sed -i "/IPADDR/d" /etc/sysconfig/network-scripts/ifcfg-enp3s0 sed -i "/NETMASK/d" /etc/sysconfig/network-scripts/ifcfg-enp3s0 sed -i "/GATEWAY/d" /etc/sysconfig/network-scripts/ifcfg-enp3s0 sed -i "/DNS1/d" /etc/sysconfig/network-scripts/ifcfg-enp3s0 systemctl restart network.service systemctl enable libvirtd.service openstack-nova-compute.service neutron-linuxbridge-agent.service openstack-ceilometer-compute.service systemctl start libvirtd.service openstack-nova-compute.service neutron-linuxbridge-agent.service openstack-ceilometer-compute.service

編寫遠端傳送檔案指令碼

編寫遠端傳送指令碼,將compute.sh指令碼傳送到每一個compute節點並執行

COMPUTE=$(cat /etc/hosts |grep -E "10.0.0.2|10.0.0.3" |awk -F[:" "]+ '{print $1}')
for n in $COMPUTE;do
    # Copy the hosts file from localhost to ${n}host
    if [ $n == '10.0.0.31'] 
    then
       echo "This is host"${n}
    else
       scp compute.sh ${n}:
       ssh ${n} 'sh compute.sh'
    fi
done

驗證安裝

. admin-openrc
openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated At                 |
+----+------------------+------------+----------+---------+-------+----------------------------+
|  1 | nova-scheduler   | controller | internal | enabled | up    | 2016-05-24T14:23:42.000000 |
|  2 | nova-conductor   | controller | internal | enabled | up    | 2016-05-24T14:23:42.000000 |
|  3 | nova-consoleauth | controller | internal | enabled | up    | 2016-05-24T14:23:46.000000 |
|  9 | nova-compute     | compute02  | nova     | enabled | up    | 2016-05-24T14:23:46.000000 |
| 10 | nova-compute     | compute03  | nova     | enabled | up    | 2016-05-24T14:23:45.000000 |
| 11 | nova-compute     | compute04  | nova     | enabled | up    | 2016-05-24T14:23:51.000000 |
| 12 | nova-compute     | compute05  | nova     | enabled | up    | 2016-05-24T14:23:46.000000 |
| 13 | nova-compute     | compute06  | nova     | enabled | up    | 2016-05-24T14:23:44.000000 |
| 14 | nova-compute     | compute07  | nova     | enabled | up    | 2016-05-24T14:23:41.000000 |
| 15 | nova-compute     | compute12  | nova     | enabled | up    | 2016-05-24T14:23:49.000000 |
| 16 | nova-compute     | compute11  | nova     | enabled | up    | 2016-05-24T14:23:41.000000 |
| 17 | nova-compute     | compute10  | nova     | enabled | up    | 2016-05-24T14:23:45.000000 |
| 18 | nova-compute     | compute09  | nova     | enabled | up    | 2016-05-24T14:23:46.000000 |
| 19 | nova-compute     | compute08  | nova     | enabled | up    | 2016-05-24T14:23:42.000000 |
| 20 | nova-compute     | compute01  | nova     | enabled | up    | 2016-05-24T14:23:44.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+