易陆发现互联网技术论坛

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

openstack ussuri 安装脚本

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

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

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

x
#!/bin/bash

- I3 c* x& ]4 i- h; O) b
2 |( N& {' N7 }! F. R6 Q: o; }  T  C
#Centos8最小化部署安装openstack Ussuri
  C. y: ?- [% r% o
#共两台主机,分别是一台控制节点,一台计算节点
& g8 E0 `. Q6 j% d
#1、控制节点内存4096M。双网卡,分别为eth0:10.0.0.11,eth1:10.0.0.12

8 J2 U1 O8 O3 ]- }( X9 E& r; B5 i
#2、计算节点内存4096M。双网卡,分别为eth0:10.0.0.31,eth1:10.0.0.32
) m5 K! j0 t2 J5 K8 c, U  \7 w
9 k& Z8 |, T* Z# n  w
#设置阿里云yum源

4 z0 i2 a- H# Y: b
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

' G2 l: H+ k' O
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
. ~4 H! y7 T" S* X- o% _, D

7 `! R/ Q3 x0 l
#关闭防火墙

: F- e  c9 i3 }/ V1 B
systemctl stop firewalld && systemctl disable firewalld

! X% e) f+ @9 a% S# a$ ~' F7 D2 [6 f& s, i0 W
#关闭SELinux
7 A: `3 q; w& g5 m
setenforce 0

" G8 {& _. K) ?1 j
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
7 X  A5 i; F* Q# G! ^

! c7 s  h( V2 z0 r0 r
#关闭swap分区
$ J9 q0 L5 Q; d7 I# U- S% n* a
swapoff -a

: F8 C/ l+ ]$ }! c! ~, W# h) ^
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

  f1 ^6 f! f$ `' c5 M' L: O0 ]4 k! l% n3 \( c
#设置内核
# B7 E5 @/ Q4 `
modprobe bridge
0 W. ?7 Y. P3 [. b7 X4 Y. r
modprobe br_netfilter
, |) j* f( Y5 `! F
cat > /etc/sysconfig/modules/neutron.modules <<EOF

( w8 ^/ a; G/ t
#!/bin/bash

* m1 z) ~; ?/ k$ ?# E$ L4 O6 e
modprobe -- bridge
* M) B$ {6 {9 S
modprobe -- br_netfilter

! A% m7 b  O, p$ d
EOF
( W/ c9 y4 c# }1 t
chmod 755 /etc/sysconfig/modules/neutron.modules && bash /etc/sysconfig/modules/neutron.modules

, e- D# K& a1 Y; g" X3 t
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
) C* D8 f1 I  `( b* c, i
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

' P& j  @7 C2 a) i0 j; M
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
! c3 N# E; t" w; H/ w6 m  z5 b
echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf

# Y8 v1 O' f, M
sysctl -p
/ A  E" x. G0 Z1 O1 V. G

6 {7 X  s$ N) }+ o% h! }
#设置时间同步
) i; W  x) @& U0 q+ u$ I; N& A
yum install -y chrony && yum -y autoremove

. A+ \7 E$ X1 B' i7 l$ ?
sed -i '/^pool/d' /etc/chrony.conf
& S: \7 L8 v+ ?$ ?  T: e
sed -i '/^server/d' /etc/chrony.conf
0 C3 r& n" v' e2 y
echo "pool ntp.aliyun.com iburst" >> /etc/chrony.conf
4 m9 P, M3 E* M% _/ u0 }, |0 N
systemctl start chronyd.service && systemctl enable chronyd.service
3 [' g' h7 {- D

# M9 U/ N5 M5 O, W# M
#控制节点 设置hostname

6 b5 e. t, r! \
hostnamectl set-hostname controller

( h2 f" d1 O9 H4 [$ m$ \4 m/ i
: x  n$ y& h6 y4 V; M+ r
#计算节点 设置hostname

" _1 s/ V. Z& C6 \) u3 Y, k- p
hostnamectl set-hostname compute1

% J. F$ v; g. z4 ]: T
* J0 k  h2 Y7 c* W  n3 G, M
#添加host

1 f/ A3 H# b# |' `, L
echo "10.0.0.11 controller" >> /etc/hosts
8 u' T& e5 a5 V2 t
echo "10.0.0.31 compute1" >> /etc/hosts
8 s/ H1 ~) R8 P3 G( O
, Z1 q$ w% t; ?  F
#安装基础组件
7 C9 I+ a0 y9 p  B) x& ]
yum install -y centos-release-openstack-ussuri
3 i( z' ^9 |, Y! C1 H
yum config-manager --set-enabled PowerTools

* f" J+ p5 A) |& A' z" D
yum upgrade -y

, \' @. [1 J( J0 o+ M
yum install -y python3-openstackclient

, H# i9 g8 U* Y! I* h3 N  y
/ j8 Y- v+ J+ M" S* o$ D$ `! T
#控制节点 安装Mariadb

6 e# V0 K8 c" U) G% ]0 `
yum install -y mariadb mariadb-server python2-PyMySQL

* W5 }* F& `, a8 l$ D
tee /etc/my.cnf.d/openstack.cnf <<-'EOF'

; @1 C0 v( a6 g( x
[mysqld]
- e. n/ b/ C0 f
bind-address = 10.0.0.11

2 D$ F  R; P0 T4 Q# W
default-storage-engine = innodb
, X- L) K9 M/ J6 `- E& \
innodb_file_per_table = on

