找回密码
 注册
查看: 2687|回复: 0

openstack ussuri 安装脚本

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-3-17 20:59:06 | 显示全部楼层 |阅读模式
#!/bin/bash
* K- q) D' S+ i# W
1 ]' L0 e9 P+ Y
#Centos8最小化部署安装OpenStack Ussuri

: q- L8 B+ K: M5 a5 R" O/ `$ K2 z! `
#共两台主机,分别是一台控制节点,一台计算节点

- s) ~3 O8 a8 H" T, g
#1、控制节点内存4096M。双网卡,分别为eth0:10.0.0.11,eth1:10.0.0.12

) P6 a9 o7 g! @
#2、计算节点内存4096M。双网卡,分别为eth0:10.0.0.31,eth1:10.0.0.32

2 ~$ ?$ b& }. c% L$ Z
: n8 v" v0 e- f3 z
#设置阿里云yum源

  k& _- E+ C1 S
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

5 q$ M8 i/ |. s0 \9 V3 _4 S
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
# Z2 V/ W3 j6 B! J
- p) D) P) R3 r: l$ b; I# G
#关闭防火墙
# ^3 M8 ^1 @9 _% K
systemctl stop firewalld && systemctl disable firewalld

& k' j/ s7 V. ^7 z& c
4 u8 P" b/ y0 g% @0 L9 ~; `- V
#关闭SELinux
2 |% A0 n5 p  U( ?0 ]
setenforce 0
* S9 t' V$ B$ P3 N
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
% T$ @0 V2 i* u/ e+ r6 ~
$ B  a. e6 j$ T
#关闭swap分区

2 c7 w  l( s6 G/ m
swapoff -a

0 G5 v* V6 ?8 r. _
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

5 a! s9 U: Y' P0 H5 W7 ]
0 H! o: v6 C: F* N
#设置内核
- H  }2 y. u8 l* K* ~
modprobe bridge

7 E/ _$ A# {: e; \/ e. Q
modprobe br_netfilter
: n0 v8 C- ~: x1 c8 g$ C
cat > /etc/sysconfig/modules/neutron.modules <<EOF
  p3 B  t; w3 [, i4 t) R/ c) U, e, h
#!/bin/bash

) p+ b/ H9 l; C" @. }7 K2 v
modprobe -- bridge

9 _4 @7 z! c; s5 F
modprobe -- br_netfilter
5 \: E5 E' ~4 J
EOF

$ z5 j6 ]) j  ?6 T6 \! t, ]5 Q
chmod 755 /etc/sysconfig/modules/neutron.modules && bash /etc/sysconfig/modules/neutron.modules
* {: h8 ^" W7 K/ q4 r& ~0 r; `
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

  z6 q0 }* M- j# s
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

' j7 G/ X9 E$ ^7 }+ z
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
! @7 O) o/ W3 m! X7 H" ~- ]
echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf

. T6 T: ?, C  c* Y
sysctl -p
: w( C; q+ C; ~( j  E' p" k+ |

) y1 J; P) ^# ^; v, b; J; a
#设置时间同步

, W! c. l" A% ]1 p4 _
yum install -y chrony && yum -y autoremove

' i8 f; Z4 M7 r, ?
sed -i '/^pool/d' /etc/chrony.conf
& D, E& T3 p$ a3 q6 n
sed -i '/^server/d' /etc/chrony.conf
4 P  T& h9 {. l7 Q  ]. }. f
echo "pool ntp.aliyun.com iburst" >> /etc/chrony.conf

3 z3 U1 V; W  [' e9 ]2 h
systemctl start chronyd.service && systemctl enable chronyd.service
2 [. f& A; ~! B8 n3 C+ s# K$ P
; q+ T1 R7 A' V% W2 @" E3 A! ?# \
#控制节点 设置hostname
# |+ H" C6 L% s/ O. w) v
hostnamectl set-hostname controller
# X8 b+ L3 X/ O% n, [

+ t1 J+ V0 q$ y# l2 p5 g3 o
#计算节点 设置hostname

. I* _* x# v5 J9 T
hostnamectl set-hostname compute1
* d. _+ N& @/ S+ B" H# X

: J2 t" x% R1 W5 q, G) E; T! d
#添加host
3 Y% h; q' L' a
echo "10.0.0.11 controller" >> /etc/hosts
3 x0 |4 c. r  K5 L
echo "10.0.0.31 compute1" >> /etc/hosts
6 `; G. c, ~( L( r, I

: p) K' l% Q3 Z5 @/ I$ i; ?
#安装基础组件
8 @$ P! v) I- F( o: c. E! P/ W
yum install -y centos-release-openstack-ussuri
  A  j' ^: p9 _! O/ r6 \) W$ C
yum config-manager --set-enabled PowerTools
- N! X$ R* y! A3 c7 J/ t& [; F
yum upgrade -y
9 s$ G- ]$ [, p3 X( N& w. g
yum install -y python3-openstackclient

: `' g4 m+ J& K" w: V' O4 x6 \! S$ G7 p
#控制节点 安装Mariadb
* K  ~0 i& A$ w+ x6 \3 I9 V5 Y* @
yum install -y mariadb mariadb-server python2-PyMySQL
. l$ c5 N) Y% ?
tee /etc/my.cnf.d/openstack.cnf <<-'EOF'

8 X# `& H/ [8 C+ s( D
[mysqld]

! D' `4 [$ P* m1 W
bind-address = 10.0.0.11
* q# q7 a- ?$ d8 d' k  l
default-storage-engine = innodb
/ B, D2 v/ A5 h5 t, l# X
innodb_file_per_table = on
0 g9 P# C+ R/ Z$ Y
max_connections = 4096
; R9 C' l& u: K  q( R- o4 ]
collation-server = utf8_general_ci
. L- Z% \/ b) g% d0 E
character-set-server = utf8
- d/ W$ e% n% k
EOF

