当前位置: 首页 > news >正文

基于centos2009搭建openstack-t版-ovs网络-脚本运行

openstackT版脚本

    • 环境变量
    • ip初始化
  • controller
    • iaas-pre.sh
    • iaas-install-mysql.sh
    • iaas-install-keystone.sh
    • iaas-install-glance.sh
    • iaas-install-placement.sh
    • iaas-install-nova-controller.sh
    • iaas-install-neutron-controller.sh
    • iaas-install-dashboard.sh
  • compute
    • iaas-install-nova-compute.sh
    • iaas-install-neutron-compute.sh

实验环境采用Vmware,所使用到的脚本以及配置文件等需要搭配软件包使用,nova默认配置了控制节点加入计算资源池

节点IP
controller192.168.200.10
compute192.168.200.20

**软件包网盘地址:**下载后上传到/root目录下即可

链接:https://pan.baidu.com/s/1_BnBkIIXq5XkMj6sm2PL0Q?pwd=0345
提取码:0345
–来自百度网盘超级会员V4的分享

环境变量

自行修改环境变量信息,特别是IP、网卡等,只需要配置maxvlan即可,本脚本只搭建到dashboard

#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.200.10#Controller HOST Password. example:000000
HOST_PASS=000000#Controller Server hostname. example:controller
HOST_NAME=controller#Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.200.20#Compute HOST Password. example:000000
HOST_PASS_NODE=000000#Compute Node hostname. example:compute
HOST_NAME_NODE=compute#--------------------Chrony Config-------------------##
#Controller network segment IP.  example:x.x.0.0/16(x.x.x.0/24)
network_segment_IP=192.168.200.0/24#--------------------Rabbit Config ------------------##
#user for rabbit. example:openstack
RABBIT_USER=openstack#Password for rabbit user .example:000000
RABBIT_PASS=000000#--------------------MySQL Config---------------------##
#Password for MySQL root user . exmaple:000000
DB_PASS=000000#--------------------Keystone Config------------------##
#Password for Keystore admin user. exmaple:000000
DOMAIN_NAME=default
ADMIN_PASS=000000
DEMO_PASS=000000#Password for Mysql keystore user. exmaple:000000
KEYSTONE_DBPASS=000000#--------------------Glance Config--------------------##
#Password for Mysql glance user. exmaple:000000
GLANCE_DBPASS=000000#Password for Keystore glance user. exmaple:000000
GLANCE_PASS=000000#--------------------Placement Config----------------------##
#Password for Mysql placement user. exmaple:000000
PLACEMENT_DBPASS=000000#Password for Keystore placement user. exmaple:000000
PLACEMENT_PASS=000000#--------------------Nova Config----------------------##
#Password for Mysql nova user. exmaple:000000
NOVA_DBPASS=000000#Password for Keystore nova user. exmaple:000000
NOVA_PASS=000000#--------------------Neutron Config-------------------##
#Password for Mysql neutron user. exmaple:000000
NEUTRON_DBPASS=000000#Password for Keystore neutron user. exmaple:000000
NEUTRON_PASS=000000#metadata secret for neutron. exmaple:000000
METADATA_SECRET=000000#External Network Interface. example:eth1
INTERFACE_NAME=ens34#用于创建ovs网络
OVS_NAME=br-ens34#External Network The Physical Adapter. example:provider
Physical_NAME=provider#First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
minvlan=1#Last Vlan ID in VLAN RANGE for VLAN Network. example:200
maxvlan=1000#--------------------Cinder Config--------------------##
#Password for Mysql cinder user. exmaple:000000
CINDER_DBPASS=000000#Password for Keystore cinder user. exmaple:000000
CINDER_PASS=000000#Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb1#--------------------Swift Config---------------------##
#Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000#The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdb2#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.200.20#--------------------Trove Config----------------------##
#Password for Mysql trove user. exmaple:000000
TROVE_DBPASS=000000#Password for Keystore trove user. exmaple:000000
TROVE_PASS=000000#--------------------Heat Config----------------------##
#Password for Mysql heat user. exmaple:000000
HEAT_DBPASS=000000#Password for Keystore heat user. exmaple:000000
HEAT_PASS=000000#--------------------Ceilometer Config----------------##
#Password for Gnocchi ceilometer user. exmaple:000000
CEILOMETER_DBPASS=000000#Password for Keystore ceilometer user. exmaple:000000
CEILOMETER_PASS=000000#--------------------AODH Config----------------##
#Password for Mysql AODH user. exmaple:000000
AODH_DBPASS=000000#Password for Keystore AODH user. exmaple:000000
AODH_PASS=000000#--------------------ZUN Config----------------##
#Password for Mysql ZUN user. exmaple:000000
ZUN_DBPASS=000000#Password for Keystore ZUN user. exmaple:000000
ZUN_PASS=000000#Password for Keystore KURYR user. exmaple:000000
KURYR_PASS=000000#--------------------OCTAVIA Config----------------##
#Password for Mysql OCTAVIA user. exmaple:000000
OCTAVIA_DBPASS=000000#Password for Keystore OCTAVIA user. exmaple:000000
OCTAVIA_PASS=000000#--------------------Manila Config----------------##
#Password for Mysql Manila user. exmaple:000000
MANILA_DBPASS=000000#Password for Keystore Manila user. exmaple:000000
MANILA_PASS=000000#The NODE Object Disk for Manila. example:md126p5.
SHARE_DISK=sdb3#--------------------Cloudkitty Config----------------##
#Password for Mysql Cloudkitty user. exmaple:000000
CLOUDKITTY_DBPASS=000000#Password for Keystore Cloudkitty user. exmaple:000000
CLOUDKITTY_PASS=000000#--------------------Barbican Config----------------##
#Password for Mysql Barbican user. exmaple:000000
BARBICAN_DBPASS=000000#Password for Keystore Barbican user. exmaple:000000
BARBICAN_PASS=000000