9 R. c5 F9 Z* F, Q5 N! u. U
max_connections = 4096
/ L" j  {7 V, u
collation-server = utf8_general_ci
. n* z8 P0 c6 ?- g8 ]2 {% p0 Q' b
character-set-server = utf8
: Q$ Q  p' \  z# t* i1 s* N- y
EOF
# S5 U. y8 {& ]! n/ y# {$ f; q! J
systemctl enable mariadb.service && systemctl start mariadb.service

, R) q  v& T5 e( }5 e
echo -e "\nY\n123456\n123456\nY\nn\nY\nY\n" | mysql_secure_installation

  d8 s7 d6 j& s: r3 B7 T6 m4 Z! R2 j3 Y; Z! _
#控制节点 安装RabbitMQ
* n$ R! Y7 a9 i! R* w: V- A
yum install -y rabbitmq-server
  G' K& s; Z) j! @! r# I
systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service

" D6 H- g7 v7 r) s* i' V5 o& I
rabbitmqctl add_user openstack 123456
9 w% T" c( a3 y8 x( n: X- Y7 {
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

2 z: v4 j( U: j7 [' v: W/ G; v: H$ ~  o
#控制节点 安装Memcached

* ~$ s9 C4 u3 {! R% `4 p" G+ r
yum install -y memcached python3-memcached
  w5 v% \+ L, J2 {8 N5 f3 n/ `' W- j
sed -i "s/-l 127.0.0.1,::1/-l 127.0.0.1,::1,controller/g" /etc/sysconfig/memcached
. M& a- ~! I1 ^3 M) h
systemctl enable memcached.service && systemctl start memcached.service

1 L2 U, m  z9 |, y
# m5 Z2 m! [0 J5 t+ c
#控制节点 安装Etcd

0 J; c8 w9 I+ P' L: h
yum install -y etcd

! c  |1 v, F4 n/ C% r
rm -f /etc/etcd/etcd.conf
' Z$ c5 O6 B; P3 j
tee /etc/etcd/etcd.conf <<-'EOF'

; I+ ]) `) b- B* L, O, ?1 M
#[Member]
3 a* i$ B5 E8 n. H+ d
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
+ a8 O2 L( ]  S% s  ]
ETCD_LISTEN_PEER_URLS="
http://10.0.0.11:2380
"

8 p& \( ~( n3 d
ETCD_LISTEN_CLIENT_URLS="
http://10.0.0.11:2379
"
% J$ N0 }7 f6 P+ ~: I; S
ETCD_NAME="controller"

- m# a0 P1 `' D
#[Clustering]

; z+ T  ?8 v: m+ d3 E
ETCD_INITIAL_ADVERTISE_PEER_URLS="
http://10.0.0.11:2380
"
- E! N! n4 X* v7 M/ t# R
ETCD_ADVERTISE_CLIENT_URLS="
http://10.0.0.11:2379
"
5 v' y' S$ K! S6 H9 }8 `2 K. _
ETCD_INITIAL_CLUSTER="controller=
http://10.0.0.11:2380
"
7 m" Q% S- V5 T( [% B: d
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
# S0 e' R; S. a' m) c, m( E
ETCD_INITIAL_CLUSTER_STATE="new"

7 [% ?- W, B! Z7 V7 n
EOF
9 e" R9 c' M1 T9 L2 B1 D- I
systemctl enable etcd && systemctl start etcd

7 k) a9 e8 \+ i3 s1 i, S! v4 x7 k, f8 B
#控制节点 安装Identity service

# D3 V$ C, L# {. w0 o" ?3 J& p
mysql -uroot -p123456 -e "CREATE DATABASE keystone"

  r) s0 V# z2 [; f
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456'"

% l) J( M# F# W/ u
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456'"

. Y5 w/ X  b# @; v- t' I
yum install -y openstack-keystone httpd python3-mod_wsgi
8 m8 X  V3 D/ _. s5 N- u
sed -i "556c connection = mysql+
pymysql://keystone:123456@controller/keystone
" /etc/keystone/keystone.conf
; ^" p( {# v$ H0 Z5 O. U2 w: L! [* N
sed -i "2418c provider = fernet" /etc/keystone/keystone.conf

/ M. u4 b. x2 D. x
su -s /bin/sh -c "keystone-manage db_sync" keystone

2 g( k) v$ \6 N9 }7 V' p8 T# x
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
0 w6 q$ m# _* h( B/ ^& `
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

: p# f! O* ~' A- m1 @
keystone-manage bootstrap --bootstrap-password 123456 \

6 w- s) S2 J8 [% B
--bootstrap-admin-url http://controller:5000/v3/ \
  K8 s8 p/ m5 q) O& i3 |- H# ^8 N3 b
--bootstrap-internal-url http://controller:5000/v3/ \