/ z; O+ x  M7 H% B! ?( P
systemctl enable mariadb.service && systemctl start mariadb.service
! H  G. J2 ]+ L3 a1 X3 X1 s/ {+ Y0 H
echo -e "\nY\n123456\n123456\nY\nn\nY\nY\n" | mysql_secure_installation

; j- k* S& y* f- O, b* x5 M2 c, J1 V$ T5 m% y' K  K
#控制节点 安装RabbitMQ

4 [1 Z; F' o4 t. S7 |- Y! J: N
yum install -y rabbitmq-server
0 S( p  d/ G/ H  v
systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service

' H* a0 u# J: x
rabbitmqctl add_user openstack 123456
# I5 D  y2 f* h) j
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
2 ~4 U/ Z% t2 y3 F# i2 m: \+ I: V4 x
9 V3 [  @" F: E! H, j- m! m
#控制节点 安装Memcached
' H6 p2 S  t& r. T
yum install -y memcached python3-memcached
4 E* F/ Y8 u. T! M/ p
sed -i "s/-l 127.0.0.1,::1/-l 127.0.0.1,::1,controller/g" /etc/sysconfig/memcached

! r! q0 O7 l. G$ |  @  v& T7 m% T
systemctl enable memcached.service && systemctl start memcached.service
, Z' o; s3 n* z# B+ g9 t2 B
. R8 _8 k7 V" E# m: ?
#控制节点 安装Etcd
6 v4 n, M) q3 O* Y
yum install -y etcd

; r) j5 F3 c5 s4 W, G0 g3 Y
rm -f /etc/etcd/etcd.conf
7 v0 r, t" I* E  H4 L7 b9 ]
tee /etc/etcd/etcd.conf <<-'EOF'

5 [; T* t7 B' z' X6 E
#[Member]

' G; z* b& Q: }- ?
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
1 ~0 W: K  |) c  q7 X* A, a
ETCD_LISTEN_PEER_URLS="
http://10.0.0.11:2380
"

, l& J2 H: Z" I
ETCD_LISTEN_CLIENT_URLS="
http://10.0.0.11:2379
"

. M. b' h* k& K% @8 K
ETCD_NAME="controller"
6 @- V# w9 a. a+ b* d9 G1 E, r
#[Clustering]

$ U! }" D2 U5 i$ t8 F; ^8 R1 x2 b
ETCD_INITIAL_ADVERTISE_PEER_URLS="
http://10.0.0.11:2380
"

5 E3 P: H. u& R# B
ETCD_ADVERTISE_CLIENT_URLS="
http://10.0.0.11:2379
"
& R% a) m# y$ T: @. R
ETCD_INITIAL_CLUSTER="controller=
http://10.0.0.11:2380
"
+ i% O% G1 V$ n7 Z/ [4 }
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
' j+ h- y/ Z& g$ F8 i! \2 ~1 O
ETCD_INITIAL_CLUSTER_STATE="new"

! P5 k+ i* V* E& ^- q2 K
EOF
  z: @( ~, M. q
systemctl enable etcd && systemctl start etcd
  n/ w3 A$ S9 l" O0 J, B

9 e- `* k7 x9 {  ~: l
#控制节点 安装Identity service
+ C6 g4 O  T6 F7 }
mysql -uroot -p123456 -e "CREATE DATABASE keystone"
. r9 Q5 Z/ h4 }
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456'"

# u% Y1 a% `9 L) ^# b' E9 Z0 {) a. [
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456'"
7 Z5 g' _# ]: @
yum install -y openstack-keystone httpd python3-mod_wsgi
* F0 {6 ]5 j3 s  f3 j
sed -i "556c connection = mysql+
pymysql://keystone:123456@controller/keystone
" /etc/keystone/keystone.conf

" D  G! c1 J4 m$ ]! R9 }
sed -i "2418c provider = fernet" /etc/keystone/keystone.conf
/ M5 u3 k; I2 X' r) h# R& V
su -s /bin/sh -c "keystone-manage db_sync" keystone
+ a, ^6 u8 e7 k9 p
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# E9 g% w, y0 j- W, s6 w" J8 s
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# i5 B# e% N2 [, A% Y
keystone-manage bootstrap --bootstrap-password 123456 \

