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

openstack ussuri 安装脚本

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-3-17 20:59:06 | 显示全部楼层 |阅读模式
#!/bin/bash
/ W" [: q" `! R) e+ y+ o2 o
/ ~1 s$ c0 A: D' I( ]; |; f3 r
#Centos8最小化部署安装OpenStack Ussuri

' d' e- G( v9 v) i. u1 }
#共两台主机,分别是一台控制节点,一台计算节点

! e( Y) K& `; `7 @- B
#1、控制节点内存4096M。双网卡,分别为eth0:10.0.0.11,eth1:10.0.0.12
% K! B3 _6 R1 l, i+ i: R$ B" M2 J4 j
#2、计算节点内存4096M。双网卡,分别为eth0:10.0.0.31,eth1:10.0.0.32

0 W+ J/ c* b. W1 v4 s6 Z! L4 R* E1 P0 B
#设置阿里云yum源
3 S& h' m& c+ ?9 m( ^
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

( x. m  g* s2 C; A
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
7 H# w5 }2 J) b: X5 c# }! y

+ n5 C6 x8 S9 q' H
#关闭防火墙
( u+ T5 y! a  P
systemctl stop firewalld && systemctl disable firewalld

5 g( `4 p  H, b4 e' Q5 Q5 @1 G+ n! o, e* q; e/ ]2 \4 R
#关闭SELinux

& e- L2 t: f5 s( t; @* S
setenforce 0

/ i6 L0 A5 Z- c; R( B
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

. C, g1 j( M" M) I
$ M- @5 f4 V6 x2 ~# a
#关闭swap分区
: Y- ?/ A" B6 v5 O, m. }  `
swapoff -a

8 F$ k+ e8 z# R$ w& }$ t
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

( p' ~  o6 B6 B! p. Z* C+ S" S6 p) T
#设置内核

' X: P( b9 c. M! ?* ]* c
modprobe bridge

+ Q+ {8 `4 d' |+ v. j: e0 E- _' a: U2 ~
modprobe br_netfilter

7 L4 i/ i2 X# s$ F# U9 ?
cat > /etc/sysconfig/modules/neutron.modules <<EOF
2 H" @: M) z) }) e
#!/bin/bash
3 J1 z5 v, m# |/ _
modprobe -- bridge
7 n" E+ G  @1 I3 Z6 v) }3 g
modprobe -- br_netfilter

, O& q& w4 }! ^
EOF
2 C! u4 G  c! j9 Z8 T2 c2 j0 ]
chmod 755 /etc/sysconfig/modules/neutron.modules && bash /etc/sysconfig/modules/neutron.modules
) g: P4 p1 F4 o: E3 l% V
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

+ D1 \( ^7 {; ~1 b' q) M
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
8 N: _# v6 _3 A! a4 I4 q4 u* ^
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
& C+ Q0 ~( P1 h: z" J$ Q
echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf

4 @- N4 D/ R. S: R
sysctl -p

, U( s/ U: r8 u9 q- s$ s
6 h, o) U% f0 x
#设置时间同步
* S" b( ?/ R2 O( T
yum install -y chrony && yum -y autoremove

8 R4 D1 H+ v0 C2 M! O" v& {9 M/ M
sed -i '/^pool/d' /etc/chrony.conf
5 P# F4 r7 m! d6 x3 h
sed -i '/^server/d' /etc/chrony.conf

, l; {, |/ ?$ u) e1 ~4 f
echo "pool ntp.aliyun.com iburst" >> /etc/chrony.conf
# @# E: k, z# t; m3 T# i4 d
systemctl start chronyd.service && systemctl enable chronyd.service
4 n: Z& S  N5 S' q% v/ k& L

: @1 M- X" @* P/ R" q
#控制节点 设置hostname

* I; w% u- L* _8 B$ `
hostnamectl set-hostname controller

" r  w  _% D) h3 Y: Y# g7 O9 J
  T6 z: C2 x9 C
#计算节点 设置hostname

& b) B" D7 u: l9 V3 o- Y
hostnamectl set-hostname compute1
6 e) t7 Y7 }% P. S% B
! T/ [: M6 o* i9 X- ~+ J0 b
#添加host

& T- m8 q# N- O2 F/ `' e
echo "10.0.0.11 controller" >> /etc/hosts
3 A* R0 c  Z0 C
echo "10.0.0.31 compute1" >> /etc/hosts

+ Z' U( l) S# }; M! G) C- `8 F$ j8 A+ h4 P1 D1 j
#安装基础组件
( k8 p$ P3 ?6 B
yum install -y centos-release-openstack-ussuri

- i5 ~3 o$ Q2 e9 [2 \
yum config-manager --set-enabled PowerTools
/ o* q% H" Y5 @1 C& F4 e
yum upgrade -y
" L5 ^3 ^5 |& C) S5 K
yum install -y python3-openstackclient
  ]/ A  r! y+ ^# [% u# _

2 [( @6 h2 {$ H, O. j
#控制节点 安装Mariadb

# F9 \$ X% o1 H6 H# t
yum install -y mariadb mariadb-server python2-PyMySQL

9 y# l  j& ^* J" ~# L# }  L8 x0 _+ ~
tee /etc/my.cnf.d/openstack.cnf <<-'EOF'

6 i- h' G* z1 D
[mysqld]
; M) V- p& Q% Q6 B- K8 Y
bind-address = 10.0.0.11

6 m7 f& h" e( N0 w; R
default-storage-engine = innodb
% N+ K2 H6 M5 J+ v: t
innodb_file_per_table = on
) b  z) l4 m: Y6 w9 x
max_connections = 4096
( W7 Z5 J8 I; s! p) g; w
collation-server = utf8_general_ci

6 n# U& Y" I$ b. n) I
character-set-server = utf8

/ |4 C: Y5 g! C' f8 q. D+ V
EOF
8 U# f; [! T. ^$ `
systemctl enable mariadb.service && systemctl start mariadb.service

+ u+ I" ]( P4 J, w) ~3 V
echo -e "\nY\n123456\n123456\nY\nn\nY\nY\n" | mysql_secure_installation

- j" e9 z6 d% _  L! ~
- j; `( o- R  ~# O0 j( k
#控制节点 安装RabbitMQ
, J$ k$ P& J7 }4 H, }
yum install -y rabbitmq-server
1 c* j8 p" F( l, L" F
systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service

8 a( ]5 @& j4 S) ?0 T7 c5 X5 W
rabbitmqctl add_user openstack 123456

2 T+ ~& h7 H1 [
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

0 g5 m) C- y, I3 O  b- l
: b* b9 n4 U- i! C9 U
#控制节点 安装Memcached

- O, @) C0 @, z7 W& J
yum install -y memcached python3-memcached
# o: c7 O8 N% h5 S+ ]+ x( u) T" g' r
sed -i "s/-l 127.0.0.1,::1/-l 127.0.0.1,::1,controller/g" /etc/sysconfig/memcached

. H, G. K7 E2 a+ l* j
systemctl enable memcached.service && systemctl start memcached.service

4 R' U2 j# w4 @$ ~( {) ^; Q  H6 R" a
$ f2 A# z, f) G& V
#控制节点 安装Etcd

3 |1 `: j$ ~- S1 f' g& o" t
yum install -y etcd
* ~0 X8 A# ]+ O$ N& F1 j$ R9 v
rm -f /etc/etcd/etcd.conf

; I  h& d8 y# r% q+ a; V
tee /etc/etcd/etcd.conf <<-'EOF'

% V8 K* }$ ^! D) P/ ~' K* D6 s
#[Member]

# ~8 b# ^7 U, }& w/ ?* R9 t
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
7 T6 ~' n: V' \+ `$ Y2 h
ETCD_LISTEN_PEER_URLS="
http://10.0.0.11:2380
"
- x$ M  |1 \& `, ]
ETCD_LISTEN_CLIENT_URLS="
http://10.0.0.11:2379
"

6 ?) ?; X1 v' D" \9 h
ETCD_NAME="controller"