/ T" D! k. T. Y
--bootstrap-public-url http://controller:5000/v3/ \
! Z0 j/ c2 `  Z' b, Q7 y: L
--bootstrap-region-id RegionOne

. G! R& M& y. m" a( C1 v
echo "ServerName controller" >> /etc/httpd/conf/httpd.conf
5 a+ a+ J1 Y0 Z0 u1 {; k
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

, ~9 z2 x" s5 `
systemctl enable httpd.service && systemctl start httpd.service
- o: O  l+ S0 `# N0 Z& V6 R
echo "export OS_USERNAME=admin" >> /etc/profile
# d' k5 L# X% r3 M8 m
echo "export OS_PASSWORD=123456" >> /etc/profile

4 u& v/ @5 o$ h8 ]* L
echo "export OS_PROJECT_NAME=admin" >> /etc/profile

8 e: B7 j0 l3 X+ c1 d/ V
echo "export OS_USER_DOMAIN_NAME=Default" >> /etc/profile

. Q# D8 t# L* ]* S, ^( z$ Q/ e
echo "export OS_PROJECT_DOMAIN_NAME=Default" >> /etc/profile
9 O3 x  M% M5 G: w
echo "export OS_AUTH_URL=
http://controller:5000/v3
" >> /etc/profile

0 {8 X6 z5 g. f5 ?) x$ ?1 W
echo "export OS_IDENTITY_API_VERSION=3" >> /etc/profile
) T8 j6 G9 s) m, g( L
source /etc/profile

" f- t. L0 F$ H1 ?
openstack project create --domain default --description "Service Project" service

- X0 ]0 a' x, V% n4 {" b6 w2 p5 x# l# c$ g& V! g) f$ p
#控制节点 安装Image service
5 C) U/ g6 b2 n
mysql -uroot -p123456 -e "CREATE DATABASE glance"
9 B' E4 p( R! u( U  h
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456'"
- Z& @. c5 n' t" K( l3 J9 j1 B3 a
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456'"
( B1 T. F8 D9 P! B& C& x1 W
openstack user create --domain default --password 123456 glance
8 o* u  H6 T3 }5 B
openstack role add --project service --user glance admin

; Z& A: A! D0 P
openstack service create --name glance --description "OpenStack Image" image

3 ~+ I( u, X* w3 ~- I; z
openstack endpoint create --region RegionOne image public http://controller:9292
! N2 d7 L/ ]' K% h! ~
openstack endpoint create --region RegionOne image internal http://controller:9292
# E. x8 O% k! C1 J4 i% S
openstack endpoint create --region RegionOne image admin http://controller:9292

7 m5 E5 T) P! U, P2 S5 Z$ k
yum install -y openstack-glance

; m/ Y+ Q) h$ Q" O4 W8 w1 r# M
sed -i "2062c connection = mysql+
pymysql://glance:123456@controller/glance
" /etc/glance/glance-api.conf
; }$ C4 W* w$ w# D7 U, `! _( `! `
sed -i "5034c www_authenticate_uri =
http://controller:5000
" /etc/glance/glance-api.conf
9 y; R* b1 U9 ?* \9 Q) v! e- z1 n
sed -i "5035c auth_url =
http://controller:5000
" /etc/glance/glance-api.conf