ip初始化

#!/bin/bash
tar -xf topenstack.tar.gz -C /opt/
mkdir /opt/centos
mount /dev/sr0 /opt/centos/
mv /etc/yum.repos.d/* /home/
cat > /etc/yum.repos.d/openstack.repo <<eof
[openstack]
name=openstack
baseurl=file:///opt/openstackt
gpgcheck=0
enabled=1
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
eof
mkdir /etc/openstack/
cp openrc.sh /etc/openstack/source /etc/openstack/openrc.sh#keystone
sed -i -e "s/KEYSTONE_DBPASS/$KEYSTONE_DBPASS/"g controller/keystone/keystone.conf
sed -i -e "s/GLANCE_PASS/$GLANCE_PASS/"g controller/glance/glance-api.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g controller/keystone/keystone.conf#glance
sed -i -e "s/GLANCE_DBPASS/$GLANCE_DBPASS/"g controller/glance/glance-api.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g controller/glance/glance-api.conf#placement
sed -i -e "s/HOST_NAME/$HOST_NAME/"g controller/placement/placement.conf
sed -i -e "s/PLACEMENT_PASS/$PLACEMENT_PASS/"g controller/placement/placement.conf
sed -i -e "s/PLACEMENT_DBPASS/$PLACEMENT_DBPASS/"g controller/placement/placement.conf#nova-con
sed -i -e "s/RABBIT_USER/$RABBIT_USER/"g controller/nova/nova.conf
sed -i -e "s/RABBIT_PASS/$RABBIT_PASS/"g controller/nova/nova.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g controller/nova/nova.conf
sed -i -e "s/HOST_IP/$HOST_IP/"g controller/nova/nova.conf
sed -i -e "s/NOVA_DBPASS/$NOVA_DBPASS/"g controller/nova/nova.conf
sed -i -e "s/NOVA_PASS/$NOVA_PASS/"g controller/nova/nova.conf
sed -i -e "s/PLACEMENT_PASS/$PLACEMENT_PASS/"g controller/nova/nova.conf#neutron-con
sed -i -e "s/HOST_NAME/$HOST_NAME/"g controller/neutron/metadata_agent.ini
sed -i -e "s/METADATA_SECRET/$METADATA_SECRET/"g controller/neutron/metadata_agent.inised -i -e "s/Physical_NAME/$Physical_NAME/"g controller/neutron/ml2_conf.ini
sed -i -e "s/minvlan/$minvlan/"g controller/neutron/ml2_conf.ini
sed -i -e "s/maxvlan/$maxvlan/"g controller/neutron/ml2_conf.inised -i -e "s/RABBIT_USER/$RABBIT_USER/"g controller/neutron/neutron.conf
sed -i -e "s/RABBIT_PASS/$RABBIT_PASS/"g controller/neutron/neutron.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g controller/neutron/neutron.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g controller/neutron/neutron.conf
sed -i -e "s/NEUTRON_PASS/$NEUTRON_PASS/"g controller/neutron/neutron.conf
sed -i -e "s/NEUTRON_DBPASS/$NEUTRON_DBPASS/"g controller/neutron/neutron.conf
sed -i -e "s/NOVA_PASS/$NOVA_PASS/"g controller/neutron/neutron.confsed -i -e "s/RABBIT_USER/$RABBIT_USER/"g controller/neutron/nova.conf
sed -i -e "s/RABBIT_PASS/$RABBIT_PASS/"g controller/neutron/nova.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g controller/neutron/nova.conf
sed -i -e "s/HOST_IP/$HOST_IP/"g controller/neutron/nova.conf
sed -i -e "s/NOVA_DBPASS/$NOVA_DBPASS/"g controller/neutron/nova.conf
sed -i -e "s/NOVA_PASS/$NOVA_PASS/"g controller/neutron/nova.conf
sed -i -e "s/PLACEMENT_PASS/$PLACEMENT_PASS/"g controller/neutron/nova.conf
sed -i -e "s/NEUTRON_PASS/$NEUTRON_PASS/"g controller/neutron/nova.conf
sed -i -e "s/METADATA_SECRET/$METADATA_SECRET/"g controller/neutron/nova.confsed -i -e "s/HOST_IP/$HOST_IP/"g controller/neutron/openvswitch_agent.ini
sed -i -e "s/Physical_NAME/$Physical_NAME/"g controller/neutron/openvswitch_agent.ini
sed -i -e "s/OVS_NAME/$OVS_NAME/"g controller/neutron/openvswitch_agent.inised -i -e "s/HOST_NAME/$HOST_NAME/"g controller/dashboard/local_settings#nova-com
sed -i -e "s/RABBIT_USER/$RABBIT_USER/"g compute/nova/nova.conf
sed -i -e "s/RABBIT_PASS/$RABBIT_PASS/"g compute/nova/nova.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g compute/nova/nova.conf
sed -i -e "s/HOST_IP_NODE/$HOST_IP_NODE/"g compute/nova/nova.conf
sed -i -e "s/NOVA_PASS/$NOVA_PASS/"g compute/nova/nova.conf
sed -i -e "s/PLACEMENT_PASS/$PLACEMENT_PASS/"g compute/nova/nova.conf
sed -i -e "s/HOST_IP/$HOST_IP/"g compute/nova/nova.conf#neutron-com
sed -i -e "s/RABBIT_USER/$RABBIT_USER/"g compute/neutron/neutron.conf
sed -i -e "s/RABBIT_PASS/$RABBIT_PASS/"g compute/neutron/neutron.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g compute/neutron/neutron.conf
sed -i -e "s/NEUTRON_PASS/$NEUTRON_PASS/"g compute/neutron/neutron.confsed -i -e "s/RABBIT_USER/$RABBIT_USER/"g compute/neutron/nova.conf
sed -i -e "s/RABBIT_PASS/$RABBIT_PASS/"g compute/neutron/nova.conf
sed -i -e "s/HOST_NAME/$HOST_NAME/"g compute/neutron/nova.conf
sed -i -e "s/HOST_IP_NODE/$HOST_IP_NODE/"g compute/neutron/nova.conf
sed -i -e "s/NEUTRON_PASS/$NEUTRON_PASS/"g compute/neutron/nova.conf
sed -i -e "s/NOVA_PASS/$NOVA_PASS/"g compute/neutron/nova.conf
sed -i -e "s/PLACEMENT_PASS/$PLACEMENT_PASS/"g compute/neutron/nova.conf
sed -i -e "s/HOST_IP/$HOST_IP/"g compute/neutron/nova.confsed -i -e "s/HOST_IP_NODE/$HOST_IP_NODE/"g compute/neutron/openvswitch_agent.ini
sed -i -e "s/Physical_NAME/$Physical_NAME/"g compute/neutron/openvswitch_agent.ini
sed -i -e "s/OVS_NAME/$OVS_NAME/"g compute/neutron/openvswitch_agent.ini
echo "##############################################"
echo "#         init               ok              #"
echo "##############################################"

controller

iaas-pre.sh

#/bin/bash
source /etc/openstack/openrc.sh#Welcome page
cat > /etc/motd <<EOF #################################    Welcome  to  OpenStack    #################################
EOF#selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0#firewalld
systemctl stop firewalld
systemctl disable firewalld  >> /dev/null 2>&1#NetworkManager
systemctl stop NetworkManager >> /dev/null 2>&1
systemctl disable NetworkManager >> /dev/null 2>&1
yum remove -y NetworkManager firewalld
systemctl restart network#iptables
yum install  iptables-services  -y 
if [ 0  -ne  $? ]; thenecho -e "\033[31mThe installation source configuration errors\033[0m"exit 1
fi
systemctl restart iptables
iptables -F
iptables -X
iptables -Z 
/usr/sbin/iptables-save
systemctl stop iptables
systemctl disable iptables# install package 
sed -i -e 's/#UseDNS yes/UseDNS no/g' -e 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config
yum install python-openstackclient openstack-selinux expect vim -y#hosts
if [[ `ip a |grep -w $HOST_IP ` != '' ]];then hostnamectl set-hostname $HOST_NAME
elif [[ `ip a |grep -w $HOST_IP_NODE ` != '' ]];then hostnamectl set-hostname $HOST_NAME_NODE
elsehostnamectl set-hostname $HOST_NAME
fi
sed -i -e "/$HOST_NAME/d" -e "/$HOST_NAME_NODE/d" /etc/hosts
echo "$HOST_IP $HOST_NAME" >> /etc/hosts
echo "$HOST_IP_NODE $HOST_NAME_NODE" >> /etc/hosts#ssh
if [[ ! -s ~/.ssh/id_rsa.pub ]];thenssh-keygen  -t rsa -N '' -f ~/.ssh/id_rsa -q -b 2048
fi
name=`hostname`
if [[ $name == $HOST_NAME ]];then
expect -c "set timeout -1;spawn ssh-copy-id  -i /root/.ssh/id_rsa $HOST_NAME_NODE;expect {*password:* {send -- $HOST_PASS_NODE\r;expect {*denied* {exit 2;}eof}}*(yes/no)* {send -- yes\r;exp_continue;}eof         {exit 1;}}"
else
expect -c "set timeout -1;spawn ssh-copy-id  -i /root/.ssh/id_rsa $HOST_NAME;expect {*password:* {send -- $HOST_PASS\r;expect {*denied* {exit 2;}eof}}*(yes/no)* {send -- yes\r;exp_continue;}eof         {exit 1;}}"
fi#chrony
yum install -y chrony
if [[ $name == $HOST_NAME ]];thensed -i '3,6s/^/#/g' /etc/chrony.confsed -i '7s/^/server controller iburst/g' /etc/chrony.confecho "allow $network_segment_IP" >> /etc/chrony.confecho "local stratum 10" >> /etc/chrony.conf
elsesed -i '3,6s/^/#/g' /etc/chrony.confsed -i '7s/^/server controller iburst/g' /etc/chrony.conf
fisystemctl restart chronyd
systemctl enable chronydprintf "\033[35mPlease Reboot or Reconnect the terminal\n\033[0m"

iaas-install-mysql.sh

#!/bin/bash
source /etc/openstack/openrc.shping $HOST_IP -c 4 >> /dev/null 2>&1
if [ 0  -ne  $? ]; thenecho -e "\033[31m Warning\nPlease make sure the network configuration is correct!\033[0m"exit 1
fi#  MariaDB
yum install mariadb mariadb-server python2-PyMySQL -y
cat >> /etc/my.cnf.d/openstack.cnf << EOF
[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
systemctl daemon-reload
systemctl enable mariadb.service
systemctl restart mariadb.serviceexpect -c "
spawn /usr/bin/mysql_secure_installation
expect \"Enter current password for root (enter for none):\"
send \"\r\"
expect \"Set root password?\"
send \"y\r\"
expect \"New password:\"
send \"$DB_PASS\r\"
expect \"Re-enter new password:\"
send \"$DB_PASS\r\"
expect \"Remove anonymous users?\"
send \"y\r\"
expect \"Disallow root login remotely?\"
send \"n\r\"
expect \"Remove test database and access to it?\"
send \"y\r\"
expect \"Reload privilege tables now?\"
send \"y\r\"
expect eof
"# RabbitMQ
yum install rabbitmq-server -y
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server.servicerabbitmqctl add_user $RABBIT_USER $RABBIT_PASS
rabbitmqctl set_permissions $RABBIT_USER ".*" ".*" ".*"# Memcache
yum install memcached python-memcached -y
sed -i  -e 's/OPTIONS.*/OPTIONS="-l 0.0.0.0"/g' /etc/sysconfig/memcachedsystemctl start memcached.service
systemctl enable memcached.service