" }$ E8 [, F- G! N7 _* u' n
#[Clustering]

& I  S: S% A+ [! m" O
ETCD_INITIAL_ADVERTISE_PEER_URLS="
http://10.0.0.11:2380
"

- T5 `; n1 U# A$ ~) h* _
ETCD_ADVERTISE_CLIENT_URLS="
http://10.0.0.11:2379
"
, r% s" _4 h( z2 V+ F5 b8 ]
ETCD_INITIAL_CLUSTER="controller=
http://10.0.0.11:2380
"

. \" ^" C. F/ T! |: _
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"

2 N: L+ d0 O. ?+ L
ETCD_INITIAL_CLUSTER_STATE="new"
' M0 g: L; ]0 _# X* d4 Y
EOF
* p3 E" n/ u. _4 m
systemctl enable etcd && systemctl start etcd
% t4 u- V: a- J: g3 C

4 S- R( M+ @% u( O6 g
#控制节点 安装Identity service
, v: D8 s' Q5 V
mysql -uroot -p123456 -e "CREATE DATABASE keystone"

) N+ ~4 O, o4 v/ L! {- ^# u" Q
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456'"
8 \& j. @# c* D  y( F
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456'"
4 B% j) h  h+ y: i  R  V0 `
yum install -y openstack-keystone httpd python3-mod_wsgi

" [! Q7 w: |* o; D
sed -i "556c connection = mysql+
pymysql://keystone:123456@controller/keystone
" /etc/keystone/keystone.conf

$ N4 H/ o% o0 p! J4 ?; E
sed -i "2418c provider = fernet" /etc/keystone/keystone.conf
; P  w- `) ^' `1 E, b
su -s /bin/sh -c "keystone-manage db_sync" keystone

+ e; v5 |. b  Z
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
! B* ?; ^8 P  z! s& g- J- c
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

' `3 J" I7 Q" i' k5 G/ B
keystone-manage bootstrap --bootstrap-password 123456 \
- v* u* x4 p" x1 A9 U
--bootstrap-admin-url http://controller:5000/v3/ \

  W1 ^' M3 [; F% u
--bootstrap-internal-url http://controller:5000/v3/ \
- q6 e5 Y+ }5 z8 ?; _
--bootstrap-public-url http://controller:5000/v3/ \
5 l. c- n, O# D  i9 h+ m
--bootstrap-region-id RegionOne