1 p5 B) C' T8 s2 s3 B; }
--bootstrap-admin-url http://controller:5000/v3/ \
* ]3 N% b1 X* W' p+ B* H7 ?3 e
--bootstrap-internal-url http://controller:5000/v3/ \
% b0 {2 M% Q0 b
--bootstrap-public-url http://controller:5000/v3/ \
2 r; S8 B5 [! g! l7 c
--bootstrap-region-id RegionOne
# A7 p( k" E4 F2 j, |( |
echo "ServerName controller" >> /etc/httpd/conf/httpd.conf

4 ^4 @1 U, \$ ?( F  U
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

& P7 W, q. y! l  J
systemctl enable httpd.service && systemctl start httpd.service
' r9 ?) t/ w- x
echo "export OS_USERNAME=admin" >> /etc/profile
( w& O5 k- Y) |
echo "export OS_PASSWORD=123456" >> /etc/profile
% B' `9 U# y  C
echo "export OS_PROJECT_NAME=admin" >> /etc/profile
  s1 n/ Y" q. G" ?
echo "export OS_USER_DOMAIN_NAME=Default" >> /etc/profile

: E% W/ I# U  L! ^, S
echo "export OS_PROJECT_DOMAIN_NAME=Default" >> /etc/profile
- M5 K' H1 I- j: t0 [2 e
echo "export OS_AUTH_URL=
http://controller:5000/v3
" >> /etc/profile
1 q7 }* T7 h% m0 o
echo "export OS_IDENTITY_API_VERSION=3" >> /etc/profile

# q  h1 U; L, b  L0 D. u+ M# \
source /etc/profile

) {2 D; z+ t6 ~$ p4 Q
openstack project create --domain default --description "Service Project" service

. y4 s5 N" j" d7 _6 \! a; d" ^- w1 P4 f) |4 [' {; y
#控制节点 安装Image service
( O& Y- H7 j5 b. r  a$ x
mysql -uroot -p123456 -e "CREATE DATABASE glance"
3 u: z5 a2 ~. G$ p* i) i- v" F! b
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456'"

! S: W( T/ Y, D9 J! P" U
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456'"

7 f; y/ \- `2 D) T4 }, Y
openstack user create --domain default --password 123456 glance
, v7 N4 p# R8 p+ |9 g" u
openstack role add --project service --user glance admin

! d; s5 F( j8 [& n4 y7 @, j
openstack service create --name glance --description "OpenStack Image" image

9 ]9 H9 [+ `0 ~# Q4 }9 T. z9 a
openstack endpoint create --region RegionOne image public http://controller:9292

; K0 C$ W- X4 I
openstack endpoint create --region RegionOne image internal http://controller:9292
; b! |/ I! m3 M5 z$ X
openstack endpoint create --region RegionOne image admin http://controller:9292

( L7 L& p+ L$ X( S
yum install -y openstack-glance
9 l# o" T( C8 ~) Q& n
sed -i "2062c connection = mysql+
pymysql://glance:123456@controller/glance
" /etc/glance/glance-api.conf
/ M, f: S5 P+ V' e5 s
sed -i "5034c www_authenticate_uri =
http://controller:5000
" /etc/glance/glance-api.conf
: n2 a( g! w/ h9 |2 Q2 F! X! Y$ ~# w
sed -i "5035c auth_url =
http://controller:5000
" /etc/glance/glance-api.conf

1 I# y) y; ^  ~( n0 g; o0 Z* O
sed -i "5036c memcached_servers = controller:11211" /etc/glance/glance-api.conf

7 d! v/ K# Z) L( e0 n6 }7 [0 y
sed -i "5037c auth_type = password" /etc/glance/glance-api.conf

; ~! h% l% i6 c% w8 ~* E; v& C" k
sed -i "5038c project_domain_name = Default" /etc/glance/glance-api.conf

: k, J- ?/ F4 @3 _9 r+ M3 @
sed -i "5039c user_domain_name = Default" /etc/glance/glance-api.conf

4 C- z8 l) w& u: }& g% t
sed -i "5040c project_name = service" /etc/glance/glance-api.conf
' s7 u1 k2 n/ f
sed -i "5041c username = glance" /etc/glance/glance-api.conf
6 `" I! {* S* l+ U- a1 ]
sed -i "5042c password = 123456" /etc/glance/glance-api.conf
/ q$ L( D# o* U0 c
sed -i "5678c flavor = keystone" /etc/glance/glance-api.conf
# [+ b1 I. e! C; u0 X1 y8 Z' n
sed -i "3413c stores = file,http" /etc/glance/glance-api.conf

( K$ S6 K' @6 p4 w* o. M4 Y& I
sed -i "3414c default_store = file" /etc/glance/glance-api.conf
% @* t7 M$ P* p' o' N# Y
sed -i "3415c filesystem_store_datadir = /var/lib/glance/images/" /etc/glance/glance-api.conf
% R5 V, L* O( I7 h9 z% `" p( A
su -s /bin/sh -c "glance-manage db_sync" glance

- G' a/ {- Y1 Q8 b* j* S( X- J
systemctl enable openstack-glance-api.service && systemctl start openstack-glance-api.service
" o$ T7 Y  M8 J/ i% Z: @3 z

8 R+ U: v7 c* ~, r$ M
#控制节点 安装Placement service
$ n0 o! t) _# X- R8 y/ I0 D
mysql -uroot -p123456 -e "CREATE DATABASE placement"

6 q  \% U' _6 D# [# N5 _& W
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '123456'"

+ g$ U: ]4 x) W) }# D5 f0 `
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '123456'"

6 q4 D: a( i9 L5 d+ N. W8 f
openstack user create --domain default --password 123456 placement
: a# o& U8 p, F9 j9 O# X
openstack role add --project service --user placement admin
! G/ }! G9 \4 @5 g
openstack service create --name placement --description "Placement API" placement