iaas-install-keystone.sh

#!/bin/bash
source /etc/openstack/openrc.sh#keystone mysql
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS keystone ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '$KEYSTONE_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '$KEYSTONE_DBPASS' ;"#install keystone
yum install openstack-keystone httpd mod_wsgi -y#/etc/keystone/keystone.conf
cp /etc/keystone/keystone.conf{,.bak}
cp controller/keystone/keystone.conf /etc/keystone/keystone.confsu -s /bin/sh -c "keystone-manage db_sync" keystone
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
keystone-manage bootstrap --bootstrap-password $ADMIN_PASS \--bootstrap-admin-url http://$HOST_NAME:5000/v3/ \--bootstrap-internal-url http://$HOST_NAME:5000/v3/ \--bootstrap-public-url http://$HOST_NAME:5000/v3/ \--bootstrap-region-id RegionOnesed -i "s/#ServerName www.example.com:80/ServerName $HOST_NAME/g" /etc/httpd/conf/httpd.conf 
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/  
systemctl enable httpd.service
systemctl restart httpd.servicecat > /etc/keystone/admin-openrc.sh <<-EOF
export OS_PROJECT_DOMAIN_NAME=$DOMAIN_NAME
export OS_USER_DOMAIN_NAME=$DOMAIN_NAME
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=$ADMIN_PASS
export OS_AUTH_URL=http://$HOST_NAME:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOFsource /etc/keystone/admin-openrc.sh
openstack project create --domain default --description "Service Project" service