1 {( J, L% {1 m3 Z& i7 _4 Q  b; {
sed -i "5036c memcached_servers = controller:11211" /etc/glance/glance-api.conf
5 p8 @% e5 w2 B+ b$ h
sed -i "5037c auth_type = password" /etc/glance/glance-api.conf
7 f8 {5 {# `3 @
sed -i "5038c project_domain_name = Default" /etc/glance/glance-api.conf
% P% D  k7 s- n4 M; m$ ?
sed -i "5039c user_domain_name = Default" /etc/glance/glance-api.conf
# X  w0 l* A" y$ {8 U" Z
sed -i "5040c project_name = service" /etc/glance/glance-api.conf
0 d$ p/ F9 {, E4 c4 U
sed -i "5041c username = glance" /etc/glance/glance-api.conf

, b2 p8 a8 p- J1 l  C
sed -i "5042c password = 123456" /etc/glance/glance-api.conf
( N  L" P( f. J; `9 b" _
sed -i "5678c flavor = keystone" /etc/glance/glance-api.conf

! q$ j7 L4 o0 Z& D
sed -i "3413c stores = file,http" /etc/glance/glance-api.conf

1 F7 c! V) N! k( @6 H& c/ B2 r+ R, ^
sed -i "3414c default_store = file" /etc/glance/glance-api.conf
4 _8 N5 Q3 N* {1 w0 L
sed -i "3415c filesystem_store_datadir = /var/lib/glance/images/" /etc/glance/glance-api.conf

* L: Z- [" B. W% L5 T
su -s /bin/sh -c "glance-manage db_sync" glance

6 M+ w4 d( `, S& N) J* G
systemctl enable openstack-glance-api.service && systemctl start openstack-glance-api.service

" X2 K, G: j! ]5 O0 M' g8 P; H! `' S; W/ Y
#控制节点 安装Placement service
! @' R% J. R. g/ Y  ^9 Y, k
mysql -uroot -p123456 -e "CREATE DATABASE placement"
5 L% q$ o+ }$ s9 U
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '123456'"

5 g" Y3 h/ u9 W( ]0 P
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '123456'"
; t+ Z) @3 R+ f. Z6 Q) \
openstack user create --domain default --password 123456 placement

+ r' }, k( O  E( f4 H
openstack role add --project service --user placement admin

1 W3 C- _+ U4 q/ \* m
openstack service create --name placement --description "Placement API" placement
) W) x# Z& h6 k; R( w
openstack endpoint create --region RegionOne placement public http://controller:8778
. W% _( v. D, h: j) C  a# s
openstack endpoint create --region RegionOne placement internal http://controller:8778

5 Z2 Q' x4 d1 t( |; \5 d
openstack endpoint create --region RegionOne placement admin http://controller:8778

6 S( N- K7 Y* h
yum install -y openstack-placement-api

% `3 v9 P( M& U! Q9 X) q
sed -i "507c connection = mysql+
pymysql://placement:123456@controller/placement
" /etc/placement/placement.conf
7 \+ a1 F" w4 e  \! Z! ~
sed -i "192c auth_strategy = keystone" /etc/placement/placement.conf
( O$ ~% }/ E! X, `
sed -i "241c auth_url =
http://controller:5000/v3
" /etc/placement/placement.conf

& t! w* p4 }; E: I
sed -i "242c memcached_servers = controller:11211" /etc/placement/placement.conf
* R2 f, J: L9 Y! }# V
sed -i "243c auth_type = password" /etc/placement/placement.conf

- w/ y; L( ~* ^! i) Z: I' m& D
sed -i "244c project_domain_name = Default" /etc/placement/placement.conf
/ f& N! w+ V6 z1 D9 y
sed -i "245c user_domain_name = Default" /etc/placement/placement.conf

; Y$ Z5 \: a; }, B
sed -i "246c project_name = service" /etc/placement/placement.conf
( F: W* K+ }% c: V
sed -i "247c username = placement" /etc/placement/placement.conf
4 D8 ^; S* t7 }, }+ O8 z
sed -i "248c password = 123456" /etc/placement/placement.conf
; {3 R8 ~, J' i; W
su -s /bin/sh -c "placement-manage db sync" placement
) }3 F, l# W1 o4 r7 T& @, G; k& l
systemctl restart httpd

; m0 K+ G/ o6 f3 ~: N! s! {0 @! |* t& Q3 V  p
#控制节点 安装Compute service

8 S1 k7 Y8 B: q2 K, x( j) H' [& J3 Z
mysql -uroot -p123456 -e "CREATE DATABASE nova_api"
& U* s/ I, w5 s5 \9 ^$ I  x6 y
mysql -uroot -p123456 -e "CREATE DATABASE nova"

3 _- f9 ?( p% f% y: A2 e8 D
mysql -uroot -p123456 -e "CREATE DATABASE nova_cell0"

5 ~1 |0 u+ k9 w; f
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"

$ a: ?# |- v" K# Q4 J5 `
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456'"

/ j$ `/ q7 f2 v. `, F8 g( C4 H
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
0 E; y* j3 I! Q+ ]+ x2 m  K
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456'"

- C2 v9 M- y2 }
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"

1 W8 B% m4 d7 X# K" H9 w: D
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456'"

( q8 l/ @0 M) O3 L; @
openstack user create --domain default --password 123456 nova

" L8 d+ R& t4 \7 ^- G3 ]9 {4 B
openstack role add --project service --user nova admin
: R5 o2 b/ ?8 d, o% G0 P; ~
openstack service create --name nova --description "OpenStack Compute" compute

$ W2 N% c; l: e% l7 b
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1

5 _" m9 p9 v; j) _
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1

/ B; ^( _0 B) m1 Q" g+ A
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

! S4 }& m' x  [7 {1 n
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler

: {3 u, }1 i2 p* X7 ]8 F! G
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf

( M2 h, k7 ^2 y$ M
sed -i "3c transport_url =
rabbit://openstack:123456@controller:5672/
" /etc/nova/nova.conf

6 D' ], ]& A9 m3 A! E* F
sed -i "4c my_ip = 10.0.0.11" /etc/nova/nova.conf
* n! d- ?9 J( T6 T% u! |: t' N
sed -i "1079c connection = mysql+
pymysql://nova:123456@controller/nova_api
" /etc/nova/nova.conf
: |) p& a5 P4 o% l5 s" H
sed -i "1622c connection = mysql+
pymysql://nova:123456@controller/nova
" /etc/nova/nova.conf
0 ~0 I5 z+ d' I' Q1 c0 a" K1 y
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
8 p. c+ t2 j  D0 l
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf

/ I/ b" w" t! ?; _# [: T# f4 B
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf
. j; N0 h+ p3 i1 o7 \1 t
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf

# q- ~$ T% k4 ?+ P, e5 }( C
sed -i "2564c auth_type = password" /etc/nova/nova.conf
2 W6 H( ^) A8 q; T7 h: s1 G
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf
& R% T7 O5 q9 P" v; `, ]: }
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf

# z( ^' u. r, F: o$ i
sed -i "2567c project_name = service" /etc/nova/nova.conf
- X* c0 _1 ~. v1 N. n3 U& b
sed -i "2568c username = nova" /etc/nova/nova.conf
1 P1 @9 R! E, D; u/ ^9 h% [( Z
sed -i "2569c password = 123456" /etc/nova/nova.conf
1 V9 ?0 b% Y( q0 L! c6 h
sed -i "5171c enabled = true" /etc/nova/nova.conf

: r" H8 @. y4 ~9 [
sed -i '5172c server_listen = $my_ip' /etc/nova/nova.conf

; d* T, l' r  h5 z2 x  D, L7 F
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf

" Y4 S: U4 T$ a. ~
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf

8 ^9 @5 F3 D! J# O* q
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf

4 o3 k' ]9 g% m) h
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf
! W+ }: Z$ y/ d, \5 B% x
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf

% b; X; M! \  F, E, A- V
sed -i "4095c project_name = service" /etc/nova/nova.conf
& w$ k. F4 P+ ^; O  Q  m5 }
sed -i "4096c auth_type = password" /etc/nova/nova.conf
. a0 I2 {: C$ j/ d
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf

' ~& ~, n! B6 s. b
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf

' c- y0 t5 k* B9 G0 y7 y  D
sed -i "4099c username = placement" /etc/nova/nova.conf

% C$ x4 |$ t$ I! H& X& H
sed -i "4100c password = 123456" /etc/nova/nova.conf

5 ^  g6 L5 ]5 L' q4 d% T
sed -i "4509c discover_hosts_in_cells_interval = 300" /etc/nova/nova.conf

4 ]" d; C0 N4 @/ k% Z4 }; U
su -s /bin/sh -c "nova-manage api_db sync" nova
5 T( L2 a1 o8 m: Z% S, ?0 f7 n7 d
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
' H$ X1 g% r0 M
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
2 B9 K) U0 A4 S
su -s /bin/sh -c "nova-manage db sync" nova

; q$ K, i4 O* b& Z! g( ~* ~
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

, g  [) }7 ~, ]0 i* Z7 z( m& K. ]) N7 m$ v2 X+ Q
#计算节点 安装Compute service

