易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 2690|回复: 0
收起左侧

openstack ussuri 安装脚本

[复制链接]
发表于 2021-3-17 20:59:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
#!/bin/bash

+ I! {. B% ?; @; I4 a. v  q) G8 C9 F5 o
#Centos8最小化部署安装openstack Ussuri

8 x; U, q2 W; d0 {- F* c4 t! j' z% N
#共两台主机,分别是一台控制节点,一台计算节点
& e3 M' a' G6 {( b; C" ^7 F+ d
#1、控制节点内存4096M。双网卡,分别为eth0:10.0.0.11,eth1:10.0.0.12

  A% v5 \; G% D' [. S
#2、计算节点内存4096M。双网卡,分别为eth0:10.0.0.31,eth1:10.0.0.32

- N$ P- i* h) f. h# V+ x7 L& p( ^4 {& |7 H/ n) C+ o
#设置阿里云yum源
# L$ A2 \' T5 z5 J) r+ h
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

+ N, o* H( r$ g0 c4 A; e5 w
rm -f /etc/yum.repos.d/CentOS-AppStream.repo /etc/yum.repos.d/CentOS-PowerTools.repo /etc/yum.repos.d/CentOS-centosplus.repo /etc/yum.repos.d/CentOS-Extras.repo && rm -rf /var/cache/yum && yum makecache && yum -y update && yum -y autoremove
; N3 T: t9 g. `  D! S8 \+ L+ j/ w, W, @

6 x- Q0 G+ I" _/ P! B" t/ F
#关闭防火墙
2 o  A8 x" d0 g0 n# _# {
systemctl stop firewalld && systemctl disable firewalld

" j0 p  F& K  h. D3 y3 C7 o) ^5 x+ y0 n
#关闭SELinux
3 t& \% X. |. @) ?! g# ?2 P
setenforce 0
  |/ U$ d1 e# b2 n) O: F( T
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
3 A9 t$ y; Y4 e3 }, P

8 N6 ?! `5 c9 ?1 {, K
#关闭swap分区
  W1 O  H1 Y5 O. {1 Q# X
swapoff -a

2 M9 f! v( r3 I
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

" ~" e) E- P4 i/ a1 E( H/ A
4 r6 N3 r5 d) P) b: s% q
#设置内核
% v+ d  w0 E7 T9 ], v
modprobe bridge
0 {$ K1 t* r* h# J% u+ I
modprobe br_netfilter

% E2 K3 H$ w- d- N6 T
cat > /etc/sysconfig/modules/neutron.modules <<EOF
- W5 M- `' a- w, W& `+ `% u0 y
#!/bin/bash
8 v& v4 p1 R* v1 M  @6 P
modprobe -- bridge

! \  g5 |& B6 b0 {: y9 `
modprobe -- br_netfilter

3 z3 @2 }, G5 @3 f: y" A; c
EOF

4 D* x; d1 b) E+ q
chmod 755 /etc/sysconfig/modules/neutron.modules && bash /etc/sysconfig/modules/neutron.modules
; V9 U. t1 F* N7 X- |& d
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
- I# s1 ?7 N0 e+ _& `4 Q7 O
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

6 _7 G2 H# A' g$ F; T* r
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
: W  D, k. T  c( W, m- Y3 o
echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf

9 `( ]& |" t$ U  P
sysctl -p

5 `6 H  ?. X0 U$ c" T  @
, r+ e4 I3 K- h3 x
#设置时间同步

* ^# h$ Y9 B: P- ]0 ?6 k
yum install -y chrony && yum -y autoremove
; n* a' Q3 m0 K# k' {
sed -i '/^pool/d' /etc/chrony.conf
/ S' f4 v' A0 v' }6 H1 x
sed -i '/^server/d' /etc/chrony.conf
. N# T3 F+ B: B+ z  p
echo "pool ntp.aliyun.com iburst" >> /etc/chrony.conf
4 s" q9 l1 U" o7 V
systemctl start chronyd.service && systemctl enable chronyd.service
' y3 K6 E: l3 p
2 X# j" r: e2 w- O; ]* Y
#控制节点 设置hostname
( E4 v0 B4 u: [# k1 X
hostnamectl set-hostname controller
9 Y) P& Z. E' b+ b+ C6 x

/ v# v2 B7 F! [# A# A, L7 x% p, u
#计算节点 设置hostname

3 C' G: i* D+ ]  l
hostnamectl set-hostname compute1
" R" a& N5 r7 f  C1 Y/ P/ o+ Y
  m9 o% h, {  \/ q' C2 S
#添加host
$ z6 H$ ~# J5 ^- {' W
echo "10.0.0.11 controller" >> /etc/hosts
0 T* X- V1 W/ C4 }  F; W3 p
echo "10.0.0.31 compute1" >> /etc/hosts
+ O' A. V- N: X% x: o3 \1 A, ~4 L7 G

( d. @; |* ~. V; D7 R6 k+ S
#安装基础组件

) \6 w3 d  b0 V
yum install -y centos-release-openstack-ussuri

9 H. U$ M4 `+ h' H6 q
yum config-manager --set-enabled PowerTools

# B; z8 @( v4 |0 q* D
yum upgrade -y

9 ~4 a6 L9 M$ @1 b9 Z, \
yum install -y python3-openstackclient

- O8 c7 A9 m+ B7 k3 a/ b+ f) {+ X. r" D8 U& o* ^6 p6 k; S
#控制节点 安装Mariadb
' m  e/ _  Q1 }$ c  `
yum install -y mariadb mariadb-server python2-PyMySQL
1 o! F, @7 l+ Q
tee /etc/my.cnf.d/openstack.cnf <<-'EOF'

+ {) f5 S1 a; _. G' ]" {
[mysqld]
/ h: {) s6 z# D) Q) t6 Y! |
bind-address = 10.0.0.11

7 V+ {. Q( I) n5 [* Y2 ?5 k0 f
default-storage-engine = innodb

. ^( z5 p3 y. x0 B
innodb_file_per_table = on
" l3 p7 U  v+ I, W; d
max_connections = 4096

" P! j# _7 e! w: S- v% u
collation-server = utf8_general_ci

' k* s  s! o9 Z/ z% }
character-set-server = utf8
$ b& W+ J" K0 H* q
EOF
0 [: J# _, J0 i0 B  l) M0 ~  x; {
systemctl enable mariadb.service && systemctl start mariadb.service

; m+ N5 n' [- A6 z
echo -e "\nY\n123456\n123456\nY\nn\nY\nY\n" | mysql_secure_installation
6 Z& j/ J2 ?( |

  |+ Z$ X& N8 t* I& |
#控制节点 安装RabbitMQ
+ g) f* \" m! G4 B: Y
yum install -y rabbitmq-server

$ \, G" r9 c; y: g0 [
systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service

5 z" }# F9 N. D
rabbitmqctl add_user openstack 123456
; o6 {3 z2 B" J; q" K- y9 X1 g% P
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

2 t+ S* x2 u$ _4 T* Z8 `8 i! Y
8 t% e% r% Y# q
#控制节点 安装Memcached
% j2 ^4 @% r9 F% \" U
yum install -y memcached python3-memcached

. z. Z3 K% \5 }5 }: o: g! U
sed -i "s/-l 127.0.0.1,::1/-l 127.0.0.1,::1,controller/g" /etc/sysconfig/memcached

+ d. [" @+ B% q9 ]) L- J3 m
systemctl enable memcached.service && systemctl start memcached.service
0 Q4 _# P( o' Q; u6 Q5 G
9 B0 D) y+ c- t4 W
#控制节点 安装Etcd

  w4 w+ m/ P3 {+ T( B/ o1 Y$ {
yum install -y etcd
# j2 b; Q& S6 \- {; i  g
rm -f /etc/etcd/etcd.conf
% i- k* i8 J4 f" f; G, Q
tee /etc/etcd/etcd.conf <<-'EOF'

  d1 B- @- R3 z) Y; _
#[Member]

0 N* D: H8 c0 i. h. J" p# C. H) [/ U
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
6 R! X4 c7 g' P. G3 h
ETCD_LISTEN_PEER_URLS="
http://10.0.0.11:2380
"
- ~5 ~8 e0 ~, M" F
ETCD_LISTEN_CLIENT_URLS="
http://10.0.0.11:2379
"
" C( i+ N" Q) H
ETCD_NAME="controller"

% w3 w7 C) D0 g
#[Clustering]

* m. a2 d! V, c- X
ETCD_INITIAL_ADVERTISE_PEER_URLS="
http://10.0.0.11:2380
"
7 D/ U1 z) K, k# h
ETCD_ADVERTISE_CLIENT_URLS="
http://10.0.0.11:2379
"
9 o& e# K6 H+ |$ r6 @, w' r9 L. n& J
ETCD_INITIAL_CLUSTER="controller=
http://10.0.0.11:2380
"

$ ^5 W; r- P& w; m5 e- a0 _
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
( Z: P2 p2 h' U1 z
ETCD_INITIAL_CLUSTER_STATE="new"
- |. T5 [" a9 @; W/ b/ T
EOF
& @/ ?$ W' N. Q8 u
systemctl enable etcd && systemctl start etcd

% ^6 h: U' d! k- r" o( X9 H9 o
; F$ g( C2 v; N8 n$ i1 R' M% j8 |! Y) L1 ^
#控制节点 安装Identity service
; c4 ^1 W! l5 F9 F4 A; x
mysql -uroot -p123456 -e "CREATE DATABASE keystone"

- P% k+ ~- {7 P% B  a
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456'"

, h3 @1 d1 z" P4 r
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456'"

2 y+ y9 ^2 ~1 j, R/ Z, z1 v& w1 \" Q
yum install -y openstack-keystone httpd python3-mod_wsgi

* K) P$ I/ {: k+ G4 r4 {: @' M
sed -i "556c connection = mysql+
pymysql://keystone:123456@controller/keystone
" /etc/keystone/keystone.conf
: J  V- _4 e( l( k1 l
sed -i "2418c provider = fernet" /etc/keystone/keystone.conf
7 M& B4 w8 h8 e, }6 [7 a$ @
su -s /bin/sh -c "keystone-manage db_sync" keystone
6 X, F" y" p2 _4 H0 i/ p9 B# C
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

2 [5 s2 F/ K( \5 \
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

! M- ~1 v. u' ^5 x( j* p
keystone-manage bootstrap --bootstrap-password 123456 \
4 t$ v- I) q4 P4 i
--bootstrap-admin-url http://controller:5000/v3/ \

+ ]0 a* Z5 ^9 h2 ?2 X# Q
--bootstrap-internal-url http://controller:5000/v3/ \
" D$ s! t' {2 ^8 E
--bootstrap-public-url http://controller:5000/v3/ \

# k* m% }0 e6 M' v8 N! N5 k# [8 z* O
--bootstrap-region-id RegionOne

' m; W  l# N6 I7 _
echo "ServerName controller" >> /etc/httpd/conf/httpd.conf

  Q; J; ]! s: R2 D; e2 a. x! D
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
  [* Y3 w, Z1 c6 v$ R
systemctl enable httpd.service && systemctl start httpd.service

! y2 K" j0 B8 u% o: m
echo "export OS_USERNAME=admin" >> /etc/profile
" A1 q/ |. s7 W/ E" }9 i/ {
echo "export OS_PASSWORD=123456" >> /etc/profile
4 S/ ^) M/ X. O& H# N1 b
echo "export OS_PROJECT_NAME=admin" >> /etc/profile

* F% _  i& w1 l: j
echo "export OS_USER_DOMAIN_NAME=Default" >> /etc/profile

9 L  m' z  K9 a4 e
echo "export OS_PROJECT_DOMAIN_NAME=Default" >> /etc/profile
7 `1 u+ {6 p& m* ?! B+ \4 N: ^* e
echo "export OS_AUTH_URL=
http://controller:5000/v3
" >> /etc/profile
1 e5 a! f1 f6 L5 n! _! A
echo "export OS_IDENTITY_API_VERSION=3" >> /etc/profile
. K6 x1 W8 A& v+ N3 C: ^
source /etc/profile
) \) j3 i! [: l! _2 u
openstack project create --domain default --description "Service Project" service

' |& ~# l% F: s) j1 R: H4 X3 h6 w
#控制节点 安装Image service

5 k- L$ @9 \& d
mysql -uroot -p123456 -e "CREATE DATABASE glance"

3 T( A. q' U! t3 M. p( m
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456'"
+ p6 j1 G$ z; n# r1 J6 O/ L5 l9 _
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456'"

3 S" r- Q. Y6 O
openstack user create --domain default --password 123456 glance

6 N8 Z) M5 }2 E) e# c+ }
openstack role add --project service --user glance admin

6 _# e9 @  b& `
openstack service create --name glance --description "OpenStack Image" image

/ G, o" W8 c8 T4 u: ?6 m+ g& g
openstack endpoint create --region RegionOne image public http://controller:9292
' ]5 }+ D: `) r; ~
openstack endpoint create --region RegionOne image internal http://controller:9292

+ f" }& T/ S5 Q8 z, E
openstack endpoint create --region RegionOne image admin http://controller:9292

+ J4 F+ L9 a) E0 z* _( N2 w# I9 L
yum install -y openstack-glance

; e9 O1 ^$ C9 y  s- i4 _8 [
sed -i "2062c connection = mysql+
pymysql://glance:123456@controller/glance
" /etc/glance/glance-api.conf
4 Y5 n( B' r. ]  x
sed -i "5034c www_authenticate_uri =
http://controller:5000
" /etc/glance/glance-api.conf
8 g. K) _7 j% h, d9 P
sed -i "5035c auth_url =
http://controller:5000
" /etc/glance/glance-api.conf
4 k. F6 \; \+ `3 K9 X/ M$ d! i3 b
sed -i "5036c memcached_servers = controller:11211" /etc/glance/glance-api.conf

1 ]# O6 D  e+ ^" V4 B
sed -i "5037c auth_type = password" /etc/glance/glance-api.conf
9 a% `5 W3 U9 ~7 _
sed -i "5038c project_domain_name = Default" /etc/glance/glance-api.conf

3 W" n. L# F1 [6 v5 Y) t+ L
sed -i "5039c user_domain_name = Default" /etc/glance/glance-api.conf
9 g' n4 E" U: ~+ u" A8 Y
sed -i "5040c project_name = service" /etc/glance/glance-api.conf
) W; J6 s$ f$ G- W
sed -i "5041c username = glance" /etc/glance/glance-api.conf

/ D" e- B6 Z( X$ U
sed -i "5042c password = 123456" /etc/glance/glance-api.conf
0 W; I; M- b' Z8 K0 S; g) t
sed -i "5678c flavor = keystone" /etc/glance/glance-api.conf

6 n& U/ |) G0 c6 R1 n
sed -i "3413c stores = file,http" /etc/glance/glance-api.conf

: u. T% {5 N' W; R2 q% Y. W
sed -i "3414c default_store = file" /etc/glance/glance-api.conf
* ]! W5 C7 k4 Z- P
sed -i "3415c filesystem_store_datadir = /var/lib/glance/images/" /etc/glance/glance-api.conf

& [, D3 p" E- T* {5 t$ i1 R4 ~
su -s /bin/sh -c "glance-manage db_sync" glance
) L8 E9 T0 H3 }  ~. t
systemctl enable openstack-glance-api.service && systemctl start openstack-glance-api.service
; L" A) g0 k; u0 A3 K

7 A5 `) n) J0 J0 N4 D& j
#控制节点 安装Placement service
# I: H4 O: J7 W: a
mysql -uroot -p123456 -e "CREATE DATABASE placement"
5 a  t4 D4 b$ G; ~
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '123456'"
, ^1 C( n6 G: K8 Y& ?
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '123456'"
; U1 Y+ N# n9 \$ h: T
openstack user create --domain default --password 123456 placement
& t0 n8 _" B0 J7 [8 ^
openstack role add --project service --user placement admin

$ E$ P& o& E- Q! y1 J1 n( |( J
openstack service create --name placement --description "Placement API" placement
5 |- P3 B1 E% r
openstack endpoint create --region RegionOne placement public http://controller:8778
1 S) ~6 u. _" s9 @* L; `( O
openstack endpoint create --region RegionOne placement internal http://controller:8778
8 U4 f6 r# A  Z( f
openstack endpoint create --region RegionOne placement admin http://controller:8778

$ x& B$ {! }* U; p. T
yum install -y openstack-placement-api

; M! F9 |% Q- F4 c5 `
sed -i "507c connection = mysql+
pymysql://placement:123456@controller/placement
" /etc/placement/placement.conf
$ G2 m! i, d+ r2 K& X
sed -i "192c auth_strategy = keystone" /etc/placement/placement.conf
5 H/ e+ i3 ~/ P( v8 h% l
sed -i "241c auth_url =
http://controller:5000/v3
" /etc/placement/placement.conf
$ l+ m: E4 t$ B+ a
sed -i "242c memcached_servers = controller:11211" /etc/placement/placement.conf
2 c! C0 l9 q% Y0 ]! b
sed -i "243c auth_type = password" /etc/placement/placement.conf
; _: X) m9 C% K) B$ Z8 [
sed -i "244c project_domain_name = Default" /etc/placement/placement.conf
% t9 m$ x9 _+ q5 ]6 X/ U* B' x! M
sed -i "245c user_domain_name = Default" /etc/placement/placement.conf
3 O  ?4 s; Y6 N" J0 W' {
sed -i "246c project_name = service" /etc/placement/placement.conf
+ i7 y! j7 `4 \- A, v/ \5 G# e. X' Y" ?% O
sed -i "247c username = placement" /etc/placement/placement.conf

& g5 t/ X) B# D$ E
sed -i "248c password = 123456" /etc/placement/placement.conf
' q4 k+ c) R, V3 V8 R$ m
su -s /bin/sh -c "placement-manage db sync" placement

9 w* R! d. l4 Q( j2 \
systemctl restart httpd

2 a2 ?% k4 _$ F9 _/ W2 {/ J. r4 g% `; ]1 @! ~. Y
#控制节点 安装Compute service
' C' ?. M1 V! ], Q/ T$ \
mysql -uroot -p123456 -e "CREATE DATABASE nova_api"

# c; n/ ?9 w, B) [4 l  t. |5 r" Y  j
mysql -uroot -p123456 -e "CREATE DATABASE nova"

1 i2 a9 k- [1 l) a0 l
mysql -uroot -p123456 -e "CREATE DATABASE nova_cell0"
# `/ Y4 p$ G7 j# H$ E8 Q- k2 _
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"

6 P# ^$ @( P! k7 _- d* ~
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456'"

! ~- Y9 n1 \9 N9 `3 j& X& f
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
% s! l4 ?" l0 E" d) X
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456'"
. v/ N) G  N4 ]. i6 o
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
  B6 L, p; x3 ]
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456'"

0 S3 o+ V4 j  q; K
openstack user create --domain default --password 123456 nova
) d& P" s( I8 @- d0 N& K
openstack role add --project service --user nova admin

. W6 R) f. Q& V' h; v! I. ^# c
openstack service create --name nova --description "OpenStack Compute" compute

0 L1 a( x+ R& K) ^
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1

  [# Y; s( @1 S/ \# E8 f0 A( _
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1

/ y9 e& H; ]7 r  F- A: e  _9 ^
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

; v7 g" X9 Q/ \7 o( u5 c
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
( Y, K/ R9 [7 B/ L, ]
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf

" f/ E; x- t3 N
sed -i "3c transport_url =
rabbit://openstack:123456@controller:5672/
" /etc/nova/nova.conf

% C4 ?/ t& G* D' |
sed -i "4c my_ip = 10.0.0.11" /etc/nova/nova.conf

+ q, i$ }- F5 ^& M9 r$ f
sed -i "1079c connection = mysql+
pymysql://nova:123456@controller/nova_api
" /etc/nova/nova.conf
4 }1 X0 q( o7 `7 O
sed -i "1622c connection = mysql+
pymysql://nova:123456@controller/nova
" /etc/nova/nova.conf

1 R* T, c% x! j  L* W1 @' g7 W
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
% E8 y+ Y: `+ p1 T3 a: N. d
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf

; D6 a6 q6 Y  w
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf
$ u* B+ G+ R8 {5 W# J7 X' l( U8 V
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf
: M. d( B  F# A8 T
sed -i "2564c auth_type = password" /etc/nova/nova.conf

' u$ a1 w9 u  r! a) ]& }
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf
5 @. x' P# n$ [3 S
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf

1 K0 ]* o$ Y. ~! G6 D% E
sed -i "2567c project_name = service" /etc/nova/nova.conf
3 w7 K- H5 \+ P2 j! c
sed -i "2568c username = nova" /etc/nova/nova.conf

2 Q% {2 M' {2 y  B- N5 W) w
sed -i "2569c password = 123456" /etc/nova/nova.conf
9 k& T7 ?# L3 c. ?0 i  D$ A1 r3 Q1 Y
sed -i "5171c enabled = true" /etc/nova/nova.conf
! H* k' o. T5 Z
sed -i '5172c server_listen = $my_ip' /etc/nova/nova.conf

8 O, v5 g- z2 ]; P" B" I/ O+ J. ^
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf

- N0 d# d4 y+ K) x1 U& J/ X
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf
9 a0 S+ {# I( {- _3 t) f
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf

' N: u, q7 k+ q9 o
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf
  f  S; u7 M/ {' d' e& C
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf

. \) E! a* `  \1 r; U
sed -i "4095c project_name = service" /etc/nova/nova.conf

7 x; F) P# b' Z2 Z) |4 w
sed -i "4096c auth_type = password" /etc/nova/nova.conf
' s# z+ r! y2 j; e+ H6 A
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf
) F4 o2 J1 H' m6 N
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
/ G% N, h& F/ W* {$ P
sed -i "4099c username = placement" /etc/nova/nova.conf
% W$ M- M! X  _+ U8 B7 J
sed -i "4100c password = 123456" /etc/nova/nova.conf
2 S. l* `: J+ n+ }* e* R% }8 [8 }
sed -i "4509c discover_hosts_in_cells_interval = 300" /etc/nova/nova.conf
+ h% Z0 j3 o( {5 S& w1 ?
su -s /bin/sh -c "nova-manage api_db sync" nova
/ A2 `  U: I( g6 Y6 I' j5 t7 f- ^3 D2 W
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
! B; t' T. d7 V1 y" k: k' c
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

- R( m. k3 C* {+ Z, t( P
su -s /bin/sh -c "nova-manage db sync" nova
4 V# k0 r( \! \) a: p2 K% F0 W+ h! S
systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service && systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

  H, _0 o$ Q1 h; G7 K. N
' Q, e) s  G0 h+ g/ o
#计算节点 安装Compute service

; Q5 z' W0 F! T5 g1 H' \
yum install -y openstack-nova-compute

9 D4 ?  Q5 r9 p' ^( q
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf
. C  f! Q0 k  h+ o' I, {
sed -i "3c transport_url =
rabbit://openstack:123456@controller
" /etc/nova/nova.conf

5 S0 k4 g, _- s- _/ k# X$ R
sed -i "4c my_ip = 10.0.0.31" /etc/nova/nova.conf
- h5 f; U. C1 Y
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf

5 c- K$ |5 k; m5 f$ W4 y
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf
" W& q9 X! w9 X2 H  h6 y
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf
+ p9 k4 ^$ q- R' o3 F
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf

& h  t' P. E1 U
sed -i "2564c auth_type = password" /etc/nova/nova.conf

% U, E; ^5 ~8 h3 }
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf
. F( |& Z" f2 Z" o
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf

0 i- v4 P: f  ?9 @8 s
sed -i "2567c project_name = service" /etc/nova/nova.conf
' V# [. h, Z0 l- [' ]8 W
sed -i "2568c username = nova" /etc/nova/nova.conf
. m% I$ P% E7 D0 U
sed -i "2569c password = 123456" /etc/nova/nova.conf

; ?+ Z6 E' H7 B* k
sed -i "5171c enabled = true" /etc/nova/nova.conf

3 d% g9 H2 [$ G9 A* {4 G- ^# [8 V0 I
sed -i "5172c server_listen = 0.0.0.0" /etc/nova/nova.conf
) z* N: ?2 F# `$ p2 p3 ^
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf

6 y# b( Z; k( N& K- |) Q+ ]6 V
sed -i "5174c novncproxy_base_url =
http://controller:6080/vnc_auto.html
" /etc/nova/nova.conf

; `8 N- R) W8 J' n
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf
. r# j. n$ e! S! ^
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf
  i$ K: ~& ^% i* p; ~$ R
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf

9 c8 _" R8 w: _. c3 d6 ^
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf
7 U. y& B9 M( E9 W: @% @' X$ Q
sed -i "4095c project_name = service" /etc/nova/nova.conf

( w( Q( P* i8 Y7 c$ Q) |/ t
sed -i "4096c auth_type = password" /etc/nova/nova.conf
7 |' e+ |3 I, ?, L  ?4 B
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf

3 l* v4 M4 j6 l
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
* [$ ^( p, k  B6 m2 R4 E
sed -i "4099c username = placement" /etc/nova/nova.conf
# r  r* l& N4 H/ A1 `
sed -i "4100c password = 123456" /etc/nova/nova.conf
( K& H) n1 k: Z3 h* Y) n" F

4 }8 r, o: Q% j
#执行命令,查看是否支持CPU虚拟化,如果大于0则支持。
7 y- e8 r% w+ M' H: ^$ {
egrep -c '(vmx|svm)' /proc/cpuinfo
/ g* w! M" x) D  p3 J3 Q; L4 P7 b
#如果不支持的话还需要执行下面的命令

$ }! m) e6 F  L$ ?6 t1 l- \# _
sed -i "2722c virt_type = qemu" /etc/nova/nova.conf
' ^# z; q; R! B! j' ]

, E0 `% ]7 d7 w5 K+ V% R5 O
systemctl enable libvirtd.service openstack-nova-compute.service && systemctl start libvirtd.service openstack-nova-compute.service

$ U0 |6 B* D* G- r3 b8 p
' ^8 Q8 ~( A4 N: L& Q
#控制节点 计算节点从注册到发现会有延迟,根据discover_hosts_in_cells_interval 配置轮询发现时间,可以执行下面命令手动发现计算节点

- ]# u1 V8 ~- t, X# q$ ^
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
+ E- v5 m! w" a$ I+ V
' l, F2 S- T4 g8 S, x
#控制节点 安装Networking service

/ u1 z, d: P1 I; [6 m+ [4 D) l
mysql -uroot -p123456 -e "CREATE DATABASE neutron"
6 v8 z6 R5 W( J* \. W: Q3 M
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456'"

, F0 Y9 {. w1 ^0 [" Y6 |8 F/ k- F' M
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456'"
$ B+ }+ p( q+ M; t  b, N
openstack user create --domain default --password 123456 neutron
3 ~5 V- i2 G9 T2 w
openstack role add --project service --user neutron admin
5 z9 o  ]+ {, ^- A+ o% C
openstack service create --name neutron --description "OpenStack Networking" network

  v2 Y- a8 l" M- g
openstack endpoint create --region RegionOne network public http://controller:9696

3 p+ w( N' Y/ Q/ Z: w
openstack endpoint create --region RegionOne network internal http://controller:9696

' A# n  _6 x" w7 k1 a8 Q+ a
openstack endpoint create --region RegionOne network admin http://controller:9696
: G2 W1 o2 F, @; N/ q' V
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

2 t, U' p. h& ~# }
#配置服务器组件

9 K! A0 x: P  i6 L9 D: _* ]* Z
sed -i "2c core_plugin = ml2" /etc/neutron/neutron.conf
1 r7 M7 y& a- [
sed -i "3c service_plugins = router" /etc/neutron/neutron.conf

. R. ~( ^. f5 T2 |; S" G7 A4 [
sed -i "4c allow_overlapping_ips = true" /etc/neutron/neutron.conf

5 f1 q* k; c3 b3 N" i6 L) F
sed -i "5c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf

  A' ~9 e& m+ u
sed -i "6c auth_strategy = keystone" /etc/neutron/neutron.conf
5 k, o; ^" K" k  ?7 N( D" v
sed -i "7c notify_nova_on_port_status_changes = true" /etc/neutron/neutron.conf

+ o. Z! X8 M. w4 ^, s
sed -i "8c notify_nova_on_port_data_changes = true" /etc/neutron/neutron.conf

" g/ t& B0 R8 v+ h1 i3 h5 H
sed -i "254c connection = mysql+
pymysql://neutron:123456@controller/neutron
" /etc/neutron/neutron.conf
6 ^* @; Z! N. T8 c
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf
& [  m5 G5 e" R, }, S; G) U& j
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf
2 e# \" _: `. j5 ?
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf

" u" y) ^  \2 ^, N* l5 G* R5 ~4 x
sed -i "362c auth_type = password" /etc/neutron/neutron.conf
  T1 B! N0 k: i' H- x: c
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf
3 L, S- f9 ]- |5 X/ ]! j
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf
! I3 s, ]. P0 \$ a& x1 K8 ?* k
sed -i "365c project_name = service" /etc/neutron/neutron.conf
: g/ N" B. e1 \! E/ U+ S$ _* Z
sed -i "366c username = neutron" /etc/neutron/neutron.conf

6 d9 ^0 \$ t% V- c" c- D
sed -i "367c password = 123456" /etc/neutron/neutron.conf
2 o# N  Q! G2 ]3 F
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf
% V, S" Q1 A" G* p* r# @
echo "[nova]" >> /etc/neutron/neutron.conf
. J/ i6 Q( K& |  z
echo "auth_url =
http://controller:5000
" >> /etc/neutron/neutron.conf
/ }  m7 @% D) E6 g
echo "auth_type = password" >> /etc/neutron/neutron.conf

/ I; o# Y. W1 f2 ^4 _
echo "project_domain_name = default" >> /etc/neutron/neutron.conf

7 F6 y6 h; y; P- N+ X
echo "user_domain_name = default" >> /etc/neutron/neutron.conf

- t3 v! D0 ?# a! A% ~# ?6 a
echo "region_name = RegionOne" >> /etc/neutron/neutron.conf

& p! U1 s; `: T. h; h, A- Z" p
echo "project_name = service" >> /etc/neutron/neutron.conf
$ U$ D! E) @8 j% F' b# Y4 i/ L& p
echo "username = nova" >> /etc/neutron/neutron.conf
8 A% i  f+ r) N' d- R7 K
echo "password = 123456" >> /etc/neutron/neutron.conf
+ n( Z5 V& {( l6 M+ v. Q
#配置Modular Layer 2 (ML2) plug-in

' K) G. u- X" V$ X, \" R
echo "[ml2]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

9 i; e8 U1 Z2 a  ?; w/ I- c; l# u
echo "type_drivers = flat,vlan,vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

. |# r' ~( S. y  f* {+ Z: I1 j
echo "tenant_network_types = vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

8 L8 G( y  Z2 w+ D1 A
echo "mechanism_drivers = linuxbridge,l2population" >> /etc/neutron/plugins/ml2/ml2_conf.ini

5 ~' ~. o0 J# ~  f
echo "extension_drivers = port_security" >> /etc/neutron/plugins/ml2/ml2_conf.ini
+ F7 A- K0 [9 P
echo "[ml2_type_flat]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
3 }7 R1 x) s7 D, F8 S
echo "flat_networks = provider" >> /etc/neutron/plugins/ml2/ml2_conf.ini

- m  C3 V8 o8 U  S
echo "vni_ranges = 1:1000" >> /etc/neutron/plugins/ml2/ml2_conf.ini
: W. F& ?5 ~3 ~5 L
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
4 k6 [: W, j" B7 H! b
echo "enable_ipset = true" >> /etc/neutron/plugins/ml2/ml2_conf.ini
  ~4 [# V0 y, m$ ^$ q
#配置Linux bridge agent

3 w& o6 v5 ?$ _% K
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
# _2 l- Y( y! C
#eth1为另外第二张网卡

; O& y3 r: {& O* C- ?+ m+ H* F
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

# G& c7 H$ @5 G% @
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
$ z% |1 b2 r: p- y7 g/ A3 E
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

7 P  D; L8 t! }8 A6 ]) w
#10.0.0.12为第二张网卡的IP
  g4 \% C, Y( v9 e- H( j
echo "local_ip = 10.0.0.12" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
1 X% I) ?& N" l% c
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

0 p. \2 r- L! ~0 ^# h
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
3 h' H- X: _2 K0 b/ q
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

& f( Q0 n# S' H; I
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
! n- K9 q3 t7 ~. Y; G
#配置layer-3 agent
1 j2 W0 l7 X. K4 m1 ~( d
sed -i "2c interface_driver = linuxbridge" /etc/neutron/l3_agent.ini
) D1 `6 ]# k% l! F# M
#配置DHCP agent
; W/ k  \# ]5 y; K- q0 I. g4 r
sed -i "2c interface_driver = linuxbridge" /etc/neutron/dhcp_agent.ini

  o$ d' G* Y& N+ F7 ?