iaas-install-glance.sh

#!/bin/bash
source /etc/openstack/openrc.sh
source /etc/keystone/admin-openrc.sh#glance mysql
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS glance ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '$GLANCE_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '$GLANCE_DBPASS' ;"#glance user role service endpoint 
openstack user create --domain $DOMAIN_NAME --password $GLANCE_PASS glance
openstack role add --project service --user glance admin
openstack service create --name glance --description "OpenStack Image" imageopenstack endpoint create --region RegionOne image public http://$HOST_NAME:9292
openstack endpoint create --region RegionOne image internal http://$HOST_NAME:9292
openstack endpoint create --region RegionOne image admin http://$HOST_NAME:9292#glance install
yum install -y openstack-glance #/etc/glance/glance-api.conf
cp /etc/glance/glance-api.conf{,.bak}
cp controller/glance/glance-api.conf /etc/glance/glance-api.conf#su glance mysql
su -s /bin/sh -c "glance-manage db_sync" glancesystemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl restart openstack-glance-api.service openstack-glance-registry.serviceopenstack image create --disk-format qcow2 --file cirros-0.3.4-x86_64-disk.img cirros

iaas-install-placement.sh

#!/bin/bash
source /etc/openstack/openrc.sh
source /etc/keystone/admin-openrc.sh#placement mysql
mysql -uroot -p$DB_PASS -e "CREATE DATABASE placement;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '$PLACEMENT_DBPASS';"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '$PLACEMENT_DBPASS';"#placement user role service endpoint
openstack user create --domain $DOMAIN_NAME --password $PLACEMENT_PASS placement
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement
openstack endpoint create --region RegionOne placement public http://$HOST_NAME:8778
openstack endpoint create --region RegionOne placement internal http://$HOST_NAME:8778
openstack endpoint create --region RegionOne placement admin http://$HOST_NAME:8778#placement install
yum install openstack-placement-api python2-pip -y#/etc/placement/placement.conf
cp /etc/placement/placement.conf{,.bak}
cp controller/placement/placement.conf /etc/placement/placement.conf#su placement mysql
su -s /bin/sh -c "placement-manage db sync" placement#/etc/httpd/conf.d/00-placement-api.conf 
cat >> /etc/httpd/conf.d/00-placement-api.conf <<EOF
<Directory /usr/bin><IfVersion >= 2.4>Require all granted</IfVersion><IfVersion < 2.4>Order allow,denyAllow from all</IfVersion>   
</Directory>
EOF
systemctl restart httpd