: [5 R# {  L  l" l
openstack endpoint create --region RegionOne placement public http://controller:8778

7 c& v! B) I% e5 o6 O$ B4 }( H
openstack endpoint create --region RegionOne placement internal http://controller:8778
' }6 M6 F6 u3 f& D6 _" z
openstack endpoint create --region RegionOne placement admin http://controller:8778

, \* @5 t9 h8 b; R1 A/ P+ D
yum install -y openstack-placement-api
  t+ @. w$ W% v. Z* j( y4 W
sed -i "507c connection = mysql+
pymysql://placement:123456@controller/placement
" /etc/placement/placement.conf
: f7 Q: j, S9 _- m( D
sed -i "192c auth_strategy = keystone" /etc/placement/placement.conf
6 g: l3 U; O+ w; H1 i) B6 e; b4 E) L
sed -i "241c auth_url =
http://controller:5000/v3
" /etc/placement/placement.conf

0 L! ?0 J( ?! a% w! [5 u4 u, E
sed -i "242c memcached_servers = controller:11211" /etc/placement/placement.conf
1 h; I8 _0 a% p5 K: e8 S
sed -i "243c auth_type = password" /etc/placement/placement.conf

3 U$ j' P" i0 D4 N+ |! O% k
sed -i "244c project_domain_name = Default" /etc/placement/placement.conf

* {4 s: C7 o6 o% S' T2 i- p
sed -i "245c user_domain_name = Default" /etc/placement/placement.conf

; ]! C0 a# K/ j% a$ z
sed -i "246c project_name = service" /etc/placement/placement.conf
! W/ s0 Z  Q; o0 y* s
sed -i "247c username = placement" /etc/placement/placement.conf

* ]3 B& x# J$ j8 K1 ^
sed -i "248c password = 123456" /etc/placement/placement.conf

: q. {/ d4 l& {
su -s /bin/sh -c "placement-manage db sync" placement

* C2 i9 j! C6 L$ l- }
systemctl restart httpd

0 m! E5 X: ]  H9 b. F8 ~8 N7 M2 n5 h& Y2 M  E7 ^1 l
#控制节点 安装Compute service

' d6 M4 G$ j; v! @, M
mysql -uroot -p123456 -e "CREATE DATABASE nova_api"
/ J- m/ h! v9 Q
mysql -uroot -p123456 -e "CREATE DATABASE nova"
$ w# {( d& {6 ^, \- V, A
mysql -uroot -p123456 -e "CREATE DATABASE nova_cell0"

0 [- m% L* y" ?# O. i3 X+ O) ~5 ~
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"

3 ]4 @( l# R% i- c% P- _$ n
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456'"

8 \+ I2 D% A& U% u% O
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
9 `0 y$ ?( m  I; A
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456'"

: d  y3 \" h$ a9 Q6 Z& v  k" N
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"

# T6 H" S$ N, p9 y
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456'"

; n  A1 M- [# K$ _1 p7 _% u8 p( N
openstack user create --domain default --password 123456 nova
: L8 B# ~3 p6 P
openstack role add --project service --user nova admin
- }+ U9 g- S* X& Q- G8 o
openstack service create --name nova --description "OpenStack Compute" compute

( C7 ?5 y* ?; x
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1

4 u9 b5 |% [: K* \
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
2 U: U2 i! a6 i( Q
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

+ C, [9 @! C5 B# Z1 \# p6 \
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler

* Z2 k/ \" M; b+ |6 v: w' W
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf

- P' j/ T  i' F  m: Q# c& D
sed -i "3c transport_url =
rabbit://openstack:123456@controller:5672/
" /etc/nova/nova.conf

$ o2 B, d( I+ g% K, H  H' j
sed -i "4c my_ip = 10.0.0.11" /etc/nova/nova.conf

4 \" u% G+ i( ~, P5 n6 |
sed -i "1079c connection = mysql+
pymysql://nova:123456@controller/nova_api
" /etc/nova/nova.conf

' z4 D! K' q  Q8 p: K- f( X
sed -i "1622c connection = mysql+
pymysql://nova:123456@controller/nova
" /etc/nova/nova.conf
6 \8 B* S  k  P" m5 d; q% c* ?  \4 a
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
. H2 V3 d! P- {) a  L% P+ N/ U2 Q
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf
- p& j$ Y! A; k8 C( g% i) w6 N; l
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf

1 ~4 E3 ^6 c- `$ c
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf
, X" [, n" u9 g) R( B8 ~" z6 Y
sed -i "2564c auth_type = password" /etc/nova/nova.conf
' P$ H* w: d) v5 ?! P
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf
4 a  a7 U# @1 r1 x4 J% ]: n4 T' R
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf
6 f9 S8 V, E9 v! t) ^. @% w
sed -i "2567c project_name = service" /etc/nova/nova.conf

2 n+ C- A, R) J+ a! b, ^
sed -i "2568c username = nova" /etc/nova/nova.conf

3 X% |3 n' r1 g4 \% ~: h
sed -i "2569c password = 123456" /etc/nova/nova.conf

( L# r* @0 T) s+ k- C8 b. `' Y: W
sed -i "5171c enabled = true" /etc/nova/nova.conf
$ B. j3 J7 U1 @9 W) u2 v4 S+ n
sed -i '5172c server_listen = $my_ip' /etc/nova/nova.conf
- L/ A/ M, M4 G& N& L
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf
6 T0 R5 N, |: o0 I0 R
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf
5 O" Y! u6 {" I7 b  d
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf

) c. v& o9 A# n! s0 [$ B
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf
* \8 T% u: L& x/ o
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf
' j7 T: }( I- d$ @/ Y) J. z) L
sed -i "4095c project_name = service" /etc/nova/nova.conf
0 A) p  x; u; P: l
sed -i "4096c auth_type = password" /etc/nova/nova.conf