sed -i "3c dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq" /etc/neutron/dhcp_agent.ini

& h( }/ q4 g1 j5 H- U2 k4 Z
sed -i "4c enable_isolated_metadata = true" /etc/neutron/dhcp_agent.ini

$ p8 B0 [9 S) z) `( ^6 j5 u; C
#配置metadata agent
0 h" W- P/ _3 t4 t) u# E& m7 {
sed -i "2c nova_metadata_host = controller" /etc/neutron/metadata_agent.ini

4 V" V( d2 |# t, z" d6 q5 s
sed -i "3c metadata_proxy_shared_secret = 123456" /etc/neutron/metadata_agent.ini
! A' ?% F" g1 h8 W- R+ S
#配置计算服务使用网络服务
' i0 I' @& m" C$ z7 P+ D
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf

* d5 w) l  c3 x  T: I2 w& [
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
" c/ i2 f% a2 N$ o. p& p" p( }
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf

: u2 z$ ?" ^, m! }8 w4 ~
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf

2 n. J; a0 Z% y9 \$ b0 {3 c
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf
/ u! B/ a; j% m6 K6 [
sed -i " 3339c project_name = service" /etc/nova/nova.conf

! c  w% j* o2 B  A: u
sed -i " 3340c username = neutron" /etc/nova/nova.conf

# W( j% ^) Y) r
sed -i " 3341c password = 123456" /etc/nova/nova.conf
/ H1 l1 W6 n% m' ~3 e, ?  ^0 P' O
sed -i " 3342c service_metadata_proxy = true" /etc/nova/nova.conf
7 A0 ]$ n9 H9 k* N% Z
sed -i " 3343c metadata_proxy_shared_secret = 123456" /etc/nova/nova.conf
% ^- S6 L; W/ U7 N1 f& u
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

" ]( r' v  Q+ H7 `% c
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

