注意:运行shell,使用"source xx.sh or . xx.sh",不要使用"bash xx.sh"
set environment variables
echo "#Add by Ly">>/etc/profile
echo "export CONTROLLER_IP=172.36.214.11">>/etc/profile
echo "export CTRL_HOST_NAME=stein-ctrl">>/etc/profile
echo "export ALL_PASS=123456">>/etc/profile
source /etc/profile
B_setup_base_env.sh
set -e -x
yum install -y net-tools
yum install -y expect
yum install -y tcpdump
yum install -y python-pip
yum install -y tree
echo "$CONTROLLER_IP $CTRL_HOST_NAME" >>/etc/hosts
systemctl stop firewalld
systemctl disable firewalld
sleep 2
cp /etc/selinux/config /etc/selinux/config.bak
sed -i "/SELINUX=enforcing/cSELINUX=disabled" /etc/selinux/config
setenforce 0
cp /etc/chrony.conf /etc/chrony.conf.bak
sed -i "/server 0.centos.pool.ntp.org iburst/cserver 10.165.7.181 iburst" /etc/chrony.conf
sed -i "/centos.pool.ntp.org/d" /etc/chrony.conf
systemctl enable chronyd
systemctl restart chronyd
systemctl status chronyd
sleep 2
chronyc sources
timedatectl set-timezone Asia/Shanghai
sleep 5
#by your diy
C_setup_base_soft_about_ctrl_stein.sh
set -e -x
echo "The time now is : $CURDATE"
sleep 3
yum install centos-release-openstack-stein -y
yum install python-openstackclient -y
yum install openstack-selinux -y
yum install -y mariadb
yum install -y mariadb-server
yum install -y python2-PyMySQL
touch /etc/my.cnf.d/openstack.cnf
echo "[mysqld]" >>/etc/my.cnf.d/openstack.cnf
echo "bind-address = $CONTROLLER_IP" >>/etc/my.cnf.d/openstack.cnf
echo "" >>/etc/my.cnf.d/openstack.cnf
echo "default-storage-engine = innodb" >>/etc/my.cnf.d/openstack.cnf
echo "innodb_file_per_table = on" >>/etc/my.cnf.d/openstack.cnf
echo "max_connections = 4096" >>/etc/my.cnf.d/openstack.cnf
echo "collation-server = utf8_general_ci" >>/etc/my.cnf.d/openstack.cnf
echo "character-set-server = utf8" >>/etc/my.cnf.d/openstack.cnf
systemctl enable mariadb.service
systemctl start mariadb.service
systemctl status mariadb.service
sleep 2
mysql_secure_installation <
D_setup_keystone_about_ctrl_stein.sh
set -e -x
yum install openstack-keystone -y
yum install httpd -y
yum install mod_wsgi -y
mysql -N -uroot -p$ALL_PASS</aconnection = mysql+pymysql://keystone:$ALL_PASS@$CONTROLLER_IP/keystone" /etc/keystone/keystone.conf
#[token]
sed -i '/provider =/aprovider = fernet' /etc/keystone/keystone.conf
#Populate the Identity service database
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
#ServerName
sed -i "/#ServerName/aServerName $CONTROLLER_IP" /etc/httpd/conf/httpd.conf
#Creating a soft link
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
systemctl enable httpd.service
systemctl start httpd.service
systemctl status httpd.service
#Configure the administrative account
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
#Create a domain, projects, users, and roles
openstack domain create --description "An Example Domain" example
openstack project create --domain default --description "Service Project" service
openstack project create --domain default --description "Demo Project" myproject
/usr/bin/expect << EOF
set timeout 15
spawn openstack user create --domain default --password-prompt myuser
expect "User*"
send "$ALL_PASS\r"
expect "Repeat *"
send "$ALL_PASS\r"
expect eof
EOF
openstack role create myrole
openstack role add --project myproject --user myuser myrole
unset OS_AUTH_URL OS_PASSWORD
/usr/bin/expect << EOF
set timeout 15
spawn openstack --os-auth-url http://$CONTROLLER_IP:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
expect "*Password*"
send "$ALL_PASS\r"
expect eof
EOF
/usr/bin/expect << EOF
set timeout 15
spawn openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name myproject --os-username myuser token issue
expect "*Password*"
send "$ALL_PASS\r"
expect eof
EOF
#Creating admin-openrc
touch /root/admin-openrc
echo "export OS_PROJECT_DOMAIN_NAME=Default" >/root/admin-openrc
echo "export OS_USER_DOMAIN_NAME=Default" >>/root/admin-openrc
echo "export OS_PROJECT_NAME=admin" >>/root/admin-openrc
echo "export OS_USERNAME=admin" >>/root/admin-openrc
echo "export OS_PASSWORD=$ALL_PASS" >>/root/admin-openrc
echo "export OS_AUTH_URL=http://$CONTROLLER_IP:5000/v3" >>/root/admin-openrc
echo "export OS_IDENTITY_API_VERSION=3" >>/root/admin-openrc
echo "export OS_IMAGE_API_VERSION=2" >>/root/admin-openrc
#Creating demo-openrc
touch /root/demo-openrc
echo "export OS_PROJECT_DOMAIN_NAME=Default" >/root/demo-openrc
echo "export OS_USER_DOMAIN_NAME=Default" >>/root/demo-openrc
echo "export OS_PROJECT_NAME=myproject" >>/root/demo-openrc
echo "export OS_USERNAME=myuser" >>/root/demo-openrc
echo "export OS_PASSWORD=$ALL_PASS" >>/root/demo-openrc
echo "export OS_AUTH_URL=http://$CONTROLLER_IP:5000/v3" >>/root/demo-openrc
echo "export OS_IDENTITY_API_VERSION=3" >>/root/demo-openrc
echo "export OS_IMAGE_API_VERSION=2" >>/root/demo-openrc
source /root/admin-openrc
openstack token issue
sleep 2
E_setup_image_about_ctrl_stein.sh
set -e -x
#Database operations: glance
mysql -N -uroot -p$ALL_PASS</aconnection = mysql+pymysql://glance:$ALL_PASS@$CONTROLLER_IP/glance" /etc/glance/glance-registry.conf
#[keystone_authtoken]
sed -i "/\[keystone_authtoken]$/apassword = $ALL_PASS" /etc/glance/glance-registry.conf
sed -i "/\[keystone_authtoken]$/ausername = glance" /etc/glance/glance-registry.conf
sed -i "/\[keystone_authtoken]$/aproject_name = service" /etc/glance/glance-registry.conf
sed -i "/\[keystone_authtoken]$/auser_domain_name = Default" /etc/glance/glance-registry.conf
sed -i "/\[keystone_authtoken]$/aproject_domain_name = Default" /etc/glance/glance-registry.conf
sed -i "/\[keystone_authtoken]$/aauth_type = password" /etc/glance/glance-registry.conf
sed -i "/\[keystone_authtoken]$/amemcached_servers = $CONTROLLER_IP:11211" /etc/glance/glance-registry.conf
sed -i "/\[keystone_authtoken]$/aauth_url = http://$CONTROLLER_IP:5000" /etc/glance/glance-registry.conf
sed -i "/\[keystone_authtoken]$/awww_authenticate_uri = http://$CONTROLLER_IP:5000" /etc/glance/glance-registry.conf
#[paste_deploy]
sed -i "/flavor = keystone/cflavor = keystone" /etc/glance/glance-registry.conf
#Populate the Image service database
su -s /bin/sh -c "glance-manage db_sync" glance
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
F_setup_placement_about_ctrl_stein.sh
set -x -e
#
mysql -N -uroot -p$ALL_PASS</root/.pip/pip.conf
echo "index-url=http://10.153.3.130/pypi/web/simple" >>/root/.pip/pip.conf
echo "" >>/root/.pip/pip.conf
echo "[install]" >>/root/.pip/pip.conf
echo "trusted-host=10.153.3.130" >>/root/.pip/pip.conf
pip install osc-placement
sed -i "/<\/VirtualHost>/i\ \ " /etc/httpd/conf.d/00-placement-api.conf
sed -i "/<\/VirtualHost>/i\ \ \ \ = 2.4>" /etc/httpd/conf.d/00-placement-api.conf
sed -i "/<\/VirtualHost>/i\ \ \ \ \ \ \ \ Require all granted" /etc/httpd/conf.d/00-placement-api.conf
sed -i "/<\/VirtualHost>/i\ \ \ \ <\/IfVersion>" /etc/httpd/conf.d/00-placement-api.conf
sed -i "/<\/VirtualHost>/i\ \ \ \ " /etc/httpd/conf.d/00-placement-api.conf
sed -i "/<\/VirtualHost>/i\ \ \ \ \ \ \ \ Order allow,deny" /etc/httpd/conf.d/00-placement-api.conf
sed -i "/<\/VirtualHost>/i\ \ \ \ \ \ \ \ Allow from all" /etc/httpd/conf.d/00-placement-api.conf
sed -i "/<\/VirtualHost>/i\ \ \ \ <\/IfVersion>" /etc/httpd/conf.d/00-placement-api.conf
sed -i "/<\/VirtualHost>/i\ \ <\/Directory>" /etc/httpd/conf.d/00-placement-api.conf
systemctl restart httpd
systemctl status httpd
openstack --os-placement-api-version 1.2 resource class list --sort-column name
openstack --os-placement-api-version 1.6 trait list --sort-column name
G_setup_nova_about_ctrl_stein.sh
set -x -e
#
mysql -N -uroot -p$ALL_PASS<
H_setup_neutron_about_ctrl_stein.sh
set -e -x
#
mysql -N -uroot -p$ALL_PASS<
I_setup_dashboard_about_ctrl_stein.sh
set -x -e
yum install openstack-dashboard -y
#
#/etc/openstack-dashboard/local_settings
cp /etc/openstack-dashboard/local_settings /etc/openstack-dashboard/local_settings.bak
sed -i "/OPENSTACK_HOST = /cOPENSTACK_HOST = \"$CONTROLLER_IP\"" /etc/openstack-dashboard/local_settings
sed -i "/ALLOWED_HOSTS = /cALLOWED_HOSTS = ['*']" /etc/openstack-dashboard/local_settings
#SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
#CACHES
sed -i "/^CACHES =/iSESSION_ENGINE = 'django.contrib.sessions.backends.cache'" /etc/openstack-dashboard/local_settings
sed -i "/^[ \t]*'BACKEND'/a\\ \t'LOCATION': '$CONTROLLER_IP:11211'," /etc/openstack-dashboard/local_settings
sed -i 's/django.core.cache.backends.locmem.LocMemCache/django.core.cache.backends.memcached.MemcachedCache/g' /etc/openstack-dashboard/local_settings
#
sed -i "/OPENSTACK_KEYSTONE_URL/cOPENSTACK_KEYSTONE_URL = \"http://%s:5000/v3\" % OPENSTACK_HOST" /etc/openstack-dashboard/local_settings
#
sed -i "/OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT/cOPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True" /etc/openstack-dashboard/local_settings
#OPENSTACK_API_VERSIONS = {
# "identity": 3,
# "image": 2,
# "volume": 2,
#}
sed -i "s/#OPENSTACK_API_VERSIONS/OPENSTACK_API_VERSIONS/g" /etc/openstack-dashboard/local_settings
sed -i "/# \"identity\": 3,/c\\ \"identity\": 3," /etc/openstack-dashboard/local_settings
sed -i "/# \"image\": 2,/c\\ \"image\": 2," /etc/openstack-dashboard/local_settings
sed -i "/# \"volume\": 2,/c\\ \"volume\": 2," /etc/openstack-dashboard/local_settings
sed -i "/# \"compute\": 2,/a}" /etc/openstack-dashboard/local_settings
#
sed -i "/#OPENSTACK_KEYSTONE_DEFAULT_DOMAIN/cOPENSTACK_KEYSTONE_DEFAULT_DOMAIN = \"Default\"" /etc/openstack-dashboard/local_settings
sed -i "/OPENSTACK_KEYSTONE_DEFAULT_ROLE/cOPENSTACK_KEYSTONE_DEFAULT_ROLE = \"user\"" /etc/openstack-dashboard/local_settings
#OPENSTACK_NEUTRON_NETWORK = {
# ...
# 'enable_router': False,
# 'enable_quotas': False,
# 'enable_distributed_router': False,
# 'enable_ha_router': False,
# 'enable_lb': False,
# 'enable_firewall': False,
# 'enable_': False,
# 'enable_fip_topology_check': False,
#}
#
#/etc/httpd/conf.d/openstack-dashboard.conf
#cp /etc/httpd/conf.d/openstack-dashboard.conf /etc/httpd/conf.d/openstack-dashboard.conf.bak
sed -i "/WSGIScriptAlias/iWSGIApplicationGroup %{GLOBAL}" /etc/httpd/conf.d/openstack-dashboard.conf
#
systemctl restart httpd.service memcached.service
systemctl status httpd memcached
sleep 3
#Fwaas
yum install openstack-neutron-fwaas -y
neutron-db-manage --subproject neutron-fwaas upgrade head
#lbaasv2
yum install openstack-neutron-lbaas -y
neutron-db-manage --subproject neutron-lbaas upgrade head
#aas
yum install openstack-neutron-aas -y
neutron-db-manage --subproject neutron-aas upgrade head