易陆发现互联网技术论坛

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

openstack ussuri 安装脚本

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

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

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

x
#!/bin/bash
, A  i1 @3 Z( k0 ?5 d5 G: E% i0 [

/ M$ a0 S" k) n; V
#Centos8最小化部署安装openstack Ussuri

8 Q) u3 C$ d0 F  l& ?& O
#共两台主机,分别是一台控制节点,一台计算节点
- ?4 G- Z3 i+ r2 i/ N
#1、控制节点内存4096M。双网卡,分别为eth0:10.0.0.11,eth1:10.0.0.12

  ?; d: N) r4 ]* W" \) Y; @
#2、计算节点内存4096M。双网卡,分别为eth0:10.0.0.31,eth1:10.0.0.32

1 M9 R3 J1 n/ L0 a8 z
) A4 l' q7 S# a% b# ?+ Q: [, M! ?
#设置阿里云yum源

5 @8 N3 Y! @- Y  G% U9 r1 E
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

- X. U2 w- _8 O0 _2 }
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
2 q" k2 X# {1 X
  }% e* M0 \7 g7 Z( [0 ?
#关闭防火墙

+ a+ Y4 z! u- L2 O: a. {- G
systemctl stop firewalld && systemctl disable firewalld
4 p3 o0 P+ D: Z  u0 v3 {

1 H2 {' ]2 p8 U( l- w
#关闭SELinux

" C7 w% h& z- M6 M% k$ w: g
setenforce 0

! C) a3 ], x/ W' x
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
3 ~8 a3 E2 U: h! _+ C  W- r9 T2 i
7 h" p  ?; x5 B# @8 T( f) W
#关闭swap分区
/ q4 a3 Q( h0 D$ Z
swapoff -a
5 u8 h: {: H- C/ \
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

! Y+ E  u$ [. ]- o1 m6 g7 X7 N
! h- ?6 \- U. p1 D5 `& G
#设置内核

# o1 G; C3 I. [7 Q# ]3 x6 ?
modprobe bridge
8 \0 k  N- u8 k: ^
modprobe br_netfilter

6 \# D0 m  v; ~0 P
cat > /etc/sysconfig/modules/neutron.modules <<EOF

0 B6 W- y- A+ T& O% x0 ~( V+ }
#!/bin/bash

; S8 n8 ?& \/ k
modprobe -- bridge
7 Y5 S6 p0 V; |- z, h
modprobe -- br_netfilter

- e/ X8 j: m6 \: M3 [
EOF

4 z- L8 G% d* o
chmod 755 /etc/sysconfig/modules/neutron.modules && bash /etc/sysconfig/modules/neutron.modules

/ s# u' ]; c- o! @2 H" U. t
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

; Z: e$ o2 y4 @7 k" E5 ~
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

. i0 |6 }8 \/ A# z6 Q8 y4 B: N
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf

5 I  c1 ~4 b9 G" s
echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf

% {7 V- o6 N9 M5 r5 O
sysctl -p
" F' t# Q8 l( Z& H  R
* ]2 a' x& }( _; E
#设置时间同步

4 b% t0 H' H# a% i/ o" u  }2 P
yum install -y chrony && yum -y autoremove
0 V6 h6 D9 `7 Y4 t# G# L! {
sed -i '/^pool/d' /etc/chrony.conf

7 V, {/ {- v- U% T; `
sed -i '/^server/d' /etc/chrony.conf
# {& F) l" S6 z0 ?! i# {% X
echo "pool ntp.aliyun.com iburst" >> /etc/chrony.conf

1 c9 I. Z; V. G/ m  I5 A' i. s2 Q
systemctl start chronyd.service && systemctl enable chronyd.service
1 |, ^/ @2 y& F% c

; N9 |9 N: _( V. y+ W5 f
#控制节点 设置hostname

9 U. M1 |' n$ ~! c: H+ Z* f
hostnamectl set-hostname controller

2 @+ U$ S6 u; X0 a4 e& f7 d* C4 X) t$ u( V( a  e# u
#计算节点 设置hostname

/ j$ U4 u# [& U6 |- X' m( L
hostnamectl set-hostname compute1

* |- v9 I2 X' ~! q( m
- q% c8 I: U8 ?7 l) ?* c
#添加host
1 L% j$ Q& L/ n4 |' o
echo "10.0.0.11 controller" >> /etc/hosts
  [5 f  d& R1 @4 y& [; }
echo "10.0.0.31 compute1" >> /etc/hosts
/ ?  o/ t; J" n& A/ W: i+ G8 |

5 T: `" |7 F* m/ D' n  |
#安装基础组件
% E0 K9 N: f; ^) P
yum install -y centos-release-openstack-ussuri

" P! J( D( m4 K) [/ `& M& p: g
yum config-manager --set-enabled PowerTools

/ w0 H# w7 J- ?' F2 F9 ~
yum upgrade -y

  z1 g( \4 \1 G" H( Y
yum install -y python3-openstackclient

  f3 b3 V* ]2 D7 n3 [9 F* e9 G  O* \
#控制节点 安装Mariadb

( q0 X% }6 i/ W0 {' @2 n$ y
yum install -y mariadb mariadb-server python2-PyMySQL

: z, ?4 g3 D  k' h3 m: n
tee /etc/my.cnf.d/openstack.cnf <<-'EOF'

7 J- `% ?: v( R5 s( A' M9 v
[mysqld]

" `! @% K+ P" [) a
bind-address = 10.0.0.11
( v! N2 W7 m& z  ?0 y2 U9 I
default-storage-engine = innodb

8 x7 M/ Y! F9 w
innodb_file_per_table = on
( U3 b. n, k# ~; `. y2 O
max_connections = 4096
& J2 X4 T+ C8 M( y# y
collation-server = utf8_general_ci

4 T6 S! R+ ?1 _7 Z: I+ _2 D# J
character-set-server = utf8
% i; C- O0 j5 W; N9 e4 [" E
EOF
) g) i. C. o8 j# N
systemctl enable mariadb.service && systemctl start mariadb.service

( ^8 m: w6 U; S! @# v
echo -e "\nY\n123456\n123456\nY\nn\nY\nY\n" | mysql_secure_installation
$ T# D3 a- g  T7 U) d: X

% a# L) D  ]% O/ q7 c; T1 k) O
#控制节点 安装RabbitMQ

: v! }2 D5 M( i$ b& [
yum install -y rabbitmq-server
& _) O" @3 g: |5 y
systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service
+ h9 S  j( U3 n" J
rabbitmqctl add_user openstack 123456

( {% n- e* h% n
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
; N( |1 v, o9 Z7 o+ x2 n
, B4 ~  m* |: O
#控制节点 安装Memcached

4 h, a& v, o4 r1 [* N4 i( g; O
yum install -y memcached python3-memcached
( [8 t* l% j+ e. q' p7 k: ~/ o+ S- C
sed -i "s/-l 127.0.0.1,::1/-l 127.0.0.1,::1,controller/g" /etc/sysconfig/memcached
; V! ^8 Q9 o9 s
systemctl enable memcached.service && systemctl start memcached.service
# F% m( l0 s( g9 c' B
3 |1 g0 r, l& r
#控制节点 安装Etcd
/ a' W9 n. B$ S* A
yum install -y etcd

1 e# ^! W! @" Y$ n- I7 |- t7 i6 P
rm -f /etc/etcd/etcd.conf

0 [* [; p4 y9 L, e# C
tee /etc/etcd/etcd.conf <<-'EOF'
% |5 t8 S' J* V4 W
#[Member]

# E- f+ p( R( y- \" c9 T
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

! G1 u: o5 Q; p5 `( n6 ?$ [3 g+ A
ETCD_LISTEN_PEER_URLS="
http://10.0.0.11:2380
"
9 w( f  H* ?' X2 N
ETCD_LISTEN_CLIENT_URLS="
http://10.0.0.11:2379
"

6 T5 A# m& C, D! U- l
ETCD_NAME="controller"
9 X7 A+ {2 d& W0 j+ z: N% Z- A4 P
#[Clustering]
4 G8 ~. X* X& X% n) g6 Q
ETCD_INITIAL_ADVERTISE_PEER_URLS="
http://10.0.0.11:2380
"

' w" A: T; c# e# _% o1 v
ETCD_ADVERTISE_CLIENT_URLS="
http://10.0.0.11:2379
"
9 W1 z* E6 L: o5 u3 a8 Y
ETCD_INITIAL_CLUSTER="controller=
http://10.0.0.11:2380
"

/ N( h" p# Q4 c7 H' y0 m
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
/ }0 H8 q4 m) U6 G
ETCD_INITIAL_CLUSTER_STATE="new"
! J' W% L" U8 s2 u8 G7 Y- P$ f( e
EOF

( q* [: R: x  }# g; w: E
systemctl enable etcd && systemctl start etcd
; C8 I1 G/ S8 k0 m1 X
& g. q5 x- c  P+ D
#控制节点 安装Identity service
& c1 L, c/ q( C- @, I7 U
mysql -uroot -p123456 -e "CREATE DATABASE keystone"
1 b2 ^1 b; h: `$ P6 h
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456'"
7 c) \' u* i  T' J/ v0 T5 H; E: V
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456'"
3 e3 Z9 D7 v! y# c, A6 c  Z
yum install -y openstack-keystone httpd python3-mod_wsgi
! L* ?0 o5 `# [0 n
sed -i "556c connection = mysql+
pymysql://keystone:123456@controller/keystone
" /etc/keystone/keystone.conf

+ Y4 [; l, a; M2 t6 d6 J
sed -i "2418c provider = fernet" /etc/keystone/keystone.conf
# |, y2 C9 \8 C
su -s /bin/sh -c "keystone-manage db_sync" keystone
* D; ^, x& n$ X" _) @. B* p0 m9 ^9 {
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
+ R5 ~) Q9 q3 o2 q6 \* Y" V
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
  J- W  L8 r0 q; _/ i5 U
keystone-manage bootstrap --bootstrap-password 123456 \

' X. U% |4 z6 C  b& p
--bootstrap-admin-url http://controller:5000/v3/ \

2 c% B" ]' G% j& F! V
--bootstrap-internal-url http://controller:5000/v3/ \

% r& h' r$ P* |) z4 N
--bootstrap-public-url http://controller:5000/v3/ \

5 {* T" }5 {8 p! A/ G9 \" z
--bootstrap-region-id RegionOne

* k" I# A+ z) A$ `# b( @9 R' h$ a9 j
echo "ServerName controller" >> /etc/httpd/conf/httpd.conf

% y% C; {- |6 l# y
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

% ?) F. T1 w2 ]9 u3 a! O
systemctl enable httpd.service && systemctl start httpd.service
$ e2 k  e1 d. a
echo "export OS_USERNAME=admin" >> /etc/profile
3 e* D9 u2 u) a8 j3 r. @- ]2 h1 q# O
echo "export OS_PASSWORD=123456" >> /etc/profile
+ m2 V! @2 A9 L3 s! a4 r. i* |6 n
echo "export OS_PROJECT_NAME=admin" >> /etc/profile

# x" M" N! V* N# O) q' o+ O+ T
echo "export OS_USER_DOMAIN_NAME=Default" >> /etc/profile
5 [& k3 |- e- P& P: h+ J" w
echo "export OS_PROJECT_DOMAIN_NAME=Default" >> /etc/profile
1 m4 J; t; n& R) E. J9 V) _) ^* {
echo "export OS_AUTH_URL=
http://controller:5000/v3
" >> /etc/profile

: U+ q7 D; ~- h2 W9 V! \
echo "export OS_IDENTITY_API_VERSION=3" >> /etc/profile

9 I: z1 y* W! \1 Z2 }1 o$ K
source /etc/profile

1 c+ {5 x  r8 m7 W9 n- p
openstack project create --domain default --description "Service Project" service
( q% e: f6 G6 N3 [

7 \8 S$ I3 o' K0 O* j& Y& d' I
#控制节点 安装Image service
% L* s% N$ ]# U# w) ?4 b9 t
mysql -uroot -p123456 -e "CREATE DATABASE glance"

0 O* c7 C5 R9 g# C/ l3 c7 v. R
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456'"

; @! O) r1 V/ _$ A1 {0 N
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456'"

- O) `! n4 C, V$ s
openstack user create --domain default --password 123456 glance
$ t' r- W) J7 k. k% O; I: v# z+ u
openstack role add --project service --user glance admin

* b, G2 N/ E3 e+ v, T) h$ n2 E
openstack service create --name glance --description "OpenStack Image" image
% W$ E' n0 [* V* x' G, v$ }
openstack endpoint create --region RegionOne image public http://controller:9292

6 q* [9 M, T6 {: B7 v( l2 U& i' I
openstack endpoint create --region RegionOne image internal http://controller:9292

' f! ~) _) c; H- E! T
openstack endpoint create --region RegionOne image admin http://controller:9292
  e! _9 ^8 G; E9 J8 N
yum install -y openstack-glance
" V$ c, ^6 Y5 O: X7 l
sed -i "2062c connection = mysql+
pymysql://glance:123456@controller/glance
" /etc/glance/glance-api.conf

& w5 g" _. M- E$ \: ~
sed -i "5034c www_authenticate_uri =
http://controller:5000
" /etc/glance/glance-api.conf
; c+ s$ G( o4 g$ f5 i
sed -i "5035c auth_url =
http://controller:5000
" /etc/glance/glance-api.conf

% D3 C5 I2 j! _9 U! D! R( w
sed -i "5036c memcached_servers = controller:11211" /etc/glance/glance-api.conf
5 N+ f6 w& Q: ?2 @) a; f0 ~# Q  ~6 K, D5 M
sed -i "5037c auth_type = password" /etc/glance/glance-api.conf
( q$ ~7 X; p. @' Q0 N) n* O7 E8 R& c
sed -i "5038c project_domain_name = Default" /etc/glance/glance-api.conf

7 m: P. X; S9 B( U
sed -i "5039c user_domain_name = Default" /etc/glance/glance-api.conf
  g- I5 i, g( z" r2 f
sed -i "5040c project_name = service" /etc/glance/glance-api.conf

! p2 [- G( W" L! N$ K" r9 ~
sed -i "5041c username = glance" /etc/glance/glance-api.conf
& k& W4 h0 B- q% N- F6 x* I$ Z
sed -i "5042c password = 123456" /etc/glance/glance-api.conf
7 @5 F0 ?6 U. k) U
sed -i "5678c flavor = keystone" /etc/glance/glance-api.conf

. }3 z% {7 p9 p% e/ s
sed -i "3413c stores = file,http" /etc/glance/glance-api.conf
9 @* ~  L7 U  w; B* i/ V+ M
sed -i "3414c default_store = file" /etc/glance/glance-api.conf

& b* Q: D* _, k
sed -i "3415c filesystem_store_datadir = /var/lib/glance/images/" /etc/glance/glance-api.conf
+ f5 u, J9 z) y) f
su -s /bin/sh -c "glance-manage db_sync" glance
. h1 g2 {* ~$ P% ~  J+ W$ j8 v! {
systemctl enable openstack-glance-api.service && systemctl start openstack-glance-api.service

. f6 E% U$ C* r1 i2 r$ O
6 I, s, u% A/ X+ o/ _6 W
#控制节点 安装Placement service

1 \' |$ c2 r! ?0 A
mysql -uroot -p123456 -e "CREATE DATABASE placement"

1 V+ ?, [% N' g/ Y$ P
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '123456'"
0 K4 b) G- @( k  I
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '123456'"
% u4 N- s3 r+ ]( i4 D% q
openstack user create --domain default --password 123456 placement
( {' ]9 e/ q( C8 b- Y9 q+ R) V
openstack role add --project service --user placement admin
7 F/ u. R& E- R3 O
openstack service create --name placement --description "Placement API" placement

& A, S4 |# I2 S/ X8 X+ |8 M1 a
openstack endpoint create --region RegionOne placement public http://controller:8778
5 ?4 S- {  ^5 H& f
openstack endpoint create --region RegionOne placement internal http://controller:8778

$ e6 ^  k% j0 T% T  t# @5 p
openstack endpoint create --region RegionOne placement admin http://controller:8778

+ `" M2 ^* P( G6 Y! e
yum install -y openstack-placement-api

  A7 M! Z0 a# l+ Q/ w
sed -i "507c connection = mysql+
pymysql://placement:123456@controller/placement
" /etc/placement/placement.conf
9 P8 V6 d. x1 K* A( D- N
sed -i "192c auth_strategy = keystone" /etc/placement/placement.conf
$ x8 I5 D7 M9 d  d
sed -i "241c auth_url =
http://controller:5000/v3
" /etc/placement/placement.conf
/ |! q) r% a: W5 H% f$ ^* ^  l
sed -i "242c memcached_servers = controller:11211" /etc/placement/placement.conf
* ]% I1 \) ^# P3 d* [6 c- }' D
sed -i "243c auth_type = password" /etc/placement/placement.conf
4 `' |2 `" y, E- X
sed -i "244c project_domain_name = Default" /etc/placement/placement.conf

; S6 t! A5 ?1 n
sed -i "245c user_domain_name = Default" /etc/placement/placement.conf
* B0 ^0 p3 b' R& R6 b
sed -i "246c project_name = service" /etc/placement/placement.conf

! X5 @1 E: _+ E: x
sed -i "247c username = placement" /etc/placement/placement.conf
3 {$ X( {$ I5 O
sed -i "248c password = 123456" /etc/placement/placement.conf
  U0 h+ g2 W( W2 g$ {/ O8 Y+ _
su -s /bin/sh -c "placement-manage db sync" placement

0 [2 @% N5 q6 a
systemctl restart httpd

4 l, y# q, D0 L" r6 Z
2 h' d: f0 E  ~2 E; W8 b
#控制节点 安装Compute service
# `$ v0 w9 l+ \, a% r0 F
mysql -uroot -p123456 -e "CREATE DATABASE nova_api"

1 P2 k8 C& _  l0 E8 t
mysql -uroot -p123456 -e "CREATE DATABASE nova"
5 l" [" V' v" z3 s( ]$ @
mysql -uroot -p123456 -e "CREATE DATABASE nova_cell0"
$ A$ _, X. k- q* Q3 X( x4 J
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"

8 }0 f: w. |4 f9 ]
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456'"
- s5 L& Y5 W1 {3 u( L0 U# E5 j
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
  E! S+ Z- Z& {& H& j
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456'"

  Y  p9 o2 \8 h3 Y3 D' ?# L
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"

, O' F4 }6 B, N) R' b, T% c
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456'"

9 L/ l6 Z+ N! p0 `2 p  K
openstack user create --domain default --password 123456 nova

+ q( Q, W% f- b! \
openstack role add --project service --user nova admin

) b% d6 r4 V# c; @# B0 b5 ~
openstack service create --name nova --description "OpenStack Compute" compute
. e" G6 {: h" S( H0 {) y$ l
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
( V5 S- K0 o% {" z5 y% K6 h5 R
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
* \! c. v$ d1 m- o9 h
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
, ]+ v& e6 K5 N% B7 z& f3 B
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler

- F& U4 S. s' S+ c* \
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf
  J/ D9 I0 m: Q  @- F3 K1 Q$ ]# |
sed -i "3c transport_url =
rabbit://openstack:123456@controller:5672/
" /etc/nova/nova.conf

& z% \" Y0 B$ u8 d7 H& X
sed -i "4c my_ip = 10.0.0.11" /etc/nova/nova.conf
( _* R/ W1 m% L5 e6 i' z
sed -i "1079c connection = mysql+
pymysql://nova:123456@controller/nova_api
" /etc/nova/nova.conf

& U& _4 V* H. f; a/ v
sed -i "1622c connection = mysql+
pymysql://nova:123456@controller/nova
" /etc/nova/nova.conf
3 \6 E6 i7 {4 O% L5 f
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
5 I( Y6 h' Z. i, Z* l, e- r
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf

) t( J. ]- C6 z
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf

2 g; W4 e" I- D2 H* b0 l. M$ o
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf

- o1 D) L9 b( @
sed -i "2564c auth_type = password" /etc/nova/nova.conf
: i% r) _6 l& @4 ?, g, n' w
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf

0 a0 d! ~, O8 n8 q3 g
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf

5 j+ q6 O$ E# w& c' _1 m
sed -i "2567c project_name = service" /etc/nova/nova.conf
  ~* T" X! d; d  _+ w( V( s
sed -i "2568c username = nova" /etc/nova/nova.conf
6 Z) Z  N: B; @
sed -i "2569c password = 123456" /etc/nova/nova.conf

. ^& f, _* V& k! z
sed -i "5171c enabled = true" /etc/nova/nova.conf
+ X# C: I% \/ @! U9 T
sed -i '5172c server_listen = $my_ip' /etc/nova/nova.conf
& [8 T+ [$ m, @- F8 I' L3 N8 ]5 h' U2 M
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf
3 c: Q9 j3 ]4 ^; H* d4 N  h
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf
, F* q1 T0 z9 I* {; S+ P
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf

! s0 K5 t4 W& E, T3 v
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf

3 ]" T# ~% w8 ~
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf

3 c3 D6 w2 A: Z9 G( r, w
sed -i "4095c project_name = service" /etc/nova/nova.conf

7 r7 T" S: J0 a; H( r+ s
sed -i "4096c auth_type = password" /etc/nova/nova.conf

! j: v9 X, {9 F0 ?& j5 Y
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf
3 s3 \; H% x! j% [: d  `
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf

9 Q( A$ A/ ]1 j2 j8 V% i
sed -i "4099c username = placement" /etc/nova/nova.conf

* n2 T" O1 @* N& C9 j/ y, J; \1 }
sed -i "4100c password = 123456" /etc/nova/nova.conf
$ I; C: x, j* D, V. D0 \2 R
sed -i "4509c discover_hosts_in_cells_interval = 300" /etc/nova/nova.conf

! v$ Z' \% O; V
su -s /bin/sh -c "nova-manage api_db sync" nova
3 N, a4 }2 b& p
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

$ ?& Y* r9 b& I9 M3 {8 A/ ]  H& A, ~
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

. A1 @  }, l7 M0 N
su -s /bin/sh -c "nova-manage db sync" nova
0 Z  s3 G  l2 `4 b; |
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
! M* [+ {3 e9 K7 t$ v- ]3 ?
; x; X+ l2 l. p+ f$ s8 h
#计算节点 安装Compute service
$ w" q) i- Y5 {, Q9 f3 ?
yum install -y openstack-nova-compute

/ }% ^$ T* h9 ^/ {, V4 J) C
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf
  l1 c0 G5 L# {! Y/ m% S
sed -i "3c transport_url =
rabbit://openstack:123456@controller
" /etc/nova/nova.conf
, f; Z. K( h9 ?
sed -i "4c my_ip = 10.0.0.31" /etc/nova/nova.conf

3 }+ K0 n4 a7 r: r, K
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf

3 i$ c' W. J6 U
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf
7 t& N* Z$ e" ?. T5 F
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf

7 q$ ?( q( D" O- h9 N
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf

* q2 I5 x9 l- A1 Q
sed -i "2564c auth_type = password" /etc/nova/nova.conf

8 h+ n% D1 Q7 i/ l: R  K
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf
: |/ k) u/ J" r" k; H+ ^
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf

/ i$ |( a# p. L/ d6 a
sed -i "2567c project_name = service" /etc/nova/nova.conf
1 r, N1 u, P' v: G
sed -i "2568c username = nova" /etc/nova/nova.conf
; z$ `, `0 s0 u( l+ p0 I
sed -i "2569c password = 123456" /etc/nova/nova.conf
( B/ B) H5 a4 q( w" |4 ]/ n; U
sed -i "5171c enabled = true" /etc/nova/nova.conf
! Q2 z; N, ^. W; x! P* D( y
sed -i "5172c server_listen = 0.0.0.0" /etc/nova/nova.conf
7 s2 L* N+ y- K, K# B2 ?/ _; |, K
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf

  a) ?- U# \( P" v" k: o( w
sed -i "5174c novncproxy_base_url =
http://controller:6080/vnc_auto.html
" /etc/nova/nova.conf

' w  u" w) c% ~% \$ ]
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf

' J  G" m6 _. z" y% R- f
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf

7 g" J' g8 R' I  \1 c- l/ i
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf
' x8 s8 c" T0 b/ p3 |9 b$ D# I
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf

' h& ^8 C; [" A. Z
sed -i "4095c project_name = service" /etc/nova/nova.conf

) m2 d3 F  }6 O$ ^
sed -i "4096c auth_type = password" /etc/nova/nova.conf

6 v( w) a; T1 D. ]; E3 F
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf
- c1 _7 B& z$ ]4 {2 F1 S4 E8 p
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
% `& m+ |: q2 ?! b  L3 t- ^
sed -i "4099c username = placement" /etc/nova/nova.conf

. P+ G- u) [6 |- f. ~" Y5 L0 X
sed -i "4100c password = 123456" /etc/nova/nova.conf
& d# }) T6 k4 [
3 n5 @& F( j8 H0 h# r  ~
#执行命令,查看是否支持CPU虚拟化,如果大于0则支持。

' e2 Z* L% R; d/ A9 ^2 k! S( f) f2 O
egrep -c '(vmx|svm)' /proc/cpuinfo
: P2 ?4 B4 ?3 L8 _! v/ I7 y" t
#如果不支持的话还需要执行下面的命令
, m; a4 W8 K! V5 r
sed -i "2722c virt_type = qemu" /etc/nova/nova.conf

. B5 s- A  b$ O- F, ~2 p- }' o. P2 @( o
systemctl enable libvirtd.service openstack-nova-compute.service && systemctl start libvirtd.service openstack-nova-compute.service
  H. K, e/ D3 C  H- N0 T
1 @1 W. p$ U, ]9 ~5 S" z6 o7 J
#控制节点 计算节点从注册到发现会有延迟,根据discover_hosts_in_cells_interval 配置轮询发现时间,可以执行下面命令手动发现计算节点
8 c' y( t6 b/ c) ^* [( _$ C5 k
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

' E5 J; l3 i7 V; O6 c# R2 x
! _3 A- V5 y9 m! ]: ]& ~1 F
#控制节点 安装Networking service

5 j+ H, w2 O8 H" j  K: p
mysql -uroot -p123456 -e "CREATE DATABASE neutron"
. H' l) o) c1 t" Y8 f! u9 ^& X
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456'"

- w% Z2 W# n- ~. c' P2 R
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456'"

" I* Q# t" U# C8 z; P$ ]" A
openstack user create --domain default --password 123456 neutron

: A: n7 o( J* g+ L2 x: M# ?( w
openstack role add --project service --user neutron admin

: T& N% O# }# u* C* G
openstack service create --name neutron --description "OpenStack Networking" network
& L4 p% Y7 W" O' _1 x
openstack endpoint create --region RegionOne network public http://controller:9696
& B4 v, Z. J- r6 a; D  m- R
openstack endpoint create --region RegionOne network internal http://controller:9696

3 Z% I4 s% j+ x5 K& Z; c2 t6 Y
openstack endpoint create --region RegionOne network admin http://controller:9696
6 O9 U8 `. _/ s. a
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

8 e7 m0 a& A3 Q5 B1 ^" A4 @9 [& q
#配置服务器组件
4 S0 D- \; s2 u* F& p
sed -i "2c core_plugin = ml2" /etc/neutron/neutron.conf

$ X; C7 ~! \5 j" k: w, X; a' }
sed -i "3c service_plugins = router" /etc/neutron/neutron.conf

+ D. r+ g# U7 r) @
sed -i "4c allow_overlapping_ips = true" /etc/neutron/neutron.conf

% p1 Y! T5 I1 i
sed -i "5c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf
  D! v+ a' R( v; T9 F0 L# [  n+ \
sed -i "6c auth_strategy = keystone" /etc/neutron/neutron.conf

$ i+ D  r( X: X) E" |
sed -i "7c notify_nova_on_port_status_changes = true" /etc/neutron/neutron.conf

- L2 u# m1 M; _- R  w; T& f
sed -i "8c notify_nova_on_port_data_changes = true" /etc/neutron/neutron.conf
( A& a- L/ j6 @" {. f
sed -i "254c connection = mysql+
pymysql://neutron:123456@controller/neutron
" /etc/neutron/neutron.conf

8 y4 S! J6 v" U
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf
5 O) e. S( {$ M2 M* {  R
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf

) m1 ^. p2 B8 X2 d- U2 @* D
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf
: d; S: G6 n: [, R' A" [2 N/ p
sed -i "362c auth_type = password" /etc/neutron/neutron.conf

$ |; m. j! U" I
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf
1 e& ?7 t  E; O: E
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf
3 [6 W. [( T! O! C! h! m9 \) m
sed -i "365c project_name = service" /etc/neutron/neutron.conf

1 L* o+ o" C- R$ D; E; W0 t$ Z
sed -i "366c username = neutron" /etc/neutron/neutron.conf

. M/ O- q( v0 s) S' \
sed -i "367c password = 123456" /etc/neutron/neutron.conf

( F1 a) }; l- v# n0 b4 g; H
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf

) w7 M: l4 o( z: r* \
echo "[nova]" >> /etc/neutron/neutron.conf
+ x( O5 i" v$ B5 c$ C
echo "auth_url =
http://controller:5000
" >> /etc/neutron/neutron.conf
# ^& ?/ C0 |$ h3 F7 Z5 _4 i" z
echo "auth_type = password" >> /etc/neutron/neutron.conf

1 U4 ?5 K) w  W6 [* M/ P# B
echo "project_domain_name = default" >> /etc/neutron/neutron.conf

  I# T0 a1 l% Z
echo "user_domain_name = default" >> /etc/neutron/neutron.conf
: M! I1 {6 l+ B; k
echo "region_name = RegionOne" >> /etc/neutron/neutron.conf

. r4 I1 L7 ]* a% X5 \$ B/ p9 O1 Z
echo "project_name = service" >> /etc/neutron/neutron.conf
+ g" {6 k0 R/ x8 o
echo "username = nova" >> /etc/neutron/neutron.conf

! [* w) {3 ?4 b" d4 L7 ]
echo "password = 123456" >> /etc/neutron/neutron.conf

/ G1 I; b9 {  L
#配置Modular Layer 2 (ML2) plug-in

) @+ U7 v: ?6 ]+ h4 X5 \
echo "[ml2]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
+ w- Q8 G; P% A. q8 n# v/ k8 R* A5 ?
echo "type_drivers = flat,vlan,vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini
2 W$ o# u" Q9 H9 X' e
echo "tenant_network_types = vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

0 A8 r2 Q( e* k
echo "mechanism_drivers = linuxbridge,l2population" >> /etc/neutron/plugins/ml2/ml2_conf.ini
. V2 f# \: L: ^# j& q- P
echo "extension_drivers = port_security" >> /etc/neutron/plugins/ml2/ml2_conf.ini

5 U/ I- S5 K: Z8 n6 D
echo "[ml2_type_flat]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

# p3 _0 Q. N* X  Q' N% |
echo "flat_networks = provider" >> /etc/neutron/plugins/ml2/ml2_conf.ini

# z8 ^9 f" r7 P& g; Z3 `7 O8 K5 p
echo "vni_ranges = 1:1000" >> /etc/neutron/plugins/ml2/ml2_conf.ini
! c4 c" d5 O1 O- p
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

' e$ M$ H# ?( \
echo "enable_ipset = true" >> /etc/neutron/plugins/ml2/ml2_conf.ini
5 m) d8 m3 y; C
#配置Linux bridge agent
3 U& f1 a- `& H& b) s
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

/ k& V% I/ {* q, f
#eth1为另外第二张网卡

. Z( [4 F5 t  g% u
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
" ~+ V  ?/ A, [/ M8 G) d8 I) X: Y
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
% l& h, }' A* F' |( j' j# Z
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

+ a: s8 B9 I- T1 C# L
#10.0.0.12为第二张网卡的IP

2 B' g) m0 H8 j: q+ O
echo "local_ip = 10.0.0.12" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

4 \6 X: e6 P! n/ W- j* \1 c6 }
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
+ O& ?. P' q; `
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
3 }, v9 B1 R; T. _& @
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
0 v/ c* E7 ]! G+ _2 g/ X. L9 E( ?: a
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

' H2 y7 u3 k/ C) {9 p0 s
#配置layer-3 agent

) A+ p3 H3 Z  d. K
sed -i "2c interface_driver = linuxbridge" /etc/neutron/l3_agent.ini

% r3 }: y9 t. |4 Z. J
#配置DHCP agent
( e1 n2 Y: w" V' _9 K) Y3 t; U
sed -i "2c interface_driver = linuxbridge" /etc/neutron/dhcp_agent.ini
( W/ @1 M1 l# c3 k
sed -i "3c dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq" /etc/neutron/dhcp_agent.ini
. }0 L- W, c& E, W, C& L7 J# O
sed -i "4c enable_isolated_metadata = true" /etc/neutron/dhcp_agent.ini
- m2 L1 |" V( s3 W3 l
#配置metadata agent

  b! H, d  p7 a- G
sed -i "2c nova_metadata_host = controller" /etc/neutron/metadata_agent.ini
$ W$ i! d, W' T! s" \, G, r0 L# c
sed -i "3c metadata_proxy_shared_secret = 123456" /etc/neutron/metadata_agent.ini
7 I1 v/ s* d9 T
#配置计算服务使用网络服务
3 D4 s$ Y4 m  h$ A8 W: w
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf
; E! a- u5 c: @* W9 y! T
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
) Y  Z/ _9 y: o, f. O
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf

; z' f/ @) A0 Y1 V7 B3 s0 p" F% t
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf
8 u5 m( F7 L- ?# G( |/ K3 {8 q
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf

) r' [: w, O; Z
sed -i " 3339c project_name = service" /etc/nova/nova.conf
+ t: v4 D4 q1 p5 T0 m- @
sed -i " 3340c username = neutron" /etc/nova/nova.conf
, q( g! [4 f+ Q3 t
sed -i " 3341c password = 123456" /etc/nova/nova.conf

6 f/ p$ W  M& q+ n! p2 V
sed -i " 3342c service_metadata_proxy = true" /etc/nova/nova.conf

; u; ?9 l/ g: j5 `; W
sed -i " 3343c metadata_proxy_shared_secret = 123456" /etc/nova/nova.conf
% x- P2 X, S* d3 r
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
: O- |6 ~" z( V
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 ~5 {+ U7 W# ^: z
systemctl restart openstack-nova-api.service
, i4 M1 K% @7 U6 Y
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

- [) X" h: V6 N4 j
systemctl enable neutron-l3-agent.service && systemctl start neutron-l3-agent.service

* `" P- s( x0 q
0 I# Y; ~) ^: i. w, O" V
#计算节点 安装Networking service

; D! {6 d' E: F2 z- n4 f9 n
yum install -y openstack-neutron-linuxbridge ebtables ipset

' U9 d' K5 K; R. {7 d
sed -i "2c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf
7 y& }! \/ x: a' v" t" d
sed -i "3c auth_strategy = keystone" /etc/neutron/neutron.conf
/ ~' B9 E8 |$ `. `- b
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf
, C4 J- v3 u" a; \$ ~
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf
4 w* X! }# T$ g; O% a# G( X+ x
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf
( R" s2 E& }  U2 X; C& C( O+ ~
sed -i "362c auth_type = password" /etc/neutron/neutron.conf
' q9 Y0 g4 a* ~
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf

( `' J9 M( ?8 `
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf

, X7 @( O, Q6 Z3 R
sed -i "365c project_name = service" /etc/neutron/neutron.conf

' M# Z# j0 l4 ]# E' i9 T( s
sed -i "366c username = neutron" /etc/neutron/neutron.conf
' y% v1 w6 Q2 C1 \1 d1 }
sed -i "367c password = 123456" /etc/neutron/neutron.conf
* f  C" _+ a0 J. j# \
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf
9 j6 L3 R! X  ~# V) `( ~$ }
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

* Z4 N& d) A; K2 q+ h9 \
#eth1为另外第二张网卡

# \, E* _+ H, m4 T" }
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
/ D" V4 q0 u7 y$ K( Z. u
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

" `/ l% G( x. [3 y2 N5 M( f
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
3 L9 j3 |" H  f! g+ e" v3 e
#10.0.0.32为第二张网卡的IP
9 ^! {1 Z3 r! s8 C
echo "local_ip = 10.0.0.32" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
, b! V3 T4 d' ^, c
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

# B) b$ I( R$ K1 X  K
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
5 B( K. }$ ^' a! J; D# `
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

& E; H( w: T& w8 F$ g! [* U
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
0 f  D2 }8 k' c1 d/ b
#配置计算服务使用网络服务
5 ^( n5 `9 b0 X$ ?
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf
  A4 D- [) E5 ?
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
2 H! g7 y1 o% }$ R0 C7 Q# S' a
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf

4 R) B# e+ s3 Q# `% s
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf

, L" _& n# J1 c2 k) C! q* E5 B6 p% ^
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf

- N) w; e3 X' s, `1 f5 I: i# B
sed -i " 3339c project_name = service" /etc/nova/nova.conf
; |# p* x. T8 H, ^/ g. u
sed -i " 3340c username = neutron" /etc/nova/nova.conf

! ~3 t( h) E. A! |) U. T
sed -i " 3341c password = 123456" /etc/nova/nova.conf

, N7 z8 j  l2 p2 H3 |
systemctl restart openstack-nova-compute.service

" \0 V, B' v2 q: `: F3 s
systemctl enable neutron-linuxbridge-agent.service && systemctl start neutron-linuxbridge-agent.service
) [+ Q/ m" p; v7 e. k5 k
' r8 ?! _) \( j: k
#控制节点 安装Dashboard
7 i  R/ x4 o0 G( `! l
yum install -y openstack-dashboard

. B' d. F. E+ g. }$ }  y% p
sed -i '118c OPENSTACK_HOST = "controller"' /etc/openstack-dashboard/local_settings
6 S: R! p" ?' `% Z! r- q  o# A# L) b
sed -i "39c ALLOWED_HOSTS = ['*']" /etc/openstack-dashboard/local_settings

! t# d& ]6 C7 G0 d8 Q0 R4 D1 ?
sed -i "104c SESSION_ENGINE = 'django.contrib.sessions.backends.cache'" /etc/openstack-dashboard/local_settings
- S  F3 V* d1 o6 ^0 w  o6 Q  J3 ^
sed -i "94c CACHES = {" /etc/openstack-dashboard/local_settings

" }  T" z  @; K" u1 M6 x  R1 |
sed -i "95c 'default': {" /etc/openstack-dashboard/local_settings

4 O2 B0 H& I5 l
sed -i "96c 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'," /etc/openstack-dashboard/local_settings
9 M2 L, {4 a" l! L$ X+ x* E
sed -i "97c 'LOCATION': 'controller:11211'," /etc/openstack-dashboard/local_settings
( g: m. G) X7 F/ I, t+ d
sed -i "98c }" /etc/openstack-dashboard/local_settings
4 M6 u5 a( F: T+ F3 L
sed -i "99c }" /etc/openstack-dashboard/local_settings
( g( u0 H7 S/ i9 i  Y: F; x
sed -i '119c OPENSTACK_KEYSTONE_URL = "
http://%s:5000/v3
" % OPENSTACK_HOST' /etc/openstack-dashboard/local_settings

6 f" B, w+ z$ ^, \
echo 'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True' >> /etc/openstack-dashboard/local_settings

! Q9 v' ~6 O8 P$ ~- E% ^. u& d1 q7 R6 b. L
echo 'OPENSTACK_API_VERSIONS = {' >> /etc/openstack-dashboard/local_settings

- m% M% h4 j3 n0 b7 F" S
echo '  "identity": 3,' >> /etc/openstack-dashboard/local_settings
* X. t, e4 g' Z1 i
echo '  "image": 2,' >> /etc/openstack-dashboard/local_settings
$ N" u1 |7 p  ?1 b4 A% y
echo '  "volume": 3' >> /etc/openstack-dashboard/local_settings

6 D. m8 [" @& a; Y8 e& |9 X1 ~. G0 N2 e
echo '}' >> /etc/openstack-dashboard/local_settings

( u" b) R* _& M$ N
echo 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"' >> /etc/openstack-dashboard/local_settings
' w5 i8 d, {. t
echo 'OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"' >> /etc/openstack-dashboard/local_settings
0 E) z" R+ A  m& M. ]. [5 H! K6 h3 L
sed -i '123c TIME_ZONE = "Asia/Shanghai"' /etc/openstack-dashboard/local_settings

4 M# f' s! g4 q9 {1 d
echo "WEBROOT = '/dashboard/'" >> /etc/openstack-dashboard/local_settings
: _9 \% ~% Y* C$ W# v; E
echo 'WSGIApplicationGroup %{GLOBAL}' >> /etc/httpd/conf.d/openstack-dashboard.conf

) Z9 M% x+ ?8 |7 u8 ?
systemctl restart httpd.service memcached.service
: d3 `9 j/ [  ]* n

! W, c1 S  X. u# w0 c4 L3 i
#安装完成,可访问
http://10.0.0.11/dashboard/
查看
7 T* v9 Z9 t, `
2 R; m# H6 ?$ t! I6 F! Q
' s3 r0 W7 }3 {( X2 p

6 D+ ^: c7 ^8 P) T4 ?# X: u; c7 M6 X( w3 c( e

; H1 ]" N/ D3 f1 f/ r5 e  Q& R$ w* r& f
5 Q- ?' y' m% ]0 y

总结

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

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

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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