, k5 P$ D/ \+ t4 _/ [
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf

' l* j& B: f. _+ D" o2 l
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
& y  p+ ]$ ]1 C9 n) j  w- `1 E+ a- x
sed -i "4099c username = placement" /etc/nova/nova.conf

* q7 ~% T; G9 C6 U
sed -i "4100c password = 123456" /etc/nova/nova.conf
$ e1 `  r2 x" Z& F  m1 \7 d. j
sed -i "4509c discover_hosts_in_cells_interval = 300" /etc/nova/nova.conf
. H' l8 i& @/ V5 R% c9 Z& M' @
su -s /bin/sh -c "nova-manage api_db sync" nova

1 l  b" J/ Y% u8 e* \" ^% J0 z
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
7 W/ y# ]  R. i2 Z" e- m
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

6 ]" ?, t) j) ?+ C1 [" q
su -s /bin/sh -c "nova-manage db sync" nova
, X3 e& `. Y+ _6 I
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
5 @4 W2 R. x! L
- z/ q, B* E: L9 K' F5 V
#计算节点 安装Compute service
2 r7 z4 L1 Y6 u, t2 h$ P, W
yum install -y openstack-nova-compute

/ H$ v; v4 T' ]; z& T0 _3 {$ R
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf

& F2 O9 {" y% m# `
sed -i "3c transport_url =
rabbit://openstack:123456@controller
" /etc/nova/nova.conf

: n8 B$ N8 x. E* y$ t1 V8 `
sed -i "4c my_ip = 10.0.0.31" /etc/nova/nova.conf
# L6 r. {7 S) }% B
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
5 ^# d- A, g6 `# h4 e
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf
* ]6 T# Y, [) |8 n6 c
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf
. D+ _* V/ e7 w( ?
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf

, Q. K  j; W4 P  V8 q3 I
sed -i "2564c auth_type = password" /etc/nova/nova.conf
3 [, G, @% O. J2 P! z& E9 G/ S
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf

3 E) `" N) U, ]4 p
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf
5 p2 ^) b& d" q
sed -i "2567c project_name = service" /etc/nova/nova.conf
; h1 k6 A2 r; ?
sed -i "2568c username = nova" /etc/nova/nova.conf
- o" k$ S% h' E% B- ~
sed -i "2569c password = 123456" /etc/nova/nova.conf
# R/ b9 t3 w8 `- B+ R- V
sed -i "5171c enabled = true" /etc/nova/nova.conf

& w. w6 }6 @; ^  g3 ?4 ]3 [
sed -i "5172c server_listen = 0.0.0.0" /etc/nova/nova.conf
0 h1 ]- X8 p- S
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf
2 m, h; V4 H5 q9 |% _8 [" A( P
sed -i "5174c novncproxy_base_url =
http://controller:6080/vnc_auto.html
" /etc/nova/nova.conf

1 g6 m1 q! Z5 G+ U# X. U
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf
( v* N. T5 F) ~. D1 n6 t1 ^; ]
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf

& d" W* q0 x: _4 k- ^
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf

: z+ C( m# u6 o
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf
4 g/ ~4 ?( P* S- p8 o% E3 b0 a# O- `
sed -i "4095c project_name = service" /etc/nova/nova.conf
& I2 a) V: R( v0 J2 y
sed -i "4096c auth_type = password" /etc/nova/nova.conf
$ n- ^/ i$ I9 \( S! P
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf

  i4 f7 b' W3 p
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
) I7 E+ u# T# v) J
sed -i "4099c username = placement" /etc/nova/nova.conf

- J6 l( \7 h6 P) A9 h0 n
sed -i "4100c password = 123456" /etc/nova/nova.conf
. Z6 @2 H+ o3 M2 x4 i0 y& M* Q
4 l1 ?$ O  f# N5 h
#执行命令,查看是否支持CPU虚拟化,如果大于0则支持。
$ r: ?8 h- w/ r0 W/ j
egrep -c '(vmx|svm)' /proc/cpuinfo

8 V; i- Q" \' A+ q6 P7 V; v9 d
#如果不支持的话还需要执行下面的命令
2 @3 H- H5 V# Z; ?
sed -i "2722c virt_type = qemu" /etc/nova/nova.conf

  o8 B. T2 w4 Q7 T6 o
, D' G  b' f1 L. m
systemctl enable libvirtd.service openstack-nova-compute.service && systemctl start libvirtd.service openstack-nova-compute.service
$ m, q  i6 a8 ]% z5 j+ W

. k9 f/ ~$ u' f" q* H5 Y* s
#控制节点 计算节点从注册到发现会有延迟,根据discover_hosts_in_cells_interval 配置轮询发现时间,可以执行下面命令手动发现计算节点
5 X$ M! N* H! m* O' R! T
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
! ~' U6 c6 t: y' V- ]9 ?, q: l
" F$ G% w, n& u9 S
#控制节点 安装Networking service