iaas-install-nova-controller.sh

#!/bin/bash
source /etc/openstack/openrc.sh
source /etc/keystone/admin-openrc.sh#neutron mysql
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova ;"
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova_api ;"
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova_cell0 ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"#nova user role service endpoint
openstack user create --domain $DOMAIN_NAME --password $NOVA_PASS 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://$HOST_NAME:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://$HOST_NAME:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://$HOST_NAME:8774/v2.1#nova install
yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler -y
#nova compute
yum install openstack-nova-compute -y#/etc/nova/nova.conf
cp /etc/nova/nova.conf{,.bak}
cp controller/nova/nova.conf /etc/nova/nova.conf#su nova mysql
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova 
su -s /bin/sh -c "nova-manage cell_v2 list_cells" novasystemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service  systemctl restart libvirtd.service openstack-nova-compute.service
systemctl enable libvirtd.service openstack-nova-compute.servicesystemctl restart httpd;systemctl restart openstack-nova-computeopenstack flavor create --id 1 --vcpus 1 --ram 512 --disk 10 cirros-test
openstack compute service list --service nova-compute
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

iaas-install-neutron-controller.sh

#!/bin/bash
source /etc/openstack/openrc.sh
source /etc/keystone/admin-openrc.sh#neutron mysql
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS neutron ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '$NEUTRON_DBPASS' ;"
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '$NEUTRON_DBPASS' ;"#neutron  user role service endpoint 
openstack user create --domain $DOMAIN_NAME --password $NEUTRON_PASS neutronopenstack role add --project service --user neutron adminopenstack service create --name neutron --description "OpenStack Networking" networkopenstack endpoint create --region RegionOne network public http://$HOST_NAME:9696
openstack endpoint create --region RegionOne network internal http://$HOST_NAME:9696
openstack endpoint create --region RegionOne network admin http://$HOST_NAME:9696#neutron install
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch#network
if [[ `ip a |grep -w $INTERFACE_IP |grep -w $INTERFACE_NAME` = '' ]];then 
cat > /etc/sysconfig/network-scripts/ifcfg-$INTERFACE_NAME <<EOF
DEVICE=$INTERFACE_NAME
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
EOF
systemctl restart network
fi#/etc/neutron/neutron.conf
cp /etc/neutron/neutron.conf{,.bak}
cp controller/neutron/neutron.conf /etc/neutron/neutron.conf#/etc/neutron/plugins/ml2/ml2_conf.ini
cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.bak}
cp controller/neutron/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini#/etc/neutron/plugins/ml2/openvswitch_agent.ini
cp /etc/neutron/plugins/ml2/openvswitch_agent.ini{,.bak}
cp controller/neutron/openvswitch_agent.ini /etc/neutron/plugins/ml2/openvswitch_agent.ini#br_netfilter
modprobe br_netfilter 
echo 'net.ipv4.conf.all.rp_filter=0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.default.rp_filter=0' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf
sysctl -p#/etc/neutron/l3_agent.ini
cp /etc/neutron/l3_agent.ini{,.bak}
cp controller/neutron/l3_agent.ini /etc/neutron/l3_agent.ini#/etc/neutron/metadata_agent.ini
cp  /etc/neutron/metadata_agent.ini{,.bak}
cp controller/neutron/metadata_agent.ini /etc/neutron/metadata_agent.ini#/etc/neutron/dhcp_agent.ini
cp /etc/neutron/dhcp_agent.ini{,.bak}
cp controller/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini#/etc/nova/nova.conf
cp controller/neutron/nova.conf /etc/nova/nova.conf#su neutron mysql
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" neutronsystemctl restart openstack-nova-apisystemctl enable --now neutron-server neutron-metadata-agent neutron-openvswitch-agent openvswitch neutron-l3-agent neutron-dhcp-agent
ovs-vsctl add-br $OVS_NAME
ovs-vsctl add-port $OVS_NAME $INTERFACE_NAME
systemctl restart neutron-server neutron-metadata-agent neutron-openvswitch-agent openvswitch neutron-l3-agent neutron-dhcp-agentecho "#network create#"
##int-net
#openstack network create --internal --provider-network-type vxlan int-net
#openstack subnet create int-net-sub --network int-net --subnet-range 10.0.0.0/24 --gateway 10.0.0.1 --dns-nameserver 114.114.114.114##ext-net
#openstack network create --provider-physical-network physnet1 --provider-network-type flat  --external ext-net
#openstack subnet create ext-net-sub --network ext-net --subnet-range 192.168.200.40/24  --allocation-pool start=192.168.200.30,end=192.168.200.200 --gateway 192.168.200.2 --dns-nameserver 114.114.114.114 --no-dhcp##router
#openstack router add subnet Ext-Router int-net-sub
#openstack router set Ext-Router --external-gateway ext-net