$ e6 h& ?# u. r$ G7 |0 L
systemctl restart openstack-nova-api.service
/ I1 m2 B0 k8 n7 {) `; k
systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service && systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
9 e% h$ W+ j6 x, h% }
systemctl enable neutron-l3-agent.service && systemctl start neutron-l3-agent.service

/ ~% r2 R# {$ N5 [9 C, x
) c, F: U* m7 Z& S
#计算节点 安装Networking service

0 F& e7 ?( E9 W. ]; x# }7 X
yum install -y openstack-neutron-linuxbridge ebtables ipset

6 K% J0 S! l7 ^! ^6 V
sed -i "2c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf

8 p& k+ ~  f1 S' D
sed -i "3c auth_strategy = keystone" /etc/neutron/neutron.conf
3 Q/ H7 T5 r3 T, |$ P
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf
3 q& y8 v4 T4 f- m, s
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf

0 l. O6 R# F: J* k* U
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf

, ~" K( p# p$ t9 w
sed -i "362c auth_type = password" /etc/neutron/neutron.conf

. ]) N5 V( I  P/ N6 W" [
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf
- S0 t8 m) H4 R3 {! a  k) W/ U& f
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf

2 M. `, S6 I  N5 Z0 y: ?) O3 y
sed -i "365c project_name = service" /etc/neutron/neutron.conf
, H& T. @: S2 B% m
sed -i "366c username = neutron" /etc/neutron/neutron.conf
% u( X, R( k  n: z
sed -i "367c password = 123456" /etc/neutron/neutron.conf
0 F7 m& m7 T  ]% s
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf
4 X$ z4 P  b( r( I; O
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

% a: h2 r& ?# Y* W  R. t
#eth1为另外第二张网卡
3 I$ r1 U$ U' ?4 Q
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

2 f2 Q. y# d" B2 n9 n! w# |' u  h
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

, D5 @" F# K" N7 m
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

) w' A1 @3 \% ~4 I
#10.0.0.32为第二张网卡的IP

5 @9 G- }+ W$ L2 G* k
echo "local_ip = 10.0.0.32" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
# ^. Y. s3 _( o! O& }" ]) `, f
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
3 t& s" c; V* ]: y4 |( \  }
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

" W4 I4 }$ a" i# o
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

3 z8 Y% {) F6 `0 D, W
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

1 \) ~0 Q( u: O* \; j
#配置计算服务使用网络服务
0 }9 o* j1 _/ u
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf
7 ?0 s' {8 M# c0 G2 j2 y
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
+ Y3 a  a3 ~: ^- w# B$ t" y
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf

  h5 a3 R' Y5 p0 G' ?" d
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf
$ h3 u; }% A* u" Z! y* i
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf
8 d3 t4 U" H5 X
sed -i " 3339c project_name = service" /etc/nova/nova.conf

) Z8 k( j% [, a8 k+ I/ o/ Z
sed -i " 3340c username = neutron" /etc/nova/nova.conf
! V9 C* [% i, [1 Z4 d- R9 X
sed -i " 3341c password = 123456" /etc/nova/nova.conf
1 q) W& D+ v3 J; w, P
systemctl restart openstack-nova-compute.service
2 h' B8 M, t9 A- m5 B; ]' I
systemctl enable neutron-linuxbridge-agent.service && systemctl start neutron-linuxbridge-agent.service

# p6 t( v8 n; f/ T- Q* s. j
% B9 Q) n5 ~/ f$ h! g
#控制节点 安装Dashboard

9 h% i/ ]& K& _5 i6 i0 t' r' a
yum install -y openstack-dashboard

$ l( }0 Z: r& O8 ?0 D+ P* M
sed -i '118c OPENSTACK_HOST = "controller"' /etc/openstack-dashboard/local_settings

' c! Z3 a( N- Q
sed -i "39c ALLOWED_HOSTS = ['*']" /etc/openstack-dashboard/local_settings

( U) M7 W: t# S* ?3 |7 ]
sed -i "104c SESSION_ENGINE = 'django.contrib.sessions.backends.cache'" /etc/openstack-dashboard/local_settings
+ y+ p1 a  m+ A& b
sed -i "94c CACHES = {" /etc/openstack-dashboard/local_settings
6 s% O' _9 A3 ?& F
sed -i "95c 'default': {" /etc/openstack-dashboard/local_settings
) {* j+ \) E3 N
sed -i "96c 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'," /etc/openstack-dashboard/local_settings
6 T+ d6 X% j- y: `
sed -i "97c 'LOCATION': 'controller:11211'," /etc/openstack-dashboard/local_settings

& y: U6 l" E. {4 p3 b
sed -i "98c }" /etc/openstack-dashboard/local_settings
) w" L, R  b& d; n5 m  O
sed -i "99c }" /etc/openstack-dashboard/local_settings