0 O8 S" [/ f* r
mysql -uroot -p123456 -e "CREATE DATABASE neutron"
5 \0 N' p0 y7 T! E$ h
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456'"

  r! f! X; Y* N" p# f
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456'"
" O. l7 F. I: T5 [# `$ l
openstack user create --domain default --password 123456 neutron

7 ?, k, R( a% S" A+ W
openstack role add --project service --user neutron admin

1 x8 {" L2 H& m/ l
openstack service create --name neutron --description "OpenStack Networking" network
+ W# z: Q2 X: e" D( E  q
openstack endpoint create --region RegionOne network public http://controller:9696
8 g4 i" w2 X# P7 `" z% p
openstack endpoint create --region RegionOne network internal http://controller:9696

8 T, c2 _7 j) M+ W: m
openstack endpoint create --region RegionOne network admin http://controller:9696

0 Y" T  V. p7 w  F0 G! t$ o, z- b6 q
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
- }6 x: T- B% U3 s
#配置服务器组件

% ~9 s" K: F# \! Z. S
sed -i "2c core_plugin = ml2" /etc/neutron/neutron.conf

$ s8 ]: F/ u3 Q2 s* V
sed -i "3c service_plugins = router" /etc/neutron/neutron.conf
& M8 J$ D7 x' u6 J
sed -i "4c allow_overlapping_ips = true" /etc/neutron/neutron.conf
4 i0 U; g0 M2 J% u
sed -i "5c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf
2 x( N$ v9 E9 U9 E4 C
sed -i "6c auth_strategy = keystone" /etc/neutron/neutron.conf
3 w+ y# a+ k1 O1 I5 Y
sed -i "7c notify_nova_on_port_status_changes = true" /etc/neutron/neutron.conf

% E, D# I5 o% I* h1 J+ W7 u2 C
sed -i "8c notify_nova_on_port_data_changes = true" /etc/neutron/neutron.conf

) f& q) ?9 r% O6 O) G% w! b
sed -i "254c connection = mysql+
pymysql://neutron:123456@controller/neutron
" /etc/neutron/neutron.conf

, O& f# p# [5 \, _- q* _
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf
* w" V0 q4 s. N- \
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf

( l+ R+ Y2 C! C2 e; p9 Y$ l( \  k8 X
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf
) C; w" p- w& N. \
sed -i "362c auth_type = password" /etc/neutron/neutron.conf
5 T+ t( S3 i( l9 L. H7 S: Z& y
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf

: W0 n) A2 l! E% I* Q
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf

( `) S; d% f, c" P5 \
sed -i "365c project_name = service" /etc/neutron/neutron.conf

# L8 L$ J* i. Z6 y8 d' w1 r9 e8 _
sed -i "366c username = neutron" /etc/neutron/neutron.conf

+ n8 G. [% e$ B# l0 B
sed -i "367c password = 123456" /etc/neutron/neutron.conf
' C, F- d/ r. }' G% n# |& \
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf

  Y8 c: c" ]( T; W
echo "[nova]" >> /etc/neutron/neutron.conf
4 N1 u: x# x+ @% |! J, \& e  @
echo "auth_url =
http://controller:5000
" >> /etc/neutron/neutron.conf

& W: a$ ?& L% j' G! \
echo "auth_type = password" >> /etc/neutron/neutron.conf

) F6 Z2 P0 b* _" \  m
echo "project_domain_name = default" >> /etc/neutron/neutron.conf
1 g* ^0 F9 z% o3 F* X0 R# t- x
echo "user_domain_name = default" >> /etc/neutron/neutron.conf
! l/ G* c' p( p
echo "region_name = RegionOne" >> /etc/neutron/neutron.conf

% g  O0 ~* N! L: W. ]+ {7 c
echo "project_name = service" >> /etc/neutron/neutron.conf
6 ^1 Z3 g  P9 |( N
echo "username = nova" >> /etc/neutron/neutron.conf
3 G  s; w6 G  \8 q7 g7 Z( o
echo "password = 123456" >> /etc/neutron/neutron.conf
. a  y8 h# y) E
#配置Modular Layer 2 (ML2) plug-in
: P, V; U3 f4 ]& O: U
echo "[ml2]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
8 H" O+ Q- ?3 P5 |: E
echo "type_drivers = flat,vlan,vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

, O0 e& a/ j/ d3 e, S8 w2 s$ f. [
echo "tenant_network_types = vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

/ s, F! C: [0 z% e# ?6 K, w, u
echo "mechanism_drivers = linuxbridge,l2population" >> /etc/neutron/plugins/ml2/ml2_conf.ini

! w# ?" I' P+ y' L$ f
echo "extension_drivers = port_security" >> /etc/neutron/plugins/ml2/ml2_conf.ini

; E% e7 w( n  S3 z! i1 i
echo "[ml2_type_flat]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
! S/ U* t6 I- g4 H3 B: X7 j& t# _
echo "flat_networks = provider" >> /etc/neutron/plugins/ml2/ml2_conf.ini
  N0 f- V/ ]) u+ h
echo "vni_ranges = 1:1000" >> /etc/neutron/plugins/ml2/ml2_conf.ini
& K4 `5 q; U* I6 `& G- t
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

5 V1 V. ^3 p. ^, v; D5 p
echo "enable_ipset = true" >> /etc/neutron/plugins/ml2/ml2_conf.ini
1 n. I# b+ v2 L1 D+ [7 l) {
#配置Linux bridge agent
& q+ e; q) f1 C. X& i% u
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

1 e4 E, b8 g) t( O$ _
#eth1为另外第二张网卡
  \3 k" Z1 k" W8 Q1 q
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
( G4 ^: [: ^* o) X
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

2 f% Q9 M3 L8 M; k# a5 B% l. ?  o
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
0 G! @! [! A1 x9 \6 g1 V. i& Q
#10.0.0.12为第二张网卡的IP

3 L( V6 }2 E1 [* D
echo "local_ip = 10.0.0.12" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

* u# d& D' _& R% {
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

7 l" b6 j' Q5 E1 Q
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
9 J. N4 F' P" a5 q
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
. W+ F# I2 @3 }3 J1 A5 k
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

$ n( T3 L8 {7 k3 G
#配置layer-3 agent

- [  Q$ l1 [- n  c; j1 g" u2 q
sed -i "2c interface_driver = linuxbridge" /etc/neutron/l3_agent.ini
6 l/ u% `* d  P) z% a- s
#配置DHCP agent
6 c6 z5 @' M% B* j  i5 B7 [
sed -i "2c interface_driver = linuxbridge" /etc/neutron/dhcp_agent.ini
! A4 Q" q- H9 B, V2 N+ \2 c1 b2 p6 C
sed -i "3c dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq" /etc/neutron/dhcp_agent.ini

# T; t) w$ e) c  n# j2 M9 F
sed -i "4c enable_isolated_metadata = true" /etc/neutron/dhcp_agent.ini

/ }3 B3 i4 w: |3 H
#配置metadata agent

8 y3 J: Z  r) A- z
sed -i "2c nova_metadata_host = controller" /etc/neutron/metadata_agent.ini
5 |  C" N8 {0 R
sed -i "3c metadata_proxy_shared_secret = 123456" /etc/neutron/metadata_agent.ini