iaas-install-dashboard.sh

#!/bin/bash
source /etc/openstack/openrc.sh
source /etc/keystone/admin-openrc.sh#dashboard install
yum install openstack-dashboard -y#/etc/openstack-dashboard/local_settings
cp /etc/openstack-dashboard/local_settings{,.bak}
cp controller/dashboard/local_settings /etc/openstack-dashboard/local_settings#/etc/httpd/conf.d/openstack-dashboard.conf
sed  -e '4iWSGIApplicationGroup %{GLOBAL}' /etc/httpd/conf.d/openstack-dashboard.conf systemctl restart httpd.service memcached.service#/root/logininfo.txt
printf "\033[35mThe horizon service is ready,Now you can visit the following;\n\033[0m"
echo  浏览器访问:http://$HOST_IP/dashboard
echo  域:$DOMAIN_NAME
echo  用户名:admin
echo  密码:"${ADMIN_PASS}"
echo  信息输出到root目录下的logininfo.txt中了。cat  >> /root/logininfo.txt << EOF
浏览器访问:http://$HOST_IP/dashboard
域:$DOMAIN_NAME  
用户名:admin  
密码:"${ADMIN_PASS}" 
EOF

compute

iaas-install-nova-compute.sh

#!/bin/bash
source /etc/openstack/openrc.sh#nova-compute install
yum install openstack-nova-compute -y#/etc/nova/nova.conf
cp /etc/nova/nova.conf{,.bak}
cp compute/nova/nova.conf /etc/nova/nova.confvirt_num=`egrep -c '(vmx|svm)' /proc/cpuinfo`
if [ $virt_num = '0' ];then
crudini --set /etc/nova/nova.conf libvirt virt_type  qemu
fisystemctl enable libvirtd.service openstack-nova-compute.service
systemctl restart libvirtd.service openstack-nova-compute.servicessh  $HOST_IP "source /etc/keystone/admin-openrc.sh  && systemctl restart httpd && openstack compute service list --service nova-compute"
systemctl restart openstack-nova-compute.service
ssh  $HOST_IP 'source /etc/keystone/admin-openrc.sh && su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova'