3 B5 C, j- m2 T. T5 S6 d4 N
echo "ServerName controller" >> /etc/httpd/conf/httpd.conf
! `) F1 O" |; [$ d8 R
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

" s2 v5 J! G. R7 T! F
systemctl enable httpd.service && systemctl start httpd.service

) `7 F% K  D! O
echo "export OS_USERNAME=admin" >> /etc/profile

; a7 \& O; s  ]) O
echo "export OS_PASSWORD=123456" >> /etc/profile
% o% f( T' Q) ]
echo "export OS_PROJECT_NAME=admin" >> /etc/profile

) e  h9 b6 k- Y
echo "export OS_USER_DOMAIN_NAME=Default" >> /etc/profile
$ k" K4 c! x# I4 f3 m3 p0 `
echo "export OS_PROJECT_DOMAIN_NAME=Default" >> /etc/profile
3 m1 U1 x: A7 Q- D" ^
echo "export OS_AUTH_URL=
http://controller:5000/v3
" >> /etc/profile
  M( d8 O; N, j6 ~: A0 G' m1 m& i
echo "export OS_IDENTITY_API_VERSION=3" >> /etc/profile

6 z/ J2 n- m. C/ Q7 K
source /etc/profile

0 v& j% |: t4 |
openstack project create --domain default --description "Service Project" service
' F3 l* C3 M! b
- C3 [; s3 g# ?' T6 t4 J
#控制节点 安装Image service
' \. s- x1 J6 n" d* N8 I
mysql -uroot -p123456 -e "CREATE DATABASE glance"

& P- `: X$ v7 F
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456'"

: }8 P4 o8 a; u& C, g, J) H4 g
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456'"

; y/ q' v5 j. V5 n9 c( [* q
openstack user create --domain default --password 123456 glance
9 `. j  G% u# m' z) e
openstack role add --project service --user glance admin
( l2 F& y0 W) C
openstack service create --name glance --description "OpenStack Image" image

: [4 p/ N3 a, y( W- |( w+ e) |8 @
openstack endpoint create --region RegionOne image public http://controller:9292

+ Q$ U* }( }7 n3 r- S
openstack endpoint create --region RegionOne image internal http://controller:9292

# \& R" W/ h9 ^; R( `5 Q  o! V8 G
openstack endpoint create --region RegionOne image admin http://controller:9292
+ J0 N7 {1 \6 c  l, C5 [3 ^' k
yum install -y openstack-glance

' y7 q. ^) q7 c: E3 ^* E! E% r
sed -i "2062c connection = mysql+
pymysql://glance:123456@controller/glance
" /etc/glance/glance-api.conf

" d- U) |/ {# B' `! Z  R2 [- E
sed -i "5034c www_authenticate_uri =
http://controller:5000
" /etc/glance/glance-api.conf
7 x+ B0 }7 {* ?, `
sed -i "5035c auth_url =
http://controller:5000
" /etc/glance/glance-api.conf

$ q0 P- N7 N% `, H0 J( Z& O. `
sed -i "5036c memcached_servers = controller:11211" /etc/glance/glance-api.conf
1 z, r5 T$ ?8 u3 c; h6 D, U
sed -i "5037c auth_type = password" /etc/glance/glance-api.conf
: ~/ m" j. p8 m
sed -i "5038c project_domain_name = Default" /etc/glance/glance-api.conf

  O6 U9 w( e2 V5 F1 q& p
sed -i "5039c user_domain_name = Default" /etc/glance/glance-api.conf
' k' f! ?$ e$ o" h
sed -i "5040c project_name = service" /etc/glance/glance-api.conf
' U) W- y* i# D8 c
sed -i "5041c username = glance" /etc/glance/glance-api.conf

/ k& H  h, N0 x$ T
sed -i "5042c password = 123456" /etc/glance/glance-api.conf
6 d5 F. }% K7 m
sed -i "5678c flavor = keystone" /etc/glance/glance-api.conf

6 s+ H" F" l+ G, i, f8 ~
sed -i "3413c stores = file,http" /etc/glance/glance-api.conf
; _+ x0 x6 J( d+ Y5 Q
sed -i "3414c default_store = file" /etc/glance/glance-api.conf

: ]% b1 J* i& a8 v
sed -i "3415c filesystem_store_datadir = /var/lib/glance/images/" /etc/glance/glance-api.conf

( w% }# e' }/ G- _- ]8 w, M
su -s /bin/sh -c "glance-manage db_sync" glance

0 i4 r" ^: j/ i- C" q
systemctl enable openstack-glance-api.service && systemctl start openstack-glance-api.service
) o! a3 Y$ z. a' m5 V4 {, ]

1 ~9 Q2 A3 I& `( Q! k
#控制节点 安装Placement service
5 Q% x) w; B$ X# b3 A# h
mysql -uroot -p123456 -e "CREATE DATABASE placement"
7 V3 a. Q7 S+ R5 q
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '123456'"
% z" |: `& T% M1 f% c9 I
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '123456'"

2 |! Z6 b" J) P
openstack user create --domain default --password 123456 placement

2 Q2 e) {* A0 A! |: N8 Z- _% r6 J
openstack role add --project service --user placement admin

* A) f+ D+ ?$ [* ?  g
openstack service create --name placement --description "Placement API" placement

! C$ ~% |% ]4 I5 E5 _
openstack endpoint create --region RegionOne placement public http://controller:8778
! J: j- A7 n- v1 V# X* x  h8 e5 O
openstack endpoint create --region RegionOne placement internal http://controller:8778

5 ?8 t; v. n( _
openstack endpoint create --region RegionOne placement admin http://controller:8778

5 _, G! R; h5 B( X7 u
yum install -y openstack-placement-api
6 a: F* i" d  b, V' D5 G! y* P$ \
sed -i "507c connection = mysql+
pymysql://placement:123456@controller/placement
" /etc/placement/placement.conf

6 j4 C" V8 ^+ G; b6 D1 J% B
sed -i "192c auth_strategy = keystone" /etc/placement/placement.conf
* I$ b. d: h. G6 U7 g, o; w
sed -i "241c auth_url =
http://controller:5000/v3
" /etc/placement/placement.conf
% W# F/ I, ?/ M
sed -i "242c memcached_servers = controller:11211" /etc/placement/placement.conf
4 D2 j) U0 t8 k
sed -i "243c auth_type = password" /etc/placement/placement.conf

* n  j0 a1 I1 r( V& |+ e2 q
sed -i "244c project_domain_name = Default" /etc/placement/placement.conf

$ d3 d! Y1 j  v; T( q, n
sed -i "245c user_domain_name = Default" /etc/placement/placement.conf
/ n' K+ w: }, K: X/ n
sed -i "246c project_name = service" /etc/placement/placement.conf
, k' J6 ^* d* A+ j& a
sed -i "247c username = placement" /etc/placement/placement.conf

/ o( ?, s- Q7 o- ]7 q* i
sed -i "248c password = 123456" /etc/placement/placement.conf

$ c; v( ^; \1 i! u
su -s /bin/sh -c "placement-manage db sync" placement

6 [( r5 o* f' B' X
systemctl restart httpd
8 h' O' N, S+ \* V& Y
  f2 a" a0 N3 J* I; R
#控制节点 安装Compute service

8 f6 v7 i7 i8 }, j- W& P0 Q
mysql -uroot -p123456 -e "CREATE DATABASE nova_api"
7 W; e, W; G( p/ t7 u, z1 c
mysql -uroot -p123456 -e "CREATE DATABASE nova"
; Q7 e9 U- ~. x
mysql -uroot -p123456 -e "CREATE DATABASE nova_cell0"

* c/ I* e) ?, Z6 ^3 E
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"

7 i) A  v4 z- Q: m5 l
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456'"
; g0 S4 A+ ^$ S  P
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
4 D. ~# A/ P9 P) M( q
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456'"

) P/ B6 _( u' r$ B# i
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
8 a$ S; \# g! S3 L
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456'"

1 a4 l2 R% N/ Q* k6 q! A2 W
openstack user create --domain default --password 123456 nova

  l" M3 f1 H$ t. ~
openstack role add --project service --user nova admin

" Q3 W4 f' U( [) T2 m
openstack service create --name nova --description "OpenStack Compute" compute
9 B- m8 f! Q) l: A" p+ \
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1

( B# q$ W- m- b8 k' c
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
' k# S1 v& D8 C. C; i. R, _: ~
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

: `9 ^' P9 Y+ J, f( N2 r
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler

# _6 c4 L7 K8 n  O6 {
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf

5 e; x* E* Q! D1 F
sed -i "3c transport_url =
rabbit://openstack:123456@controller:5672/
" /etc/nova/nova.conf
+ L. w/ [6 U% x( d; B! H1 G
sed -i "4c my_ip = 10.0.0.11" /etc/nova/nova.conf
0 N0 G/ N$ o- L6 ~7 S! Z
sed -i "1079c connection = mysql+
pymysql://nova:123456@controller/nova_api
" /etc/nova/nova.conf
" E9 o: i" \& J2 |
sed -i "1622c connection = mysql+
pymysql://nova:123456@controller/nova
" /etc/nova/nova.conf
0 E5 w- [; }+ C5 \  G$ Q( ?" R
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
) L) E7 p' Y1 X4 O
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf

3 T9 Q/ U0 m1 k+ `' u& l
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf

' q! E4 Z! n! ?8 q4 C9 z
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf
9 a$ ]+ E0 j. r7 J) r& i
sed -i "2564c auth_type = password" /etc/nova/nova.conf

6 P! U- }7 `! e2 d- j
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf
- f" d7 f& P' `0 Y3 Q/ H
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf
3 k  C+ X& y% m- `  ^0 x
sed -i "2567c project_name = service" /etc/nova/nova.conf

# U+ V9 X  ]. E7 D0 U
sed -i "2568c username = nova" /etc/nova/nova.conf

: ]) l4 V( v0 F( \; q; E1 L, |. `
sed -i "2569c password = 123456" /etc/nova/nova.conf
9 n7 n* b- s' M
sed -i "5171c enabled = true" /etc/nova/nova.conf

0 E$ o  n1 Z/ }& V  s1 p# D4 p
sed -i '5172c server_listen = $my_ip' /etc/nova/nova.conf

2 T! L% g, L3 L; K
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf
% I, D6 e- x6 m9 S4 Y6 w
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf
/ Z' k* q6 Z$ G# g9 E( r- R
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf

: G- \. L2 X3 k8 Q0 I) @
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf
5 m' g% X- z+ ^+ x4 J5 X/ U
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf
+ V, e0 d* b7 A) Q
sed -i "4095c project_name = service" /etc/nova/nova.conf

6 H0 I( f- `+ c+ |5 E& u9 R7 h* C2 D- q
sed -i "4096c auth_type = password" /etc/nova/nova.conf

$ x! @. A2 p1 [
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf

: j+ d& B5 X( K' @0 n! }4 s- a+ O
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
! N1 i+ W. r5 ?; |+ `* e
sed -i "4099c username = placement" /etc/nova/nova.conf

5 ^4 P5 U$ e( f7 L
sed -i "4100c password = 123456" /etc/nova/nova.conf
7 `0 m) l5 o1 @3 o9 b8 Q
sed -i "4509c discover_hosts_in_cells_interval = 300" /etc/nova/nova.conf
3 [# {: X1 G: A, _
su -s /bin/sh -c "nova-manage api_db sync" nova

) _. \/ A$ M% z/ u  K. l
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

: G8 v, n4 D3 e( E/ T
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

1 L3 @) W! i# H6 K- w0 p5 r5 T
su -s /bin/sh -c "nova-manage db sync" nova
" w% A) Y/ u. F: i6 U9 \
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

  g0 |5 Q6 M+ v9 X: a0 K: a/ B' [5 T
#计算节点 安装Compute service

0 n* p4 U3 r# D, v+ P
yum install -y openstack-nova-compute
& X0 \2 J) |9 L1 O1 U
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf

/ E1 C, Z9 i4 W: ], o; a
sed -i "3c transport_url =
rabbit://openstack:123456@controller
" /etc/nova/nova.conf
& R$ ?2 h; v3 c6 j! ^9 F6 k
sed -i "4c my_ip = 10.0.0.31" /etc/nova/nova.conf

6 ]2 S; H+ t. ?1 R
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf

6 h! I9 w4 ]8 }& V4 ^* \
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf

* T* V/ h) N) h" f0 w& U
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf
" I, g5 J  K4 A) _* E8 J% @
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf
7 S. p" X: i, Q4 `; |$ e3 r, ^
sed -i "2564c auth_type = password" /etc/nova/nova.conf

' U5 q2 Z9 k: i( s1 C
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf

+ l8 m/ e7 k$ D$ w
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf
; t$ v; a% B) }* y5 p
sed -i "2567c project_name = service" /etc/nova/nova.conf

: i+ P/ U6 G+ ~) _) u9 O  w. ~, y
sed -i "2568c username = nova" /etc/nova/nova.conf

5 t3 |0 s7 [. {  O/ _; @; M
sed -i "2569c password = 123456" /etc/nova/nova.conf
: a" c2 D% R9 u8 n: v3 f
sed -i "5171c enabled = true" /etc/nova/nova.conf
+ K, _0 ]: m1 o5 X3 n( t7 c
sed -i "5172c server_listen = 0.0.0.0" /etc/nova/nova.conf
; C+ u. J1 Z, ^7 m$ w$ t* `3 B
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf

# p! \6 N+ p1 j* e
sed -i "5174c novncproxy_base_url =
http://controller:6080/vnc_auto.html
" /etc/nova/nova.conf

* k/ a8 \/ o1 {7 y9 c
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf

4 A* V6 @) F2 T+ t+ l& O' D
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf
8 u, c/ z& r. u' V
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf
0 V" w7 w( Z: M' g  C# p, E, q$ W
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf

( R# U4 n2 m3 P3 h# e$ ~
sed -i "4095c project_name = service" /etc/nova/nova.conf

, j1 Z; }2 G8 g! _+ w
sed -i "4096c auth_type = password" /etc/nova/nova.conf

5 K4 b! D" W1 H9 L
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf

, M( V2 q( a; r9 T$ S  [
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
+ b# Y3 p8 d- M5 h
sed -i "4099c username = placement" /etc/nova/nova.conf

& ]3 F, Y# u% X/ c% T
sed -i "4100c password = 123456" /etc/nova/nova.conf

! U! g* {  G% y8 _8 O' l( D( b! i; p/ P" }# P
#执行命令,查看是否支持CPU虚拟化,如果大于0则支持。
' w7 T0 C4 h  |
egrep -c '(vmx|svm)' /proc/cpuinfo

0 r4 z" n% D7 h& {9 L
#如果不支持的话还需要执行下面的命令
* c  x( y6 F' g) x3 @9 b7 Q
sed -i "2722c virt_type = qemu" /etc/nova/nova.conf
$ ?$ A# C. r3 q' M4 U

8 f3 R* e; h  A
systemctl enable libvirtd.service openstack-nova-compute.service && systemctl start libvirtd.service openstack-nova-compute.service

, U, [' B' A! G2 j# K' R* N! ~, \' b, m
#控制节点 计算节点从注册到发现会有延迟,根据discover_hosts_in_cells_interval 配置轮询发现时间,可以执行下面命令手动发现计算节点

8 U+ d2 t/ I$ i
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

/ u/ o+ d; ^, ]" }6 T4 u* w2 V6 E& J
#控制节点 安装Networking service
' _' w' m8 U* J
mysql -uroot -p123456 -e "CREATE DATABASE neutron"

/ j% q6 G* Z# e) a+ b2 S7 |5 t+ Q$ Z5 Q
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456'"

1 A! D0 W$ Y! K8 x1 o6 J# H
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456'"
; ~5 P8 ?# S& {% u& x7 h" d7 F
openstack user create --domain default --password 123456 neutron
6 \0 q" Q- `( e& k/ k
openstack role add --project service --user neutron admin

! i! w% k7 `: v' D& N. v
openstack service create --name neutron --description "OpenStack Networking" network

: d  }6 K0 P  l" _; {* s( q
openstack endpoint create --region RegionOne network public http://controller:9696
& v3 k$ {7 Y: J9 f
openstack endpoint create --region RegionOne network internal http://controller:9696
; Z! W1 S# h! m: A) k& M" S. p
openstack endpoint create --region RegionOne network admin http://controller:9696

; B5 ?" F- \( l% U* {% c7 F# i
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

" t- _: e7 j7 g3 }
#配置服务器组件
  t2 E- Z1 m) E2 i
sed -i "2c core_plugin = ml2" /etc/neutron/neutron.conf

3 W: D' t' c5 H
sed -i "3c service_plugins = router" /etc/neutron/neutron.conf

( u6 w, H4 g( F3 z
sed -i "4c allow_overlapping_ips = true" /etc/neutron/neutron.conf
% ]3 P' @. ^4 M. ~# G, I
sed -i "5c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf
0 L8 d7 f# J, y3 {* c5 L7 ~* M" e
sed -i "6c auth_strategy = keystone" /etc/neutron/neutron.conf
% q8 u  @8 V. L4 k
sed -i "7c notify_nova_on_port_status_changes = true" /etc/neutron/neutron.conf

  x  }) m2 C7 u+ X
sed -i "8c notify_nova_on_port_data_changes = true" /etc/neutron/neutron.conf

" y. k8 V0 Z& C/ f2 t% _
sed -i "254c connection = mysql+
pymysql://neutron:123456@controller/neutron
" /etc/neutron/neutron.conf

+ P( z: b' y5 W  r/ n, `! [+ }1 \
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf

- ?: k- s6 C  Q! L+ h; N
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf
  O- t3 j+ g2 b4 i  Q3 z  H
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf

7 D' i3 W/ a: G8 ]
sed -i "362c auth_type = password" /etc/neutron/neutron.conf

9 q7 _& b4 x2 u8 J9 O
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf
* U% m9 H. o& t7 O6 S1 h  w2 ]
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf

9 l" s8 e& x3 b; Q
sed -i "365c project_name = service" /etc/neutron/neutron.conf
, ?5 ~+ {4 x" Q0 c
sed -i "366c username = neutron" /etc/neutron/neutron.conf

- s% E8 b8 y$ X2 n
sed -i "367c password = 123456" /etc/neutron/neutron.conf

* |4 r3 Q; |/ S1 A
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf
, ~$ p3 q5 x; l- C9 }
echo "[nova]" >> /etc/neutron/neutron.conf

7 J1 z9 J% C' k, _5 `
echo "auth_url =
http://controller:5000
" >> /etc/neutron/neutron.conf

  H: @3 N8 z7 p1 o' B
echo "auth_type = password" >> /etc/neutron/neutron.conf
% y" n) j+ `: @
echo "project_domain_name = default" >> /etc/neutron/neutron.conf

; Y: k+ q$ y( C* q9 {9 W
echo "user_domain_name = default" >> /etc/neutron/neutron.conf

/ {9 q. D+ [$ a$ p7 o, [
echo "region_name = RegionOne" >> /etc/neutron/neutron.conf

' C( f8 y5 M% ]2 E) i- N# `8 B. ~, ^
echo "project_name = service" >> /etc/neutron/neutron.conf

$ l" a  k9 [- m" w- z6 g
echo "username = nova" >> /etc/neutron/neutron.conf

8 [# J9 c2 C  Z9 y7 O9 N
echo "password = 123456" >> /etc/neutron/neutron.conf
1 e9 Y( U# P, Y; P# G' c* {/ h! t
#配置Modular Layer 2 (ML2) plug-in

* t. T, g1 B5 C/ k  [2 a
echo "[ml2]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

% y$ N) S+ r: k2 X
echo "type_drivers = flat,vlan,vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini
5 s& N; g6 S2 y/ u, w5 ~9 ?7 `
echo "tenant_network_types = vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

1 I: v  ^4 x- P3 T7 H$ o$ o: {
echo "mechanism_drivers = linuxbridge,l2population" >> /etc/neutron/plugins/ml2/ml2_conf.ini

2 C! U% [, v1 V" J( X
echo "extension_drivers = port_security" >> /etc/neutron/plugins/ml2/ml2_conf.ini

% z$ m) ?1 V, A$ e0 l8 Y
echo "[ml2_type_flat]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
  u# s" y! K8 t, K
echo "flat_networks = provider" >> /etc/neutron/plugins/ml2/ml2_conf.ini
) S1 r2 z7 @; i* W
echo "vni_ranges = 1:1000" >> /etc/neutron/plugins/ml2/ml2_conf.ini
9 X/ [/ L6 _! {7 z8 @5 w7 X
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
  J+ l# p# ^* _
echo "enable_ipset = true" >> /etc/neutron/plugins/ml2/ml2_conf.ini

+ Y" C, u0 A: w1 C
#配置Linux bridge agent

( I! G& ~* {7 ?: y+ Y; H) R# E
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
+ F  d, K  ]0 d1 ^5 n! ~1 i
#eth1为另外第二张网卡

  _5 ?4 y+ x+ H# N: p  T) i
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

3 T) o' e7 z9 {. T* e& M
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

3 A: X5 r/ w. s9 Y: C) k
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

! U' k6 C. M5 o* O0 ?
#10.0.0.12为第二张网卡的IP

3 y. }  a" Y1 p
echo "local_ip = 10.0.0.12" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
7 l6 }- Z( I2 q. F2 `8 `
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

! L/ c+ k5 N% U- p; p) r6 A
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

% s" s$ @' @$ J5 a; D! S
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

. U. p6 D+ U$ S8 u
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
$ }* n" |- Y- f! m7 V% u
#配置layer-3 agent

5 T! T2 S8 o% g/ w( W4 V9 P$ q
sed -i "2c interface_driver = linuxbridge" /etc/neutron/l3_agent.ini

( i$ N0 ?# i8 |. S) t- S7 D
#配置DHCP agent
. X1 ~; A& [+ Y/ ?  Y" N% X1 B" p' L
sed -i "2c interface_driver = linuxbridge" /etc/neutron/dhcp_agent.ini

, M$ h" s& w4 |0 j4 b
sed -i "3c dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq" /etc/neutron/dhcp_agent.ini

; X# Q# y* D0 U
sed -i "4c enable_isolated_metadata = true" /etc/neutron/dhcp_agent.ini

$ ]0 o' \% k2 q4 b- z% s  p
#配置metadata agent
8 w7 n* Z1 B# ^) E3 ]# y
sed -i "2c nova_metadata_host = controller" /etc/neutron/metadata_agent.ini

8 x! y' `; f: S  I$ |' z6 v& R
sed -i "3c metadata_proxy_shared_secret = 123456" /etc/neutron/metadata_agent.ini

( k: U9 G+ o3 J% \/ L9 W/ M
#配置计算服务使用网络服务

+ P  ?2 k3 j% w) {
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf

/ H3 U+ n) T+ O" j/ K* z, i
sed -i " 3335c auth_type = password" /etc/nova/nova.conf

4 }7 k9 ^$ q. b' R! p
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf

" n9 w$ m1 m7 Q. L6 b. m
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf
+ ^: J" p9 E+ N
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf

6 ?/ ^  X$ O0 }" K. z! c6 J
sed -i " 3339c project_name = service" /etc/nova/nova.conf

  W4 v$ a3 _( a( p3 M
sed -i " 3340c username = neutron" /etc/nova/nova.conf
" o! S0 E; r# e' P) X" i9 a) T
sed -i " 3341c password = 123456" /etc/nova/nova.conf

! o' r5 s4 E# s: M# {+ j) w0 I/ N
sed -i " 3342c service_metadata_proxy = true" /etc/nova/nova.conf
) d* Y% {5 b& V3 e8 _" U, B
sed -i " 3343c metadata_proxy_shared_secret = 123456" /etc/nova/nova.conf

% w$ {7 Y. v# z. S4 X1 ]1 _
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

7 P7 ^6 e- {$ B+ J7 F5 T
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

& k/ x/ O$ p  K+ ^* c7 W9 B
systemctl restart openstack-nova-api.service

; E  m' S/ }$ e' G4 y5 e2 a
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
4 w; m- Z& Z; V+ E  g: _5 N
systemctl enable neutron-l3-agent.service && systemctl start neutron-l3-agent.service

. y1 O. r/ V3 D1 r7 l0 E6 Q' ^9 P
7 Q' p; d0 j" O1 H% S
#计算节点 安装Networking service

0 M) F) {. a9 Z, U4 T
yum install -y openstack-neutron-linuxbridge ebtables ipset
5 \: q5 ?4 f0 s* f& y2 z& L
sed -i "2c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf
, K: e( ~/ _+ P) |2 ?5 n- \) f
sed -i "3c auth_strategy = keystone" /etc/neutron/neutron.conf

- A, `6 F% i6 Y3 O
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf

8 I! l9 M- ]) ?/ f
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf
1 l) G! ^3 R  s& c& u2 p) a
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf
7 D5 x# O0 S2 m. R8 `8 X
sed -i "362c auth_type = password" /etc/neutron/neutron.conf
: ^- Y7 L% @7 W% R2 ?
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf

! _3 e* n/ p- d  ]0 a
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf
  e% j% c7 z2 Y+ }  H4 y
sed -i "365c project_name = service" /etc/neutron/neutron.conf
% U7 w6 @( t9 ?/ B
sed -i "366c username = neutron" /etc/neutron/neutron.conf
1 O, `; W' U+ b3 s& }- ]
sed -i "367c password = 123456" /etc/neutron/neutron.conf

# C7 u. q* s& p" A! {# J) x; Q
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf
% f& D! Q' H0 f' X0 t9 @
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
2 y4 a" _7 o" e1 J( y
#eth1为另外第二张网卡

  x! `; R" k. S
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

1 {, a9 c+ {9 x9 K- S: Y: o2 h
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
( H9 N- H  U" v" \9 u& i$ M
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
* z( |1 y% `  P5 h3 W# o8 {
#10.0.0.32为第二张网卡的IP

2 l$ }2 k9 n8 M6 F0 q
echo "local_ip = 10.0.0.32" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
% q) X3 E+ l3 b/ g
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
1 h. j. Y2 v: q8 i& E
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

( x9 y; ^, Z+ x0 }# ]
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
2 z& J7 R( P6 W* H. R
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
, b6 F5 m0 Q: s, C( F9 h. x
#配置计算服务使用网络服务
# Y( z; q# f7 f7 ~  L& S7 H5 @
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf
% S9 R3 `6 E: Q) v$ ^
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
! r9 G& `+ ?# h; K
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf
9 g2 b/ n# P7 X+ F, h( m
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf
7 d; R; w: ?7 ^
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf

5 B5 r: Y2 ~; d. [  O; l1 a
sed -i " 3339c project_name = service" /etc/nova/nova.conf

8 U7 Z4 n3 c" Z% ^+ j
sed -i " 3340c username = neutron" /etc/nova/nova.conf

7 c& |3 k& E% k
sed -i " 3341c password = 123456" /etc/nova/nova.conf
) w% U# c# T! N( u* x
systemctl restart openstack-nova-compute.service
6 R/ a4 `* K. p2 e+ k) e
systemctl enable neutron-linuxbridge-agent.service && systemctl start neutron-linuxbridge-agent.service

9 _# O5 l  B9 i
% ~( w: K* u) t  I
#控制节点 安装Dashboard

1 T' c* {+ {6 c2 _% @- t
yum install -y openstack-dashboard
, P) a, n6 H. N2 K7 M& m8 x
sed -i '118c OPENSTACK_HOST = "controller"' /etc/openstack-dashboard/local_settings
2 G$ i4 D) P" [  D
sed -i "39c ALLOWED_HOSTS = ['*']" /etc/openstack-dashboard/local_settings

1 h; F0 N2 k! G
sed -i "104c SESSION_ENGINE = 'django.contrib.sessions.backends.cache'" /etc/openstack-dashboard/local_settings
- ^7 u) J/ G5 y
sed -i "94c CACHES = {" /etc/openstack-dashboard/local_settings
; G. _1 s" U$ ?
sed -i "95c 'default': {" /etc/openstack-dashboard/local_settings

6 Z* N# k8 D/ U3 s
sed -i "96c 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'," /etc/openstack-dashboard/local_settings
  H- Y1 d& }5 A
sed -i "97c 'LOCATION': 'controller:11211'," /etc/openstack-dashboard/local_settings
: C% ?+ E7 K$ G
sed -i "98c }" /etc/openstack-dashboard/local_settings
9 a& K1 e. b4 p* _# }- s0 T' ~
sed -i "99c }" /etc/openstack-dashboard/local_settings

; d: c" {; F9 ^. d" A2 X
sed -i '119c OPENSTACK_KEYSTONE_URL = "
http://%s:5000/v3
" % OPENSTACK_HOST' /etc/openstack-dashboard/local_settings
5 d9 ?# Q8 o% D7 G
echo 'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True' >> /etc/openstack-dashboard/local_settings

/ i7 p3 B: G1 M' o5 \. A0 t- D
echo 'OPENSTACK_API_VERSIONS = {' >> /etc/openstack-dashboard/local_settings
- s, \8 l/ K& \9 z9 I" T- J
echo '  "identity": 3,' >> /etc/openstack-dashboard/local_settings

, P9 c. \% f7 X+ y2 ?
echo '  "image": 2,' >> /etc/openstack-dashboard/local_settings

  L2 N, {1 E& D+ R
echo '  "volume": 3' >> /etc/openstack-dashboard/local_settings

* Z: w' g3 c7 Z1 T! `' U' Q0 ~
echo '}' >> /etc/openstack-dashboard/local_settings
- G1 `' V; [6 z: B
echo 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"' >> /etc/openstack-dashboard/local_settings
$ d0 I5 ~" s9 G! {  `- Q
echo 'OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"' >> /etc/openstack-dashboard/local_settings
, U4 }' v) \8 f$ x6 t
sed -i '123c TIME_ZONE = "Asia/Shanghai"' /etc/openstack-dashboard/local_settings

$ V( Q2 V- ^, w% n1 l
echo "WEBROOT = '/dashboard/'" >> /etc/openstack-dashboard/local_settings
! B8 f* z. P8 \- D
echo 'WSGIApplicationGroup %{GLOBAL}' >> /etc/httpd/conf.d/openstack-dashboard.conf

# L7 \& r& s9 k9 ^$ G8 s& L! d
systemctl restart httpd.service memcached.service
6 ?% i6 Q: k" h. R) i

0 E. E# Y. G% d( S- B; c9 _
#安装完成,可访问
http://10.0.0.11/dashboard/
查看

2 f. O6 p; ]0 \# a8 H7 C, a

8 m& C" I( M$ u! [

: f6 E' x1 ~- y' U
  N7 p( Q, ^8 H  c! C7 m9 o1 Y& x1 d( V. v
+ `7 w. j! T; y- K: b
* n5 K9 S% ?3 y, r8 q! j" |1 S! f

总结

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

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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