# a& l% k) j3 @  |
#配置计算服务使用网络服务
: ^. |! R5 Y) O- v; y! ?: U. K2 k' b
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf
5 U% t9 S6 b9 }5 L5 X
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
1 ?$ r- F" h1 h& [6 c7 D" F
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf
5 r& s1 x: s( m5 f4 @+ p
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf

8 H2 {  @3 I8 K' D  ]
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf
3 b7 C; u2 K$ P8 M  t, I
sed -i " 3339c project_name = service" /etc/nova/nova.conf
1 Y  [( |& z' z" n; a
sed -i " 3340c username = neutron" /etc/nova/nova.conf

, O9 m* j' _$ [3 T) L% u
sed -i " 3341c password = 123456" /etc/nova/nova.conf
2 M$ o% m1 S! i9 X4 N, T: |# C
sed -i " 3342c service_metadata_proxy = true" /etc/nova/nova.conf

4 u% f) H; M$ d& l" O5 M& T
sed -i " 3343c metadata_proxy_shared_secret = 123456" /etc/nova/nova.conf
" U2 N- Z+ E) J% o: l
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

* x& A( }+ ~5 }" N8 {0 N' H5 w; j9 `
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

! l0 ]7 j7 ^) r; L2 b3 L7 ~; y
systemctl restart openstack-nova-api.service
7 L6 _1 v/ s; f6 t5 I) X
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
# |- [0 |8 c7 P5 C
systemctl enable neutron-l3-agent.service && systemctl start neutron-l3-agent.service
6 v* }! E, n3 {) o5 m& Q
& W. o7 _0 D& L' A4 t
#计算节点 安装Networking service
& ?. |) _5 b- w, O. b  b, d6 E
yum install -y openstack-neutron-linuxbridge ebtables ipset

3 K4 m2 a; @9 n' X
sed -i "2c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf
5 l) N9 A$ u- S& H$ K, a
sed -i "3c auth_strategy = keystone" /etc/neutron/neutron.conf
! W# h4 C( j  V  K% P
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf

/ x: s$ A" g  \6 N# g' \
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf
- \/ ~# l8 K, w
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf
$ X+ P4 m# ]- T+ T) M
sed -i "362c auth_type = password" /etc/neutron/neutron.conf
' R9 X1 H/ i' y. Y8 A
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf

