一、基础环境
set -e -x
CONTROLLER_IP="2001::192:168:0:1"
CTRL_HOST_NAME="rocky"
ALL_PASS="123456"
NTP_SERVER="2001::192:168:0:1"
set +x
read -p "Check variables and continue?(y/n) " -t 10 res
if [[ "${res}" != "y" ]];then
exit 0
fi
set -x
yum -y install vim
yum -y install net-tools
yum -y install expect
sleep 5
hostnamectl set-hostname ${
CTRL_HOST_NAME}
echo "${CONTROLLER_IP} ${CTRL_HOST_NAME}" >>/etc/hosts
systemctl stop firewalld
systemctl disable firewalld
cp -p /etc/selinux/config /etc/selinux/config.bak.$(date +%Y%m%d)_$(date +%H%M%S)
sed -i "/SELINUX=enforcing/cSELINUX=disabled" /etc/selinux/config
setenforce 0
cp -p /etc/chrony.conf /etc/chrony.conf.bak.$(date +%Y%m%d)_$(date +%H%M%S)
sed -i "/server 0.centos.pool.ntp.org iburst/cserver ${NTP_SERVER} iburst" /etc/chrony.conf
sed -i "/centos.pool.ntp.org/d" /etc/chrony.conf
systemctl enable chronyd
systemctl restart chronyd
sleep 2
chronyc sources
timedatectl set-timezone Asia/Shanghai
date
sleep 3
yum -y install openstack-utils
yum -y install python-openstackclient
yum -y install openstack-selinux
二、相关软件和服务
yum -y install mariadb
yum -y install mariadb-server
yum -y install python2-PyMySQL
touch /etc/my.cnf.d/openstack.cnf
openstack-config --set /etc/my.cnf.d/openstack.cnf mysqld bind-address ${
CONTROLLER_IP}
openstack-config --set /etc/my.cnf.d/openstack.cnf mysqld default-storage-engine innodb
openstack-config --set /etc/my.cnf.d/openstack.cnf mysqld innodb_file_per_table on
openstack-config --set /etc/my.cnf.d/openstack.cnf mysqld max_connections 4096
openstack-config --set /etc/my.cnf.d/openstack.cnf mysqld collation-server utf8_general_ci
openstack-config --set /etc/my.cnf.d/openstack.cnf mysqld character-set-server utf8
systemctl enable mariadb.service
systemctl start mariadb.service
systemctl status mariadb.service
sleep 1
mysql_secure_installation <<EOF
y
$ALL_PASS
$ALL_PASS
y
y
y
y
EOF
yum install rabbitmq-server -y
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
systemctl status rabbitmq-server.service
sleep 1
rabbitmqctl add_user openstack ${
ALL_PASS}
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
yum -y install memcached
yum -y install python-memcached
cp -p /etc/sysconfig/memcached /etc/sysconfig/memcached.bak.$(date +%Y%m%d)_$(date +%H%M%S)
sed -i "/OPTIONS=\"-l 127.0.0.1,::1\"/cOPTIONS=\"-l 127.0.0.1,::1,${
CONTROLLER_IP}\"" /etc/sysconfig/memcached
systemctl enable memcached.service
systemctl start memcached.service
systemctl status memcached.service
sleep 2
yum install etcd -y
cp -p /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak.$(date +%Y%m%d)_$(date +%H%M%S)
sed -i '/ETCD_DATA_DIR/cETCD_DATA_DIR="/var/lib/etcd/default.etcd"' /etc/etcd/etcd.conf
sed -i "/ETCD_LISTEN_PEER_URLS/cETCD_LISTEN_PEER_URLS=\"http://[${
CONTROLLER_IP}]:2380\"" /etc/etcd/etcd.conf
sed -i "/ETCD_LISTEN_CLIENT_URLS/cETCD_LISTEN_CLIENT_URLS=\"http://[${
CONTROLLER_IP}]:2379\"" /etc/etcd/etcd.conf
sed -i "/ETCD_NAME/cETCD_NAME=\"$CON_HOST_NAME\"" /etc/etcd/etcd.conf
sed -i "/ETCD_INITIAL_ADVERTISE_PEER_URLS/cETCD_INITIAL_ADVERTISE_PEER_URLS=\"http://[${
CONTROLLER_IP}]:2380\"" /etc/etcd/etcd.conf
sed -i "/ETCD_ADVERTISE_CLIENT_URLS/cETCD_ADVERTISE_CLIENT_URLS=\"http://[${
CONTROLLER_IP}]:2379\"" /etc/etcd/etcd.conf
sed -i "/ETCD_INITIAL_CLUSTER=/cETCD_INITIAL_CLUSTER=\"$CON_HOST_NAME=http://[${
CONTROLLER_IP}]:2380\"" /etc/etcd/etcd.conf
sed -i '/ETCD_INITIAL_CLUSTER_TOKEN/cETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"' /etc/etcd/etcd.conf
sed -i '/ETCD_INITIAL_CLUSTER_STATE/cETCD_INITIAL_CLUSTER_STATE="new"' /etc/etcd/etcd.conf
systemctl enable etcd
systemctl start etcd
systemctl status etcd
sleep 2
三、KeyStone
mysql -N -uroot -p$ALL_PASS<<EOF
DROP DATABASE if exists keystone;
CREATE DATABASE if not exists keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '$ALL_PASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '$ALL_PASS';
EOF
yum install openstack-keystone -y
yum install httpd -y
yum install mod_wsgi -y
cp -p /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak.$(date +%Y%m%d)_$(date +%H%M%S)
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:$ALL_PASS@[${
CONTROLLER_IP}]/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet
su -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 $ALL_PASS \
--bootstrap-admin-url http://[${
CONTROLLER_IP}]:5000/v3/ \
--bootstrap-internal-url http://[${
CONTROLLER_IP}]:5000/v3/ \
--bootstrap-public-url http://[${
CONTROLLER_IP}]:5000/v3/ \
--bootstrap-region-id RegionOne
sed -i "/#ServerName/aServerName ${CTRL_HOST_NAME}" /etc/httpd/conf/httpd.conf
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
systemctl enable httpd.service
systemctl start httpd.service
systemctl status httpd.service
export OS_USERNAME=admin
export OS_PASSWORD=$ALL_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://[${
CONTROLLER_IP}]:5000/v3
export OS_IDENTITY_API_VERSION=3
openstack domain create --description "An Example Domain" example
openstack project create --domain default --description "Service Project" service
openstack project create --domain default --description