" C' Q$ M* h. q
sed -i '119c OPENSTACK_KEYSTONE_URL = "
http://%s:5000/v3
" % OPENSTACK_HOST' /etc/openstack-dashboard/local_settings

7 c7 }3 J/ e( B" N2 a' x/ d9 ^* Z9 P
echo 'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True' >> /etc/openstack-dashboard/local_settings

( O( r& S3 J  K( Q* C' B; G
echo 'OPENSTACK_API_VERSIONS = {' >> /etc/openstack-dashboard/local_settings
: h" N( i% l; a5 D. h" ]
echo '  "identity": 3,' >> /etc/openstack-dashboard/local_settings

3 J' H. a$ F) ?0 t: d" i: [; Z1 o
echo '  "image": 2,' >> /etc/openstack-dashboard/local_settings

, G# g+ o, S9 N% b$ O+ S9 P# i# v
echo '  "volume": 3' >> /etc/openstack-dashboard/local_settings

9 C% s  c7 K: H9 M. Z) W+ |
echo '}' >> /etc/openstack-dashboard/local_settings
" b1 L9 V" ]( L) ~
echo 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"' >> /etc/openstack-dashboard/local_settings
, O' a! h7 Y" S1 Y. c" K+ K# D: r
echo 'OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"' >> /etc/openstack-dashboard/local_settings
! k" x* w# d/ K) ]& W8 J" q
sed -i '123c TIME_ZONE = "Asia/Shanghai"' /etc/openstack-dashboard/local_settings

# q3 n3 N( e: T$ T8 B% n! ~
echo "WEBROOT = '/dashboard/'" >> /etc/openstack-dashboard/local_settings
, F5 j8 [. X0 E, ^; r0 A  g+ v
echo 'WSGIApplicationGroup %{GLOBAL}' >> /etc/httpd/conf.d/openstack-dashboard.conf
' Z8 w0 B" F8 O: G- p
systemctl restart httpd.service memcached.service

+ d" g6 o/ k# F4 q7 [. e( q8 [# K5 \$ D
#安装完成,可访问
http://10.0.0.11/dashboard/
查看
% F& m* @" N* O8 ]+ F( V
8 u4 [8 Z4 m1 f2 C5 [* e
+ _% y% J- u' U( S4 y3 w& {0 Q6 J+ |

' [$ L9 }  ^4 y0 M  P' j0 I) }5 n9 J0 U3 V. P& L) i$ X% k  d

. D9 O0 a9 @, |6 A* E* _2 P

8 A# h7 j: s% X: D$ \4 S4 b

总结

到此这篇关于Centos8最小化部署安装OpenStack Ussuri的详细教程的文章就介绍到这了,更多相关Centos8最小化部署安装OpenStack Ussuri内容请搜索脚本之家以前的文章或继续浏览下面

您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:28 , Processed in 0.064659 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表