2 B% L; F5 R$ n! M7 `
yum install -y openstack-nova-compute
, {" }' x  S' ?; j" z
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf
& c! r1 }# @: Q, k4 N
sed -i "3c transport_url =
rabbit://openstack:123456@controller
" /etc/nova/nova.conf
% Q3 }0 m9 m6 _! g& d$ U# X
sed -i "4c my_ip = 10.0.0.31" /etc/nova/nova.conf

( _- P. w+ t5 K6 O- u1 ~' J
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
- D" q4 q7 t" g* V5 m/ `
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf
# Y& x" e5 b1 ~  \' g
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf
4 F" i- f) `* X9 r
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf

0 S& ^% b6 G, b$ {  a8 G5 `+ W8 G
sed -i "2564c auth_type = password" /etc/nova/nova.conf

" ~1 L7 I* q  ^6 X5 }7 ^0 ~( S
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf
8 M, F% D/ d: l# k  m$ w$ C
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf
+ v. @7 s) x$ Q
sed -i "2567c project_name = service" /etc/nova/nova.conf
" B$ u# m# i3 E
sed -i "2568c username = nova" /etc/nova/nova.conf

$ i1 k1 r. j& i1 o% k
sed -i "2569c password = 123456" /etc/nova/nova.conf
! G5 ]/ o0 U" t" q
sed -i "5171c enabled = true" /etc/nova/nova.conf

3 B9 C3 q+ d: u/ Y4 Z
sed -i "5172c server_listen = 0.0.0.0" /etc/nova/nova.conf

# \7 O- v( ^7 C( b9 c! _: F6 z
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf
% @3 Q0 u3 W$ Z/ }0 z2 w" Y! t! G
sed -i "5174c novncproxy_base_url =
http://controller:6080/vnc_auto.html
" /etc/nova/nova.conf
4 U8 m* _+ R6 g' M: {  i
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf

' _/ s! K5 ?. }- ?
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf

  O/ U# ?* o- i6 ?
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf
) \* A. n# G- u% X0 ]4 B
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf

$ O9 R2 Q. r9 |2 d' O
sed -i "4095c project_name = service" /etc/nova/nova.conf

: ]6 I" f* }* y# ^& Q/ v
sed -i "4096c auth_type = password" /etc/nova/nova.conf
7 _: t# U2 i2 c2 h
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf
0 p' H3 j8 h3 k* J% i
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
% E6 B* Z! p2 ?: a+ A8 H: D! C. j
sed -i "4099c username = placement" /etc/nova/nova.conf

! i$ ]- ]1 `" E
sed -i "4100c password = 123456" /etc/nova/nova.conf

+ D; |7 n6 U& y0 E- N% @6 \5 N1 H2 r5 S# f
#执行命令,查看是否支持CPU虚拟化,如果大于0则支持。
0 L/ B2 ?/ W. H7 d6 y
egrep -c '(vmx|svm)' /proc/cpuinfo
$ a( @% c: h* Z  n$ b9 ~4 u+ w9 e
#如果不支持的话还需要执行下面的命令

" Q8 q$ Z6 v$ H/ K% T3 T
sed -i "2722c virt_type = qemu" /etc/nova/nova.conf

8 s6 T. b' [8 {) r: R9 z- x" A$ S( ]4 m7 e5 ]3 [( ~
systemctl enable libvirtd.service openstack-nova-compute.service && systemctl start libvirtd.service openstack-nova-compute.service

9 J% K0 |$ P* `2 c& x" Z* p8 O) n" p+ T% ^9 z
#控制节点 计算节点从注册到发现会有延迟,根据discover_hosts_in_cells_interval 配置轮询发现时间,可以执行下面命令手动发现计算节点

% O$ O) F! Y3 c3 N
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

2 w( J3 |8 e0 d# x  Z+ q3 q' h" P
#控制节点 安装Networking service

# i3 v$ A/ X) `% ^  Z' p
mysql -uroot -p123456 -e "CREATE DATABASE neutron"
# F. }5 Z9 g- l& w2 o
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456'"

: v8 d! r0 P9 s4 v- I9 w& [
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456'"

) [& L* x) `2 m3 G; g8 X+ L
openstack user create --domain default --password 123456 neutron
8 J( ~% p- m6 T$ A+ W
openstack role add --project service --user neutron admin
( I7 l& \7 ?) D0 ]) I
openstack service create --name neutron --description "OpenStack Networking" network
. A/ ?2 S3 ?/ J+ I4 x9 O! ]" H1 `
openstack endpoint create --region RegionOne network public http://controller:9696

  L; C, h( q$ }5 k8 m% r
openstack endpoint create --region RegionOne network internal http://controller:9696

# }; W, f) k% }* _. `% B
openstack endpoint create --region RegionOne network admin http://controller:9696

* n+ R* Q7 P7 n$ ?5 |
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

2 _! x( m7 I5 K9 D2 l* l" ?
#配置服务器组件

. I- {+ _9 ^* y: \
sed -i "2c core_plugin = ml2" /etc/neutron/neutron.conf
' d: j: A$ B( G, ?2 B' x8 U
sed -i "3c service_plugins = router" /etc/neutron/neutron.conf

* m5 {$ u6 W  I* [/ S
sed -i "4c allow_overlapping_ips = true" /etc/neutron/neutron.conf

- Z  X1 k9 \. A  m) b# T6 ]
sed -i "5c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf

# Y/ v' k6 f$ P" r+ i( H5 j6 n
sed -i "6c auth_strategy = keystone" /etc/neutron/neutron.conf

2 l2 P$ q, R6 U5 J! A) {
sed -i "7c notify_nova_on_port_status_changes = true" /etc/neutron/neutron.conf
& F# V$ j+ t7 P% D9 l
sed -i "8c notify_nova_on_port_data_changes = true" /etc/neutron/neutron.conf
* [) _/ S- I# f: \" t+ W
sed -i "254c connection = mysql+
pymysql://neutron:123456@controller/neutron
" /etc/neutron/neutron.conf

; u+ K7 g# |5 |3 v2 b
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf

' c/ [- x3 P- A- \0 t# k) N; }
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf
9 y6 K; D; Q8 X2 D) s2 P' y
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf

9 o& q: ~2 ^; X- \5 o
sed -i "362c auth_type = password" /etc/neutron/neutron.conf

7 q" `; X$ F" A/ t$ X
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf

5 S- e& F8 W8 s9 R, I, \
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf
+ \- X$ E& [' O/ ~3 u5 ]: L
sed -i "365c project_name = service" /etc/neutron/neutron.conf
# E: {' b8 n4 c* m% |) b* h
sed -i "366c username = neutron" /etc/neutron/neutron.conf
; g7 T+ l4 P2 n0 A. q
sed -i "367c password = 123456" /etc/neutron/neutron.conf
. ]( P1 B6 f, F0 }( O& S
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf

. J& n" Y# q# W* s2 F6 M5 H, I, U
echo "[nova]" >> /etc/neutron/neutron.conf
# b& [3 M7 w) }
echo "auth_url =
http://controller:5000
" >> /etc/neutron/neutron.conf

& a' M/ U2 a# i" l6 y
echo "auth_type = password" >> /etc/neutron/neutron.conf
$ D; E" K  v. P( P( e
echo "project_domain_name = default" >> /etc/neutron/neutron.conf

$ Y; F2 }/ p0 J8 R! K4 I& ?
echo "user_domain_name = default" >> /etc/neutron/neutron.conf
; I- K. F3 p% [3 E  d+ t
echo "region_name = RegionOne" >> /etc/neutron/neutron.conf
8 k, e2 @4 q3 n& }2 m2 {
echo "project_name = service" >> /etc/neutron/neutron.conf

( z0 U; f9 I" O9 Q8 F+ q: X
echo "username = nova" >> /etc/neutron/neutron.conf

: r2 H; n, M5 d" M% t
echo "password = 123456" >> /etc/neutron/neutron.conf
2 q; c: [& Q+ i& Z: ^
#配置Modular Layer 2 (ML2) plug-in
& p9 F: n4 k- }" H
echo "[ml2]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

' k- ?/ n! ?( W  p
echo "type_drivers = flat,vlan,vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini
8 O6 P" L+ P5 C+ B- f" z& [( G/ Q
echo "tenant_network_types = vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

& e  d3 I8 Z8 U- P& o
echo "mechanism_drivers = linuxbridge,l2population" >> /etc/neutron/plugins/ml2/ml2_conf.ini

+ k) }; G% X1 B
echo "extension_drivers = port_security" >> /etc/neutron/plugins/ml2/ml2_conf.ini

( {" E0 A' U  b% {: T6 u' N* o# O
echo "[ml2_type_flat]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

) d, B4 H. v' ?0 J
echo "flat_networks = provider" >> /etc/neutron/plugins/ml2/ml2_conf.ini

: t! M( x8 v! N3 ^' S
echo "vni_ranges = 1:1000" >> /etc/neutron/plugins/ml2/ml2_conf.ini
- k4 P  J% X' N$ ]. V
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
! c+ V, _- D8 K9 J3 ?6 N
echo "enable_ipset = true" >> /etc/neutron/plugins/ml2/ml2_conf.ini

" j* T1 F: i. M+ {& W0 B( S- f
#配置Linux bridge agent

5 S5 l. ^9 f* s) R: W5 q4 |9 ^
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
2 t+ k: b3 w7 t
#eth1为另外第二张网卡
' {2 n) J0 w% B8 Q6 x  N4 G- I0 W9 S
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
3 p9 @0 {8 F& Q/ Q9 n, W- h+ Q
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
" k( u( ?7 i$ t: h0 T' _. I+ `
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
$ K  A4 W' I) ~
#10.0.0.12为第二张网卡的IP
/ l! r4 Y! V) w! Q6 _) p
echo "local_ip = 10.0.0.12" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

8 d3 e) G7 Y9 y  W. X
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
5 X3 S8 C2 `( p2 l; z
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

% t) v. \4 r9 j4 v- H/ t4 [1 i
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
7 l- f6 B  m" D* j0 @% c- T. [
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  N: {$ m2 E: }
#配置layer-3 agent

% [( S. t$ ?7 t- D6 O, J% c
sed -i "2c interface_driver = linuxbridge" /etc/neutron/l3_agent.ini

. s6 x- l0 `$ ^, J: ]
#配置DHCP agent

& m( @8 P8 [6 v6 s! J
sed -i "2c interface_driver = linuxbridge" /etc/neutron/dhcp_agent.ini
4 D( P; x/ o( y/ @
sed -i "3c dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq" /etc/neutron/dhcp_agent.ini
  l$ G3 u: N; U4 C* N
sed -i "4c enable_isolated_metadata = true" /etc/neutron/dhcp_agent.ini
7 U, F& \9 l5 f! {0 [4 v6 a. G
#配置metadata agent
7 _; z' K/ b% c8 V# Z. J
sed -i "2c nova_metadata_host = controller" /etc/neutron/metadata_agent.ini

! ^! i# o$ r( y8 m
sed -i "3c metadata_proxy_shared_secret = 123456" /etc/neutron/metadata_agent.ini

4 g& [. y2 a# o1 H+ f7 H4 t  e
#配置计算服务使用网络服务

" H% g( d4 u( _  I8 L
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf
/ @* D% _# g% v  Y
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
& n2 U) g+ v  c
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf
2 {  e$ o% G( J$ r5 a
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf
, V! Z7 B( O  z& g# a
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf
# I# a* d' n) c' Y0 m
sed -i " 3339c project_name = service" /etc/nova/nova.conf

! u# ~( Z) }% y
sed -i " 3340c username = neutron" /etc/nova/nova.conf
& P6 S) I& E; O
sed -i " 3341c password = 123456" /etc/nova/nova.conf
) X0 U3 v7 ^. [7 u0 [5 m2 C9 A
sed -i " 3342c service_metadata_proxy = true" /etc/nova/nova.conf

+ E+ ~8 |' _$ U/ c  V! r
sed -i " 3343c metadata_proxy_shared_secret = 123456" /etc/nova/nova.conf

" b, _- h( h6 p1 d- J
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
2 D* r6 H' A; p. I* B
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

2 S# n% [: F: ~
systemctl restart openstack-nova-api.service

# s4 U6 L! K) n6 I& D3 S6 g/ j
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
! e" a% b# a& H0 s/ f
systemctl enable neutron-l3-agent.service && systemctl start neutron-l3-agent.service

. d4 A' W. g& T5 |, f9 \
  H% |9 P, z0 F/ L- a& r8 ~
#计算节点 安装Networking service
2 G( b' ^: [; u. `1 e
yum install -y openstack-neutron-linuxbridge ebtables ipset

. m% T( E6 k3 y* M4 g: R
sed -i "2c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf
/ v% Q, e* h! q* v" p$ Y9 w
sed -i "3c auth_strategy = keystone" /etc/neutron/neutron.conf

: O1 }+ G$ M6 Z+ O  X; `. S
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf
$ i' b- D7 t. K8 h0 _
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf

* Y2 [0 N* ~/ ~1 q- x
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf
/ z+ K- q1 u  ^1 _0 t! }
sed -i "362c auth_type = password" /etc/neutron/neutron.conf

1 d6 s$ d! D1 S* u" k
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf
/ s7 h2 M& V& d7 e/ K' L3 }" h& [
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf

& O3 q8 P* T- {" t2 b6 F
sed -i "365c project_name = service" /etc/neutron/neutron.conf
9 o7 s7 f7 v0 E; g2 x
sed -i "366c username = neutron" /etc/neutron/neutron.conf

) j& c. G8 y% O$ s
sed -i "367c password = 123456" /etc/neutron/neutron.conf

% d% L0 x+ s% I4 ]5 @
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf

" a0 G0 J9 W$ u" e8 p
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

" m3 }/ \) x! I* n
#eth1为另外第二张网卡
( w( ?2 t, @7 }& K0 @& ^6 Z; l' v
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
2 d. P: k, Q# x* d
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

4 [5 x6 J) C. _5 t' M" u0 A% v3 P
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

6 B3 G* H0 ^. t7 Z4 g4 r+ Q
#10.0.0.32为第二张网卡的IP
. ?7 M& y7 ^1 c
echo "local_ip = 10.0.0.32" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
( g/ M8 K1 P7 p" X, m; M
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

3 o' F7 s1 r4 f4 C/ x) b% L, g
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

( G: v1 Z! |# x. r/ B
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
* e0 }6 ^, K8 d$ o# x
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
- m9 ?& x8 M) i/ v+ q/ \; ^
#配置计算服务使用网络服务
! x4 [! S6 c3 q# I
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf

: n; E; X( }* C' F  n  w* C8 O
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
, }/ v8 B& k* E, A/ r
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf
5 f& s0 q+ w0 q% P* Z- y, D$ f
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf

, g7 g. T# O* X# P% i$ a% W2 t5 m( H
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf

9 g/ ^) y- n/ q
sed -i " 3339c project_name = service" /etc/nova/nova.conf
/ d) E: b/ F4 I3 S9 I8 R
sed -i " 3340c username = neutron" /etc/nova/nova.conf
$ c( u, R+ P! A* J) x+ I6 e
sed -i " 3341c password = 123456" /etc/nova/nova.conf
; ?# \9 w" a8 H' n) T' w
systemctl restart openstack-nova-compute.service
- L. u8 m1 |4 J5 K- p
systemctl enable neutron-linuxbridge-agent.service && systemctl start neutron-linuxbridge-agent.service

/ u! @) W9 G. U% [) K' i- E
. @! j# v6 {- o( D( l
#控制节点 安装Dashboard

* D2 Z8 j1 X# C3 Q4 F) ]
yum install -y openstack-dashboard
4 B( Y, ^- w. [, I9 q
sed -i '118c OPENSTACK_HOST = "controller"' /etc/openstack-dashboard/local_settings

3 _, l6 a8 y; j' @: [
sed -i "39c ALLOWED_HOSTS = ['*']" /etc/openstack-dashboard/local_settings
7 `; N- m- i7 y; o' E
sed -i "104c SESSION_ENGINE = 'django.contrib.sessions.backends.cache'" /etc/openstack-dashboard/local_settings

& `- W" B8 H7 L, A, Q& }' s
sed -i "94c CACHES = {" /etc/openstack-dashboard/local_settings

: ~" }+ }: C9 A  M. I9 V
sed -i "95c 'default': {" /etc/openstack-dashboard/local_settings
4 S. l! B9 h( m! C0 l! [; R
sed -i "96c 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'," /etc/openstack-dashboard/local_settings
" x% s( f- `/ L2 Q) E
sed -i "97c 'LOCATION': 'controller:11211'," /etc/openstack-dashboard/local_settings
. B8 ]# {0 W0 L7 v* S$ T
sed -i "98c }" /etc/openstack-dashboard/local_settings

4 e6 j( K4 m5 F: A! Q$ r
sed -i "99c }" /etc/openstack-dashboard/local_settings

* H! u+ ^2 `9 r4 l/ S
sed -i '119c OPENSTACK_KEYSTONE_URL = "
http://%s:5000/v3
" % OPENSTACK_HOST' /etc/openstack-dashboard/local_settings

% O  a9 Q) X4 m; v; c+ s7 X2 V
echo 'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True' >> /etc/openstack-dashboard/local_settings
: D$ q0 G8 X0 \4 H
echo 'OPENSTACK_API_VERSIONS = {' >> /etc/openstack-dashboard/local_settings

3 j5 Q! `- v7 O# @8 x3 d
echo '  "identity": 3,' >> /etc/openstack-dashboard/local_settings

6 g+ ?1 L' Z- s% G, G; A$ L1 i  k6 E
echo '  "image": 2,' >> /etc/openstack-dashboard/local_settings

0 l& N# Q2 c" S6 s
echo '  "volume": 3' >> /etc/openstack-dashboard/local_settings

4 R: P8 _7 `" ~; v. h* b
echo '}' >> /etc/openstack-dashboard/local_settings
2 b8 E& R, P2 B0 T
echo 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"' >> /etc/openstack-dashboard/local_settings

- _0 j/ f! i# E$ t5 C
echo 'OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"' >> /etc/openstack-dashboard/local_settings
  k  [% X" s' v. S1 Q) k, u: o
sed -i '123c TIME_ZONE = "Asia/Shanghai"' /etc/openstack-dashboard/local_settings
2 W/ K% M: t$ Y) j' k- j  c; ^
echo "WEBROOT = '/dashboard/'" >> /etc/openstack-dashboard/local_settings
( u  L3 e; n; q% v2 u" t6 x9 Q  B
echo 'WSGIApplicationGroup %{GLOBAL}' >> /etc/httpd/conf.d/openstack-dashboard.conf

* P% O1 p8 ?' I+ G6 J: j0 w% H3 S
systemctl restart httpd.service memcached.service

1 [' B5 T6 F# b& V5 s; ?/ x9 u' @, j
#安装完成,可访问
http://10.0.0.11/dashboard/
查看
( T) P" C8 m1 j

! Z* ^" H: ~5 j- o/ w8 k
# v  R) Y" `3 g

' M0 M5 v+ S2 l+ n
0 b  y. }3 U. N: H9 I" [# r" u: ]$ G/ l

% G! l' k' N9 S0 k

总结

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

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

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:25 , Processed in 0.070202 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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