iaas-install-nova-controller/compute.sh脚本详解

iaas-install-nova-controller.sh

#!/bin/bash
source /etc/iaas-openstack/openrc.sh
source /etc/keystone/admin-openrc.sh

#mysql nova mysql
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova ;"     # 创建nova数据库
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova_api ;"   # nova_api数据库
mysql -uroot -p$DB_PASS -e "create database IF NOT EXISTS nova_cell0 ;"   # nova——cell0
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"  # 授权nova用户拥有从本地访问nova数据库的所有权限
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"          # 授权nova用户拥有从远程访问nova数据库的所有权限
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"   # 授权nova用户拥有从本地访问nova_api数据库的所有权限
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"          # 授权nova用户拥有从远程访问nova_api数据库的所有权限
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '$NOVA_DBPASS' ;"   # 授权nova用户拥有从本地访问nova——cell0数据库的所有权限
mysql -uroot -p$DB_PASS -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '$NOVA_DBPASS' ;"  # 授权nova用户拥有从远程访问nova——cell0数据库的所有权限

#nova user role service endpoint
openstack user create --domain $DOMAIN_NAME --password $NOVA_PASS nova   # 创建nova用户
openstack role add --project service --user nova admin     # 将admin role 赋予 service project 和 nova user  
openstack service create --name nova --description "OpenStack Compute" compute   # 创建nova计算服务
openstack endpoint create --region RegionOne compute public http://$HOST_NAME:8774/v2.1   # 创建nova计算服务组件的外部的 API endpoint
openstack endpoint create --region RegionOne compute internal http://$HOST_NAME:8774/v2.1   # 创建nova计算服务组件的内部的 API endpoint
openstack endpoint create --region RegionOne compute admin http://$HOST_NAME:8774/v2.1    # 创建nova计算服务组件的admin API endpoint
openstack user create --domain $DOMAIN_NAME --password $NOVA_PASS placement    # 创建placement用户
openstack role add --project service --user placement admin          # 将admin role 赋予 service project 和 placement user  
openstack service create --name placement --description "Placement API" placement     # 创建Placement API计算服务 service entity
openstack endpoint create --region RegionOne placement public http://$HOST_NAME:8778     # 创建placement计算服务组件的public API endpoint
openstack endpoint create --region RegionOne placement internal http://$HOST_NAME:8778   # 创建placement计算服务组件的internal API
openstack endpoint create --region RegionOne placement admin http://$HOST_NAME:8778      # 创建placement计算服务组件的admin API endpoint

#nova install
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api -y   # 安装nova的核心组件

#/etc/nova/nova.conf
crudini --set /etc/nova/nova.conf DEFAULT enabled_apis  osapi_compute,metadata    # 停止使用EC2 API
crudini --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:$NOVA_DBPASS@$HOST_NAME   # 配置RabbitMQ的消息队列访问
crudini --set /etc/nova/nova.conf DEFAULT my_ip $HOST_IP     # 配置控制节点管理ip为$HOST_IP
crudini --set /etc/nova/nova.conf DEFAULT use_neutron  True    # 定义nova支持neutron网络服务组件
crudini --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver    # 关闭nova计算服务组件的防火墙功能

crudini --set /etc/nova/nova.conf api auth_strategy keystone   # 配置认证方式为keystone

crudini --set /etc/nova/nova.conf api_database connection  mysql+pymysql://nova:$NOVA_DBPASS@$HOST_NAME/nova_api      

crudini --set /etc/nova/nova.conf database connection  mysql+pymysql://nova:$NOVA_DBPASS@$HOST_NAME/nova  # 两行命令为配置数据库的连接

crudini --set /etc/nova/nova.conf keystone_authtoken auth_url  http://$HOST_NAME:5000/v3     # 配置管理员访问端口
crudini --set /etc/nova/nova.conf keystone_authtoken memcached_servers $HOST_NAME:11211      # 配置缓存服务端口
crudini --set /etc/nova/nova.conf keystone_authtoken auth_type password                      # 配置认证类型为密码认证
crudini --set /etc/nova/nova.conf keystone_authtoken project_domain_name $DOMAIN_NAME        # 配置租户域名
crudini --set /etc/nova/nova.conf keystone_authtoken user_domain_name $DOMAIN_NAME           # 配置用户域名
crudini --set /etc/nova/nova.conf keystone_authtoken project_name service                    # 配置租户名
crudini --set /etc/nova/nova.conf keystone_authtoken username nova                           # 配置用户名
crudini --set /etc/nova/nova.conf keystone_authtoken password $NOVA_PASS                     # 配置keystone认证密码

crudini --set /etc/nova/nova.conf vnc enabled true                           # 配置VNC开机自启
crudini --set /etc/nova/nova.conf vnc server_listen $HOST_IP                 # 配置VNC代理使用控制节点的管理IP地址
crudini --set /etc/nova/nova.conf vnc server_proxyclient_address $HOST_IP       # 使用主机地址为数据网络IP地址

crudini --set /etc/nova/nova.conf glance api_servers http://$HOST_NAME:9292          # 配置glance镜像服务地址

crudini --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp       # 配置lock(文件锁)路径为/var/lib/nova/tmp
# 配置placement
crudini --set /etc/nova/nova.conf placement os_region_name RegionOne
crudini --set /etc/nova/nova.conf placement project_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf placement project_name service
crudini --set /etc/nova/nova.conf placement auth_type password
crudini --set /etc/nova/nova.conf placement user_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf placement auth_url http://$HOST_NAME:5000/v3
crudini --set /etc/nova/nova.conf placement username placement
crudini --set /etc/nova/nova.conf placement password $NOVA_PASS

