sed -i 's/\(^\|#\)ETCD_DATA_DIR=.\+/ETCD_DATA_DIR="\/var\/lib\/etcd\/default\.etcd"/g' /etc/etcd/etcd.conf
sed -i 's/\(^\|#\)ETCD_LISTEN_PEER_URLS=.\+/ETCD_LISTEN_PEER_URLS="http:\/\/192.168.200.11:2380"/g' /etc/etcd/etcd.conf
sed -i 's/\(^\|#\)ETCD_LISTEN_CLIENT_URLS=.\+/ETCD_LISTEN_CLIENT_URLS="http:\/\/192.168.200.11:2379"/g' /etc/etcd/etcd.conf
sed -i 's/\(^\|#\)ETCD_NAME=.\+/ETCD_NAME="controller"/g' /etc/etcd/etcd.conf
sed -i 's/\(^\|#\)ETCD_INITIAL_ADVERTISE_PEER_URLS=.\+/ETCD_INITIAL_ADVERTISE_PEER_URLS="http:\/\/192.168.200.11:2380"/g' /etc/etcd/etcd.conf
sed -i 's/\(^\|#\)ETCD_ADVERTISE_CLIENT_URLS=.\+/ETCD_ADVERTISE_CLIENT_URLS="http:\/\/192.168.200.11:2379"/g' /etc/etcd/etcd.conf
sed -i 's/\(^\|#\)ETCD_INITIAL_CLUSTER=.\+/ETCD_INITIAL_CLUSTER="controller=http:\/\/192.168.200.11:2380"/g' /etc/etcd/etcd.conf
sed -i 's/\(^\|#\)ETCD_INITIAL_CLUSTER_TOKEN=.\+/ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"/g' /etc/etcd/etcd.conf
sed -i 's/\(^\|#\)ETCD_INITIAL_CLUSTER_STATE=.\+/ETCD_INITIAL_CLUSTER_STATE="new"/g' /etc/etcd/etcd.conf
grep -vE '^#' /etc/etcd/etcd.conf
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
FLUSH PRIVILEGES;
EXIT;
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
FLUSH PRIVILEGES;
EXIT;
openstack user create --domain default --password GLANCE_PASS glance
openstack role add --project service --user glance admin
openstack service create --name glance \
--description "OpenStack Image" image
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
IDENTIFIED BY 'PLACEMENT_DBPASS';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
IDENTIFIED BY 'PLACEMENT_DBPASS';
FLUSH PRIVILEGES;
EXIT;
openstack user create --domain default --password NOVA_PASS nova
openstack role add --project service --user nova admin
openstack service create --name nova \
--description "OpenStack Compute" compute
openstack compute service list --service nova-compute
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
openstack compute service list
nova-status upgrade check
mysql
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'NEUTRON_DBPASS';
FLUSH PRIVILEGES;
EXIT;
openstack user create --domain default --password NEUTRON_PASS neutron
openstack role add --project service --user neutron admin
openstack service create --name neutron \
--description "OpenStack Networking" network
systemctl restart httpd.service memcached.service
systemctl status httpd.service memcached.service
mysql
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';
FLUSH PRIVILEGES;
EXIT;
openstack user create --domain default --password CINDER_PASS cinder
openstack role add --project service --user cinder admin
CREATE DATABASE manila;
GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'localhost' \
IDENTIFIED BY 'MANILA_DBPASS';
GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'%' \
IDENTIFIED BY 'MANILA_DBPASS';
FLUSH PRIVILEGES;
EXIT;
openstack user create --domain default --password MANILA_PASS manila
openstack role add --project service --user manila admin
openstack service create --name manila \
--description "OpenStack Shared File Systems" share
openstack service create --name manilav2 \
--description "OpenStack Shared File Systems V2" sharev2
CREATE DATABASE octavia;
GRANT ALL PRIVILEGES ON octavia.* TO 'octavia'@'localhost' IDENTIFIED BY 'OCTAVIA_DBPASS';
GRANT ALL PRIVILEGES ON octavia.* TO 'octavia'@'%' IDENTIFIED BY 'OCTAVIA_DBPASS';
FLUSH PRIVILEGES;
openstack user create --domain default --password OCTAVIA_PASS octavia
openstack role add --project service --user octavia admin
openstack service create --name octavia \
--description "OpenStack Octavia" load-balancer
# 创建机型
openstack flavor create --id auto --ram 1024 --disk 3 --vcpus 1 --private m1.amphora -f value -c id
amp_flavor_id=$(openstack flavor show m1.amphora -f value -c id)
# 修改配置文件
openstack-config --set /etc/octavia/octavia.conf 'controller_worker' 'amp_flavor_id' "$amp_flavor_id"
# 创建负载管理网络和子网
openstack network create lb-mgmt-net
openstack subnet create --subnet-range 172.16.0.0/24 --network lb-mgmt-net lb-mgmt-subnet
# 创建负载管理网络防火墙和规则
openstack security group create lb-mgmt-sec-grp
openstack security group rule create --protocol icmp lb-mgmt-sec-grp
openstack security group rule create --protocol tcp --dst-port 22 lb-mgmt-sec-grp
openstack security group rule create --protocol tcp --dst-port 9443 lb-mgmt-sec-grp
# 创建负载监控管理网络防火墙和规则
openstack security group create lb-health-mgr-sec-grp
openstack security group rule create --protocol udp --dst-port 5555 lb-health-mgr-sec-grp
# 创建负载监控管理接口(绑定到物理机的接口)
MGMT_PORT_ID=$(openstack port create --security-group lb-health-mgr-sec-grp --device-owner Octavia:health-mgr --host=$(hostname) -c id -f value --network lb-mgmt-net octavia-health-manager-listen-port)
# 修改配置文件
## 配置引导网络
OCTAVIA_AMP_NETWORK_ID=$(openstack network show lb-mgmt-net -f value -c id)
openstack-config --set /etc/octavia/octavia.conf 'controller_worker' 'amp_boot_network_list' "$OCTAVIA_AMP_NETWORK_ID"
## 配置监控管理
MGMT_PORT_IP=$(openstack port show -f value -c fixed_ips $MGMT_PORT_ID | awk '{FS=",| "; gsub(",",""); gsub("'\''",""); for(i = 1; i <= NF; ++i) {if ($i ~ /^ip_address/) {n=index($i, "="); if (substr($i, n+1) ~ "\\.") print substr($i, n+1)}}}')
openstack-config --set /etc/octavia/octavia.conf 'health_manager' 'controller_ip_port_list' "$MGMT_PORT_IP:5555"
openstack-config --set /etc/octavia/octavia.conf 'health_manager' 'bind_ip' "$MGMT_PORT_IP"
openstack-config --set /etc/octavia/octavia.conf 'health_manager' 'bind_port' '5555'
## 配置防火墙
OCTAVIA_MGMT_SEC_GRP_ID=$(openstack security group show lb-mgmt-sec-grp -f value -c id)
openstack-config --set /etc/octavia/octavia.conf 'controller_worker' 'amp_secgroup_list' "$OCTAVIA_MGMT_SEC_GRP_ID"
# 修改dhcp文件
sudo mkdir -m755 -p /etc/dhcp/octavia
echo 'request subnet-mask,broadcast-address,interface-mtu;
do-forward-updates false;
' > /etc/dhcp/octavia/dhclient.conf
MGMT_PORT_MAC=$(openstack port show -c mac_address -f value $MGMT_PORT_ID)
NETID=$(openstack network show lb-mgmt-net -c id -f value)
BRNAME=brq$(echo $NETID|cut -c 1-11)
# 创建接口
sudo ip link add o-hm0 type veth peer name o-bhm0
# 添加接口到负载管理网络的桥接接口中
sudo brctl addif $BRNAME o-bhm0
# 开启接口
sudo ip link set o-bhm0 up
# 设置mac值
sudo ip link set dev o-hm0 address $MGMT_PORT_MAC
# 获取IP
sudo dhclient -v o-hm0 -cf /etc/dhcp/octavia/dhclient.conf