openstack系列Minimal deployment for Rocky
脚本已测试,如需使用,修改脚本所有controller-ZJB为你的主机名,修改所有1790600080为你的密码
win的编码与unix的编码有区别,如果你直接粘贴使用,最好安装dos2unix将脚本文件转码!


#!/bin/bash
#This is a script for editing glance
# 如果你需要使用此脚本,将主机名controller-ZJB修改为你的主机名
# 所有1790600080处修改为自己的密码
readonly create_domain_pass=1790600080
echo " 这是一个修改glance配置文件的脚本:"
echo " -------------------------------"
echo " 1、下面开始创建数据库并赋予相应权限"
mysql -u root -p1790600080 <<EOF
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '1790600080';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '1790600080';
EOF
echo " --------------------------------"
echo " 数据库已创建成功并赋予了相应权限"
echo " --------------------------------"
echo " 2、创建服务凭证:"
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=1790600080
export OS_AUTH_URL=http://controller-ZJB:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
openstack user create --domain default --password $create_domain_pass glance
openstack role add --project service --user glance admin
openstack service create --name glance --description "OpenStack Image" image
openstack endpoint create --region RegionOne image public http://controller-ZJB:9292
openstack endpoint create --region RegionOne image internal http://controller-ZJB:9292
openstack endpoint create --region RegionOne image admin http://controller-ZJB:9292
echo " --------------------------------"
echo " Compute服务凭证已创建完成!"
echo " 3、安装软件包……"
yum -y install openstack-glance
echo " --------------------------------"
if [ $? == 0 ];then
echo " 软件已成功安装!"
else
echo " 软件安装出错,请手动查看问题!"
fi
echo " --------------------------------"
echo " 4、修改Nova配置文件:"
echo " "
read -p " 选择是否一键修改glance配置文件(y/n)" answer
#判断/etc/glance/glance-api.conf文件是否存在,不存在直接输出错误
if [ $answer == "y" ];then
ls /etc/glance/glance-api.conf &> /dev/null
if [ $? == 0 ];then
echo " --------------------------------"
echo " 下面开始修改/etc/glance/glance-api.conf配置文件"
database_line=`cat -n /etc/glance/glance-api.conf | grep "\[database\]$" | awk '{print $1}'`
sed -i $database_line'a\connection = mysql+pymysql://glance:1790600080@controller-ZJB/glance' /etc/glance/glance-api.conf
keystone_authtoken_line=`cat -n /etc/glance/glance-api.conf | grep "\[keystone_authtoken\]$" | awk '{print $1}'`
sed -i $keystone_authtoken_line'a\www_authenticate_uri = http://controller-ZJB:5000' /etc/glance/glance-api.conf
sed -i `expr $keystone_authtoken_line + 1`'a\auth_url = http://controller-ZJB:5000' /etc/glance/glance-api.conf
sed -i `expr $keystone_authtoken_line + 2`'a\memcached_servers = controller-ZJB:11211' /etc/glance/glance-api.conf
sed -i `expr $keystone_authtoken_line + 3`'a\auth_type = password' /etc/glance/glance-api.conf
sed -i `expr $keystone_authtoken_line + 4`'a\project_domain_name = Default' /etc/glance/glance-api.conf
sed -i `expr $keystone_authtoken_line + 5`'a\user_domain_name = Default' /etc/glance/glance-api.conf
sed -i `expr $keystone_authtoken_line + 6`'a\project_name = service' /etc/glance/glance-api.conf
sed -i `expr $keystone_authtoken_line + 7`'a\username = glance' /etc/glance/glance-api.conf
sed -i `expr $keystone_authtoken_line + 8`'a\password = 1790600080' /etc/glance/glance-api.conf
paste_deploy_line=`cat -n /etc/glance/glance-api.conf | grep "\[paste_deploy\]$" | awk '{print $1}'`
sed -i $paste_deploy_line'a\flavor = keystone' /etc/glance/glance-api.conf
glance_store_line=`cat -n /etc/glance/glance-api.conf | grep "\[glance_store\]$" | awk '{print $1}'`
sed -i $glance_store_line'a\stores = file,http' /etc/glance/glance-api.conf
sed -i $glance_store_line'a\default_store = file' /etc/glance/glance-api.conf
sed -i $glance_store_line'a\filesystem_store_datadir = /var/lib/glance/images/' /etc/glance/glance-api.conf
echo " /etc/glance/glance-api.conf文件已修改完毕"
else
echo "/etc/glance/glance-api.conf文件不存在!"
fi
#修改/etc/glance/glance-registry.conf配置文件
ls /etc/glance/glance-registry.conf &>/dev/null
if [ $? == 0 ]; then
echo " --------------------------------"
echo " 下面开始修改/etc/glance/glance-registry.conf配置文件"
database_line1=`cat -n /etc/glance/glance-registry.conf | grep "\[database\]$" | awk '{print $1}'`
sed -i $database_line1'a\connection = mysql+pymysql://glance:1790600080@controller-ZJB/glance' /etc/glance/glance-registry.conf
keystone_authtoken_line1=`cat -n /etc/glance/glance-registry.conf | grep "\[keystone_authtoken\]$" | awk '{print $1}'`
sed -i $keystone_authtoken_line1'a\www_authenticate_uri = http://controller-ZJB:5000' /etc/glance/glance-registry.conf
sed -i `expr $keystone_authtoken_line1 + 1`'a\auth_url = http://controller-ZJB:5000' /etc/glance/glance-registry.conf
sed -i `expr $keystone_authtoken_line1 + 2`'a\memcached_servers = controller-ZJB:11211' /etc/glance/glance-registry.conf
sed -i `expr $keystone_authtoken_line1 + 3`'a\auth_type = password' /etc/glance/glance-registry.conf
sed -i `expr $keystone_authtoken_line1 + 4`'a\project_domain_name = Default' /etc/glance/glance-registry.conf
sed -i `expr $keystone_authtoken_line1 + 5`'a\user_domain_name = Default' /etc/glance/glance-registry.conf
sed -i `expr $keystone_authtoken_line1 + 6`'a\project_name = service' /etc/glance/glance-registry.conf
sed -i `expr $keystone_authtoken_line1 + 7`'a\username = glance' /etc/glance/glance-registry.conf
sed -i `expr $keystone_authtoken_line1 + 8`'a\password = 1790600080' /etc/glance/glance-registry.conf
paste_deploy_line1=`cat -n /etc/glance/glance-registry.conf | grep "\[keystone_authtoken\]$" | awk '{print $1}'`
sed -i $paste_deploy_line1'a\flavor = keystone' /etc/glance/glance-registry.conf
echo " /etc/glance/glance-registry.conf文件已修改完毕"
else
echo "/etc/glance/glance-registry.conf配置文件不存在"
fi
# sed -i '/\[database\]/a\connection = mysql+pymysql://glance:1790600080@controller-ZJB/glance' /etc/glance/glance-api.conf
# sed -i '/\[keystone_authtoken\]/a\www_authenticate_uri = http://controller-ZJB:5000\nauth_url = http://controller-ZJB:5000\nmemcached_servers = controller-ZJB:11211\nauth_type = password\nproject_domain_name = Default\nuser_domain_name = Default\nproject_name = service\nusername = glance\npassword =1790600080' /etc/glance/glance-api.conf
# sed -i '/\[paste_deploy\]/a\flavor = keystone' /etc/glance/glance-api.conf
# sed -i '/\[glance_store\]/a\stores = file,http\ndefault_store = file\nfilesystem_store_datadir = /var/lib/glance/images/' /etc/glance/glance-api.conf
# echo " 1、/etc/glance/glance-api.conf文件已修改完毕"
# else
# echo "/etc/glance/glance-api.conf文件不存在!"
# fi
# #判断/etc/glance/glance-registry.conf文件是否存在,不存在直接输出错误
# ls /etc/glance/glance-registry.conf &>/dev/null
# if [ $? == 0 ]; then
# sed -i '/\[database\]/a\connection = mysql+pymysql://glance:1790600080@controller-ZJB/glance' /etc/glance/glance-registry.conf
# sed -i '/\[keystone_authtoken\]/a\www_authenticate_uri = http://controller-ZJB:5000\nauth_url = http://controller-ZJB:5000\nmemcached_servers = controller-ZJB:11211\nauth_type = password\nproject_domain_name = Default\nuser_domain_name = Default\nproject_name = service\nusername = glance\npassword = 1790600080' /etc/glance/glance-registry.conf
# sed -i '/\[paste_deploy\]/a\flavor = keystone' /etc/glance/glance-registry.conf
# echo " 2、/etc/glance/glance-registry.conf文件已修改完毕"
# else
# echo "/etc/glance/glance-registry.conf配置文件不存在"
# fi
#填充数据库
echo " --------------------------------"
echo " 5、填充数据库:"
echo " "
su -s /bin/sh -c "glance-manage db_sync" glance
#启动服务并设置开机自启动
echo " --------------------------------"
echo " 6、启动服务并设置开机自启动:"
echo " "
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
echo " --------------------------------"
echo " 7、下载一个简单镜像"
echo " "
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
echo " --------------------------------"
echo " 8、使用qcow2格式上传镜像到镜像服务"
echo " "
openstack image create "cirros" --file /root/cirros-0.4.0-x86_64-disk.img --disk-format qcow2 --container-format bare --public
echo " --------------------------------"
echo " 9、测试是否上传成功"
echo " "
openstack image list
elif [ $answer == "n" ]; then
echo " "
echo " 已退出此脚本"
fi