3 l4 e0 `) e+ v+ }/ Y5 ~# k
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf
- s8 y5 t& d0 I
sed -i "365c project_name = service" /etc/neutron/neutron.conf
; \5 N& `  T' H
sed -i "366c username = neutron" /etc/neutron/neutron.conf
( v5 O( P; w( P* n1 _/ t3 D
sed -i "367c password = 123456" /etc/neutron/neutron.conf
& l/ X7 Z5 J* d+ ]* Q
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf
4 E  ]% K  X: T2 ^
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
5 f1 R& A. r8 ^2 S: W5 g
#eth1为另外第二张网卡

1 J* `  D! `% w* f: Y6 u
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
7 j, {3 K! l: W3 \  Z5 T% ]
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
& r* V+ M2 e6 b( d0 h/ l9 _
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

5 w& U% y9 H% P, ?) S: ?
#10.0.0.32为第二张网卡的IP

* N, L; w, C8 `' o- w8 d1 x1 `
echo "local_ip = 10.0.0.32" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

+ g( P: t2 Z* u8 z
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
" _/ n, }4 @% g
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

3 I, p. n3 D5 l( A* h% F1 s
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

1 }+ F* w; Y2 W* P) u/ ^" B% d
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

, m& J% p/ `  Q7 z$ }% W
#配置计算服务使用网络服务
* U/ R$ G! ]! o1 c$ u# R% i' [
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf
- J8 f9 d, ]3 c$ H% V- B4 O
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
* w1 Y6 `1 c1 A1 C
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf

6 O$ r5 d# g# ]  ?3 ]2 _; ]
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf
4 L9 {8 n; f5 \; s" M  V. J
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf

: {3 `6 `/ V5 {7 w9 l
sed -i " 3339c project_name = service" /etc/nova/nova.conf
+ V; c% m8 [! W0 H5 C7 A" B5 a
sed -i " 3340c username = neutron" /etc/nova/nova.conf
3 |, X: G) x6 J1 I+ f
sed -i " 3341c password = 123456" /etc/nova/nova.conf

. D& R; w' C/ G- v; n
systemctl restart openstack-nova-compute.service

/ F( q& ]# u' j% A6 n* Z
systemctl enable neutron-linuxbridge-agent.service && systemctl start neutron-linuxbridge-agent.service

% a" z% T7 w; a/ a3 E4 C" c) t$ C+ Z5 V' Q) r. R
#控制节点 安装Dashboard
& P5 z6 m$ m( G0 M/ c) s/ i
yum install -y openstack-dashboard
& H# @& m: G' i" h( e* T4 j  @
sed -i '118c OPENSTACK_HOST = "controller"' /etc/openstack-dashboard/local_settings

% T  X9 G# V+ b5 q7 f7 s6 t  M
sed -i "39c ALLOWED_HOSTS = ['*']" /etc/openstack-dashboard/local_settings

' V, f  Q7 T  A  A
sed -i "104c SESSION_ENGINE = 'django.contrib.sessions.backends.cache'" /etc/openstack-dashboard/local_settings

1 X1 M5 w% K2 |  w5 C& v
sed -i "94c CACHES = {" /etc/openstack-dashboard/local_settings

6 F( h( q4 Q  U2 o, Y
sed -i "95c 'default': {" /etc/openstack-dashboard/local_settings

; z; i0 b2 b1 _0 Y* Q! a
sed -i "96c 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'," /etc/openstack-dashboard/local_settings
6 x, _( J. O) c, `5 A6 x! ~
sed -i "97c 'LOCATION': 'controller:11211'," /etc/openstack-dashboard/local_settings
# m3 W8 c! `$ |6 B( R
sed -i "98c }" /etc/openstack-dashboard/local_settings

5 o- u, i2 I# O7 R5 z! K+ l1 n" [
sed -i "99c }" /etc/openstack-dashboard/local_settings
! {: ^3 C  U' _8 e! [
sed -i '119c OPENSTACK_KEYSTONE_URL = "
http://%s:5000/v3
" % OPENSTACK_HOST' /etc/openstack-dashboard/local_settings
# b. ]/ A& c  Q3 Y
echo 'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True' >> /etc/openstack-dashboard/local_settings

% k+ s8 z/ R3 y
echo 'OPENSTACK_API_VERSIONS = {' >> /etc/openstack-dashboard/local_settings

6 |& O# M. x0 d3 d$ u$ _& l
echo '  "identity": 3,' >> /etc/openstack-dashboard/local_settings
. M* z! G' ~2 H
echo '  "image": 2,' >> /etc/openstack-dashboard/local_settings

6 k( }$ U# p1 v) G! D! b* ?8 S
echo '  "volume": 3' >> /etc/openstack-dashboard/local_settings

4 q# w1 {& x4 `$ m4 W
echo '}' >> /etc/openstack-dashboard/local_settings
& D  l% ]0 [& `. j
echo 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"' >> /etc/openstack-dashboard/local_settings
0 |0 [" D, I% M$ V+ k* d2 l
echo 'OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"' >> /etc/openstack-dashboard/local_settings
3 w' J; ]" ]& z0 N
sed -i '123c TIME_ZONE = "Asia/Shanghai"' /etc/openstack-dashboard/local_settings

1 s6 v! U+ Z. V9 Q! z
echo "WEBROOT = '/dashboard/'" >> /etc/openstack-dashboard/local_settings
4 c' K! L3 g6 D$ G
echo 'WSGIApplicationGroup %{GLOBAL}' >> /etc/httpd/conf.d/openstack-dashboard.conf

4 F" I5 u7 ]9 V. K6 ~: }, [1 `5 V
systemctl restart httpd.service memcached.service
9 G2 h$ h! {7 i9 m  x' E

' F1 L/ @; ?; K& Z( c
#安装完成,可访问
http://10.0.0.11/dashboard/
查看
/ M% z* \) ], ^! n7 z+ A1 m

0 Y- S  J7 Z7 ~4 p, }$ t" C
0 R9 _- m  b- a
# {7 y/ O' w' Z% _9 ~& d

% m2 c* `8 u" z1 @$ u6 q/ l$ M8 H
, g6 K7 K6 W; {) ~3 S$ \8 p
# H& A; a7 p) W! Y/ L3 ~9 x1 f

总结

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

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

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:24 , Processed in 0.019962 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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