iaas-install-neutron-compute.sh

#!/bin/bash
source /etc/openstack/openrc.sh#neutron install
yum install -y openstack-neutron-openvswitch#network
if [[ `ip a |grep -w $INTERFACE_IP |grep -w $INTERFACE_NAME` = '' ]];then 
cat > /etc/sysconfig/network-scripts/ifcfg-$INTERFACE_NAME <<EOF
DEVICE=$INTERFACE_NAME
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
EOF
systemctl restart network
fi#/etc/neutron/neutron.conf
cp /etc/neutron/neutron.conf{,.bak}
cp compute/neutron/neutron.conf /etc/neutron/neutron.conf#/etc/neutron/plugins/ml2/openvswitch_agent.ini
cp /etc/neutron/plugins/ml2/openvswitch_agent.ini{,.bak}
cp compute/neutron/openvswitch_agent.ini /etc/neutron/plugins/ml2/openvswitch_agent.ini#br_netfilter
modprobe br_netfilter 
echo 'net.ipv4.conf.all.rp_filter=0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.default.rp_filter=0' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf
sysctl -psystemctl enable --now neutron-openvswitch-agent#/etc/nova/nova.conf
cp compute/neutron/nova.conf /etc/nova/nova.confsystemctl enable --now openvswitch
ovs-vsctl add-br $OVS_NAME
ovs-vsctl add-port $OVS_NAME $INTERFACE_NAME
systemctl restart openstack-nova-compute.service
systemctl restart neutron-openvswitch-agent

相关文章:

基于centos2009搭建openstack-t版-ovs网络-脚本运行

openstackT版脚本 环境变量ip初始化 controlleriaas-pre.shiaas-install-mysql.shiaas-install-keystone.shiaas-install-glance.shiaas-install-placement.shiaas-install-nova-controller.shiaas-install-neutron-controller.shiaas-install-dashboard.sh computeiaas-instal…...

buuctf-web

查看后端源码 得到base64编码&#xff0c;解码得flag...

UBUNTU22 安装QT5.15.2 记录

安装QT预置安装软件包 sudo apt install gcc sudo apt install g sudo apt install clang sudo apt install clang sudo apt install make sudo snap install cmake --classic sudo apt-get install build-essential sudo apt install libxcb-xinerama0 #安装OpenGL核心库 su…...

C++基础知识:C++内存分区模型,全局变量和静态变量以及常量,常量区,字符串常量和其他常量,栈区,堆区,代码区和全局区

1.C内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区:存放函数体的二进制代码&#xff0c;由操作系统进行管理的&#xff08;在编译器中所书写的代码都会存放在这个空间。&#xff09; 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分…...

MySQL面试题-重难点

mysql中有哪些锁&#xff1f;举出所有例子&#xff0c;各个锁的作用是什么&#xff1f;区别是什么&#xff1f; 共享锁&#xff1a;也叫读锁&#xff0c;简称S锁&#xff0c;在事务要读取一条记录时&#xff0c;先获取该记录的S锁&#xff0c;别的事务也可以继续获取该记录的S…...

【Linux杂货铺】期末总结篇3:用户账户管理命令 | 组账户管理命令

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux杂货铺、Linux实践室 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 第五章5.1 ⛳️Linux 账户5.2 ⛳️用户配置文件和目录&#xff08;未完待续&#xff09;5.2.1 …...

基于STM32设计的超声波测距仪(微信小程序)(186)

基于STM32设计的超声波测距仪(微信小程序)(186) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的选择1.5 系统框架图…...

Web前端-Web开发HTML基础2-list

一. 基础 1. 写一个列表标签&#xff0c;生成一个有三条记录的无序列表&#xff1b; 2. 写一个列表标签&#xff0c;生成一个有四条记录的无序列表&#xff1b; 3. 写一个列表标签&#xff0c;生成一个有五条记录的无序列表&#xff1b; 4. 写一个列表标签&#xff0c;生成一个…...

MAVSDK-Java安卓客户端编译与使用完整示例

效果&#xff1a; 1.启动PX4容器 2.监听QGC连接端口 3.手机与QGC连接到同一局域网&#xff08;此例QGC为&#xff1a;192.168.6.250 手机为&#xff1a;192.168.6.86&#xff09; 4.监听手机mavsdk_server连接端口 5.使用Android Studio打开MAVSDK-JAVA下的examples/android-c…...