#/etc/httpd/conf.d/00-nova-placement-api.conf
echo " " >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo "<Directory /usr/bin>" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo "    <IfVersion >= 2.4>" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo "        Require all granted" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo "    </IfVersion>" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo "    <IfVersion < 2.4>" >> /etc/httpd/conf.d/00-nova-placement-api.conf       # apache版本
echo "        Order allow,deny" >> /etc/httpd/conf.d/00-nova-placement-api.conf    # 允许apache访问/usr/bin目录;否则/usr/bin/placement-api将不允许被访问
echo "        Allow from all" >> /etc/httpd/conf.d/00-nova-placement-api.conf      # 允许apache访问
echo "    </IfVersion>" >> /etc/httpd/conf.d/00-nova-placement-api.conf
echo "</Directory>" >> /etc/httpd/conf.d/00-nova-placement-api.conf

#httpd restart
systemctl restart httpd

#su nova mysql
# 将nova计算服务信息同步到 nova_api数据库
# 将nova计算服务信息同步到 nova数据库
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 discover_hosts --verbose" 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
 
nova-manage cell_v2 list_cells   # 验证Nova数据库是否创建成功
 
#nova start service 
# 设置nova服务开机自启
# 开启nova服务
systemctl enable openstack-nova-api.service  openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

 

iaas-install-nova-compute.sh

#!/bin/bash
source /etc/iaas-openstack/openrc.sh

#nova-compute install
yum install openstack-nova-compute -y   # 安装openstack-nova-compute

#/etc/nova/nova.conf
crudini --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata                # 停止使用EC2 API
crudini --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:$NOVA_DBPASS@$HOST_NAME   # 配置RabbitMQ的消息队列访问
crudini --set /etc/nova/nova.conf DEFAULT my_ip $HOST_IP_NODE    # 配置控制节点管理ip为$HOST_IP
crudini --set /etc/nova/nova.conf DEFAULT use_neutron True          # 定义nova支持neutron网络服务组件
crudini --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver        # 关闭nova计算服务组件的防火墙功能

crudini --set /etc/nova/nova.conf api auth_strategy keystone   # 配置认证方式为keystone

crudini --set /etc/nova/nova.conf keystone_authtoken auth_url http://$HOST_NAME:5000/v3    # 配置管理员访问端口
crudini --set /etc/nova/nova.conf keystone_authtoken memcached_servers $HOST_NAME:11211    # 配置缓存服务端口
crudini --set /etc/nova/nova.conf keystone_authtoken auth_type password                 # 配置认证类型为密码认证
crudini --set /etc/nova/nova.conf keystone_authtoken project_domain_name $DOMAIN_NAME       # 配置租户域名
crudini --set /etc/nova/nova.conf keystone_authtoken user_domain_name $DOMAIN_NAME          # 配置用户域名
crudini --set /etc/nova/nova.conf keystone_authtoken project_name service                # 配置租户名
crudini --set /etc/nova/nova.conf keystone_authtoken username nova                       # 配置用户名
crudini --set /etc/nova/nova.conf keystone_authtoken password $NOVA_PASS                 # 配置keystone认证密码

# 配置VNC以启用远程终端的访问
crudini --set /etc/nova/nova.conf vnc enabled True           # 配置VNC开机自启
crudini --set /etc/nova/nova.conf vnc server_listen 0.0.0.0         # 不监听本机所有IP地址端口
crudini --set /etc/nova/nova.conf vnc server_proxyclient_address $HOST_IP_NODE      # 使用主机地址为数据网络IP地址
crudini --set /etc/nova/nova.conf vnc novncproxy_base_url http://$HOST_IP:6080/vnc_auto.html   # 代理服务地址

crudini --set /etc/nova/nova.conf glance api_servers http://$HOST_NAME:9292    # 配置glance镜像服务地址

crudini --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp   # 配置lock(文件锁)路径为/var/lib/nova/tmp
# 配置placement
crudini --set /etc/nova/nova.conf placement os_region_name RegionOne
crudini --set /etc/nova/nova.conf placement project_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf placement project_name service
crudini --set /etc/nova/nova.conf placement auth_type password
crudini --set /etc/nova/nova.conf placement user_domain_name $DOMAIN_NAME
crudini --set /etc/nova/nova.conf placement auth_url http://$HOST_NAME:5000/v3
crudini --set /etc/nova/nova.conf placement username placement
crudini --set /etc/nova/nova.conf placement password $NOVA_PASS
# 检查本机是否支持硬件加速 
virt_num=`egrep -c '(vmx|svm)' /proc/cpuinfo`
if [ $virt_num = '0' ];then
# 配置nova服务的配置文件,修改虚拟化类型
    crudini --set /etc/nova/nova.conf libvirt virt_type  qemu
fi

systemctl enable libvirtd.service openstack-nova-compute.service
systemctl restart libvirtd.service openstack-nova-compute.service
# 添加计算节点
ssh $HOST_IP << EOF
source /etc/iaas-openstack/openrc.sh
source /etc/keystone/admin-openrc.sh
openstack compute service list --service nova-compute
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
exit
EOF

 

posted @ 2021-12-13 08:22  衡衡酱  阅读(1)  评论(0)    收藏  举报
Live2D