JavaEE:Spring Web简单小项目实践二(用户登录实现)

学习目的&#xff1a; 1、理解前后端交互过程 2、学习接口传参&#xff0c;数据返回以及页面展示 1、准备工作 创建SpringBoot项目&#xff0c;引入Spring Web依赖&#xff0c;添加前端页面到项目中。 前端代码&#xff1a; login.html <!DOCTYPE html> <html lang&…...

深度学习 | CNN 基本原理

目录 1 什么是 CNN2 输入层3 卷积层3.1 卷积操作3.2 Padding 零填充3.3 处理彩色图像 4 池化层4.1 池化操作4.2 池化的平移不变性 5 全连接层6 输出层 前言 这篇博客不够详细&#xff0c;因为没有介绍卷积操作的具体计算&#xff1b;但是它介绍了 CNN 各层次的功能…...

解读|http和https的区别,谁更好用

在日常我们浏览网页时&#xff0c;有些网站会看到www前面是http&#xff0c;有些是https&#xff0c;这两种有什么区别呢&#xff1f;为什么单单多了“s”&#xff0c;会有人说这个网页会更安全些&#xff1f; HTTP&#xff08;超文本传输协议&#xff09;和HTTPS&#xff08;…...

汽车零部件制造企业MES系统主要功能介绍

随着汽车工业的不断发展&#xff0c;汽车零部件制造企业面临着越来越高的生产效率、质量控制和成本管理要求。MES系统作为一种综合信息系统&#xff0c;能够帮助企业实现从订单接收到产品交付的全流程数字化管理&#xff0c;优化资源配置&#xff0c;提高生产效率&#xff0c;确…...

常见的五种聚类算法总结

常见的聚类算法总结 1. K-Means 聚类 描述 K-Means 是一种迭代优化的聚类算法&#xff0c;它通过最小化样本点到质心的距离平方和来进行聚类。 思想 随机选择 K 个初始质心。分配每个数据点到最近的质心&#xff0c;形成 K 个簇。重新计算每个簇的质心。重复上述步骤&…...

智能车存在网络安全隐患,如何应设计出更好的安全防护技术?

智能车网络安全防护技术的研究与设计 摘要&#xff1a;随着智能车技术的迅速发展&#xff0c;车辆的网络连接性不断增强&#xff0c;然而这也带来了诸多网络安全隐患。本文深入探讨了智能车面临的网络安全威胁&#xff0c;并提出了一系列创新的安全防护技术设计&#xff0c;旨…...

通讯的概念

通讯的概念 文章目录 通讯的概念1.通讯的基本概念2. 串行通讯与并行通讯2. 全双工、半双工及单工通讯3. 同步通讯与异步通讯4. 通讯速率 1.通讯的基本概念 通讯是指在嵌入式系统中实现数据交换的技术手段&#xff0c;它涉及到硬件与硬件、硬件与软件之间的信息传输。基本概念包…...

Centos7 rpm 安装 Mysql 8.0.28

Centos7 rpm 安装 Mysql 8.0.28 一、检查系统是否已经安装了Mysql 如果安装了则卸载 [rootiZbp1byzaznzn9jncxr010Z /]# rpm -qa | grep mysql[rootiZbp1byzaznzn9jncxr010Z /]# rpm -qa | grep mariadb mariadb-libs-5.5.68-1.el7.x86_64如果安装了 mysql &#xff0c;maria…...

Linux 多进程编程详解

Linux 多进程编程详解 多进程编程是现代操作系统中一种重要的并发编程技术。通过在同一程序中运行多个独立的进程&#xff0c;可以实现并发处理&#xff0c;充分利用多核处理器的优势&#xff0c;提高程序的运行效率。本文将详细介绍Linux多进程的基本概念、创建方法、进程间通…...

C语言之大小端理解

目录 1前言2 大小端理解与区分3 大小端的识别和基本切换操作4 总结 1前言 在汽车CAN通讯报文中往往会接触到Intel类型和motorola类型&#xff0c;实际项目中涉及到多机通讯也会接触到大小端问题 2 大小端理解与区分 大端(Big_Endian) :低字节放在高地址小端(Little_Endian):…...

GIT相关操作,推送本地分支到远程仓库流程记录学习

git流程 切换到源文件夹&#xff1a;cd 源文件夹克隆远程仓库&#xff1a;git clone [ssh]进入项目文件夹&#xff1a;cd .\project\查看本地分支&#xff1a;git branch获取远程仓库更新&#xff0c;使远程同步&#xff1a;git fetch查看所有分支&#xff08;包括远程分支&am…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...