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

openstack 扩容脚本修改

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-11-23 11:50:13 | 显示全部楼层 |阅读模式
扩容脚本:
5 i( Y1 V; u( e0 B% ~% J% \#!/bin/bash* R! N, ~4 p4 L! }5 N
#3 V* O2 C) d( j+ F2 \
#修改hostname$ ^8 d( t1 u: ?
MASTERHOSTNAME=`ip a|grep global|awk -F/ '{print $1}'|awk '{print $2}'|awk -F. '{print "-"$3"-"$4}'`;hostnamectl --static set-hostname compute$MASTERHOSTNAME.dev01-gonn0101.controller5 Q3 X' r" h! |0 [2 c/ L
IPADDR=`ip a|grep -w inet|grep -w brd|awk '{print $2}'|awk -F/ '{print $1}'`
/ R) |* c4 p4 p  H9 U( D#gome yum 源
1 ~2 X3 q7 k, Z% a, m$ G" j1 Hgomerepo init0 k6 J7 R* x. z! d  X4 P
gomerepo enable openstack_newton2 V; K. P" X% x9 m! F. S
gomerepo enable ovirt, E; m/ ~5 o3 d. ~0 R
#安装软件) p1 _$ t2 J4 w6 g( X
yum install -y libvirt-daemon-driver-storage-2.0.0-10.el7_3.9.x86_64
/ G* M) j$ v2 C7 p8 V, U9 ?  Lyum install -y libvirt-client-2.0.0-10.el7_3.9.x86_64
4 g' E6 o; r" y4 Y- p5 ?9 V7 _yum install -y libvirt-daemon-driver-qemu-2.0.0-10.el7_3.9.x86_64
. n3 w" O: S+ x! X" w. wyum install -y libvirt-daemon-driver-nodedev-2.0.0-10.el7_3.9.x86_64
3 P8 t3 u: ]3 {9 G: D3 D0 myum install -y libvirt-daemon-2.0.0-10.el7_3.9.x86_64
. w# @/ M4 J3 Z4 p  s9 Byum install -y libvirt-daemon-driver-secret-2.0.0-10.el7_3.9.x86_64
3 @( h' v1 S: {, ]# P: dyum install -y libvirt-python-2.0.0-2.el7.x86_641 v; V0 r8 i# Y" |; H; d
yum install -y libvirt-daemon-driver-network-2.0.0-10.el7_3.9.x86_64
3 S2 g: |8 y. x% jyum install -y libvirt-daemon-driver-nwfilter-2.0.0-10.el7_3.9.x86_64
2 ^6 b5 D5 t( ?yum install -y libvirt-daemon-kvm-2.0.0-10.el7_3.9.x86_64/ s0 t2 O4 h  l! n* b5 s/ `* W' V
yum install -y qemu-kvm-ev-2.6.0-27.1.el7.x86_646 x! ^# W' O  ~3 T, g
yum install -y openvswitch-2.5.0-2.el7.x86_649 D1 l8 J- }1 e( e- N6 |% \( i
yum install -y python-openvswitch-2.5.0-2.el7.noarch
4 h/ K0 N, [. ?( ?2 K. nyum install -y openstack-neutron-common-9.1.1-1.el7.noarch3 b% ]( R3 k+ F, x3 }* N+ {
yum install -y openstack-neutron-openvswitch-9.1.1-1.el7.noarch; b8 L3 Z  \5 U& m4 T% m
yum install -y openstack-neutron-ml2-9.1.1-1.el7.noarch
$ n5 F+ I. d  B, v) _( p: lyum install -y openstack-nova-compute-14.0.2-1.el7.noarch2 R. A* ?, v5 X9 K
yum install -y openstack-nova-common-14.0.2-1.el7.noarch
* R' _$ E" x2 C2 pyum install -y openstack-utils-2017.1-1.el7.noarch/ s' T- U6 D* X4 N( x9 N
#配置文件* u5 v7 x& f1 J/ T5 D" b' T. w9 p9 ]. |
cat <<EOF> /etc/nova/nova.conf. V  h2 A- w0 I4 [- g+ R' C; p6 a
[DEFAULT]+ o+ R! G5 D: G
my_ip = $IPADDR
# C* j0 O/ Z5 ]& q+ e7 @" qlog_dir = /var/log/nova
& D1 D3 @% @" @; Xauth_strategy = keystone
5 g' k' h$ I( b9 p2 G6 rdebug = false; H: ^+ p. h6 [# I
workers = 40% \  ?8 J3 h3 ]0 g
multi_host = true6 h. z9 S& |( |
state_path = /data/openstack/nova  n- y; a6 z9 q$ i  z
allow_resize_to_same_host = true# X$ x7 h5 e( A! I; J; C
resume_guests_state_on_host_boot = true; h2 q, ~) ^' [1 i: Y/ s, A) ]1 _
virt_type = kvm
9 n1 T) ?2 C; C: \2 W* m1 I. x: tcpu_allocation_ratio = 3.0
9 D0 n5 d6 K$ U4 v/ ?/ t& {ram_allocation_ratio = 1.2; ?- P: r+ G; N5 ], F7 n
disk_allocation_ratio = 1.0( {1 n6 L3 d* z! q* `' k
max_instances_per_host = 25, Y5 O( P/ N, C% B, y1 Z3 b4 K& h
instance_usage_audit = True
5 `# B4 U% J; O  w. `+ d# e0 g/ b6 s0 L6 _instance_usage_audit_period = hour0 b8 O7 M" W. s
notify_on_state_change = vm_and_task_state
. f0 ~; S) L1 d, Y2 [. [enabled_apis = osapi_compute,metadata/ m+ O; Q4 |! h1 g
running_deleted_instance_action = reap; C' h8 f$ r% K: |- Q9 Y* q& a
multi_instance_display_name_template = %(name)s-%(count)s
& t0 l" j9 `: K7 C+ Jscheduler_driver = nova.scheduler.filter_scheduler.FilterScheduler) F- a  J. \% h. ]) c5 e- M
#vcpu_pin_set = 8-39
2 |, ]" q4 b. K# Z3 n#console_allowed_origins =2 e* U$ o+ I  s
scheduler_default_filters = RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NumInstancesFilter+ M/ J7 J8 R/ A% ^0 {
firewall_driver = nova.virt.firewall.NoopFirewallDriver4 Y$ e# ^7 O# `& f5 z( i
use_neutron = true# `2 J4 [  t7 x* ]. C, J* U
osapi_compute_listen = $IPADDR; x$ s  [6 x& O' G
osapi_compute_listen_port = 8774
0 b2 O7 u4 U/ o, M5 xmetadata_listen = $IPADDR8 K& I% O1 ?3 g0 D+ i
metadata_listen_port = 87754 M+ G# z6 O" p, \
default_log_levels = amqplib=WARN,sqlalchemy=WARN,boto=WARN,suds=INFO,qpid.messaging=INFO,iso8601.iso8601=INFO
, _  \+ w) G! ?( F, J, O2 o5 lmemcached_servers = controller-3-28:11211,controller-3-29:11211
1 J) I1 m6 R$ R/ s3 yrpc_backend = rabbit' k. q9 U  P- T
network_api_class = nova.network.neutronv2.api.API5 s9 F! q$ e" Y. G; c/ w3 A
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver5 ^$ J: v' V6 `" J! _6 m" G
neutron_admin_tenant_name = service
$ `9 F) v3 S" H5 `& zneutron_auth_strategy = keystone
6 \1 [1 j4 A+ y9 K/ c( Esecurity_group_api = neutron9 D, b$ o8 u& k/ I8 r
firewall_driver = nova.virt.firewall.NoopFirewallDriver7 x& K8 O# V6 `8 ?+ V7 k) Z" I
force_config_drive = true- M& K+ Q( M6 {
# config_drive_skip_versions =+ @# n: r6 M$ K. S
flat_injected = True
+ y" B& t1 d% Nuse_syslog = false
6 R6 b: Y# g4 P& Kuse_stderr = false( X+ F# Y  n. N
osapi_max_limit = 5000
8 y5 L2 p8 F0 C: X( r. j1 B[api_database]
6 V& w( ?& P7 \3 Econnection = mysql+pymysql://nova:QVcQ6QJ0Pn1a@mysqlserver/nova_api
% k5 K- z4 ^( q0 k$ k( V6 A* Xmax_pool_size = 100
/ `7 {  `8 z) Qmax_overflow = 2005 W/ O$ h" {9 |% ~# d* d5 A
[barbican]
* P# C. F4 E" b/ L, |' f7 F1 t[cache]
" i" r0 j2 r' {- i% v[cells]
$ X/ j- [  _+ I, l5 R[cinder]
# p0 x# y+ f+ v: \  l$ v: w- q[cloudpipe]" R1 N" \0 w9 p
[conductor]1 A, |! s( p$ P4 j: V
[cors]
, ~* v; B! C" j5 Q[cors.subdomain]
2 A' {  z, U: @2 Z$ x[crypto]
+ m5 ]# z5 ?" b$ H[database]
5 |5 [6 e# j- k! [connection = mysql+pymysql://nova:QVcQ6QJ0Pn1a@mysqlserver/nova
7 Q3 v+ V/ `9 T! smax_pool_size = 1007 y0 h8 c( a' {6 j9 q: k
max_overflow = 200  g0 w5 i9 e2 ?2 m! m6 H
[ephemeral_storage_encryption]& S! W, f& f/ V+ V5 n$ Y& i% y
[glance]9 w2 D% b1 V  `4 d' E6 [
api_servers = http://controller:92920 s5 F2 y7 T+ e% H9 j1 f7 O
[guestfs]
" y3 ^, |. `2 q" T[hyperv]0 a7 e) k8 p7 b
config_drive_cdrom = true
* E! U5 \9 z1 E" k# config_drive_inject_password = true. p& S& K: T: y6 e0 {
[image_file_url]
( N5 g3 |' e  M; v. U5 J[ironic]
) R) ]; D- C+ O# z1 {1 a[key_manager]( [, {: C' Z; W
[keystone_authtoken]
$ D1 Y& u- R1 x" cauth_uri = http://controller:5000/v3+ b; H. Y2 [5 {: ~. C; ~, a% Q* W+ U
auth_url = http://controller:35357/v3
, U: R0 Q5 [0 V! _( sauth_type = password
! E; @; {- t: ~. Fproject_domain_name = default( Q( Y" ~; B% R, ?- w3 j! l
user_domain_name = default
: W& d; H1 i0 A7 n- rproject_name = service
& |# [3 |; k4 K$ H3 }7 x1 Husername = nova
! |0 G/ i3 @6 t. Ipassword = newnovapass# e3 v; a9 h) I+ S
[libvirt]
1 h* Z" a! ~5 H. D$ \# a[matchmaker_redis]- P  M1 e6 M2 v! g
[metrics]
( s. G! Q: z; [. \9 t0 I[mks]
9 f! A, y. p  f4 f[neutron]
8 |0 @4 @0 Z2 R6 e8 l8 f1 ?; }8 @* M* `url = http://controller:9696, O1 a% n$ I' S; z; m
auth_uri = http://controller:5000/v3
1 ^' O8 }& [- K1 e( dauth_url = http://controller:35357/v3& I; }; u/ {  t" N" d: l: n) \# f
auth_type = password
8 M6 L# l1 K7 j6 `6 jproject_domain_name = default- r  R( E$ X3 y/ Q
user_domain_name = default
6 m; @' ?% R7 h! Z5 ]1 e" Z3 B8 ~region_name = RegionOne
. w7 i" F* `& aproject_name = service8 ~1 v7 u1 T) _4 C/ t8 s: ?- i. J& v
username = neutron- \7 D# r7 Y# Y5 a
password = newneutronpass
0 n2 p( W, m( b5 x4 Z: j  H+ H. Uservice_metadata_proxy = false
# l+ a1 H  B! _9 _' t. e) f' Y[osapi_v21]
3 y" ^1 Q/ J2 M' D[oslo_concurrency]' N% h% `' r  X6 }1 k
lock_path = /var/lib/nova/tmp
0 I( O$ p, O7 S& j[oslo_messaging_amqp]
2 p- R4 c* K9 r$ Y7 m[oslo_messaging_notifications]
4 [0 u5 K: [& D; E+ I$ B[oslo_messaging_rabbit]
, i8 m% A9 i( h3 h) ~4 Lrabbit_hosts = controller-3-28:5672,controller-3-29:5672
* `2 q" z7 }0 f( T7 ^' r! srabbit_ha_queues = true. W' k3 v  K3 ?: `* D/ H, z
rabbit_userid = openstack7 [% I* M( G% d# d2 y7 S: Z$ @2 x8 _
rabbit_password = h1Zg3IvdIiCx
2 m4 r& f5 b7 q9 G/ ~1 Y5 |heartbeat_timeout_threshold = 0  v( |8 v; d8 s, p
rabbit_max_retries = 3
! W" k# Z( N, D- P[oslo_messaging_zmq]9 t8 M, }6 X  J8 B
[oslo_middleware]6 f' r# x4 A1 ^- N+ R* m
[oslo_policy]
- a# X4 O/ G9 M* F# d& E. @[placement]' t3 X, u0 E8 G4 D) X8 n3 t
[placement_database]6 B5 R1 q0 E% _% L5 c7 Z
[rdp]4 Q' t. J: j8 n9 ~2 T1 ?, `: v
[remote_debug]9 E9 D6 Q  G- n) E2 c5 o8 V
[serial_console]
7 p: a; O, U2 C3 C[spice]
/ ?2 Z; Q% r& y4 t- _[ssl]6 M! v) f$ X- {0 k) u
[trusted_computing]
  _) S" k8 ]3 I" O2 P[upgrade_levels]: j0 [+ ]) L* f  o0 @/ K9 @
[vmware]
* ^* r' b* y& M2 M[vnc]
1 q: R6 t* B, f' F+ b/ Y$ pnovncproxy_base_url=http://10.152.3.1:6080/vnc_auto.html
; {2 v3 Z! C" U" i1 ?novncproxy_host = $IPADDR* `/ a* h- V7 }
vncserver_listen = $IPADDR
8 e/ m* C. f" w: _# U2 Nvncserver_proxyclient_address = $IPADDR
: _* G. q4 K4 k- C& Unovncproxy_port = 6080# v' x8 s$ ]# z* r5 u
[workarounds]
2 x' R4 U, C1 H- d) H. _[wsgi]
: ^. ~, S' x$ a. P[xenserver]: M* F2 B7 K+ {+ o. o
[xvp]; k; g( j1 y) t4 A2 C2 G% _8 v
EOF0 X2 i0 d$ x5 g- N* W3 B
cat <<EOF> /etc/neutron/neutron.conf; W, B& A" p- N7 B# E  Q
[DEFAULT]
# x# i5 w* G7 C7 gbind_host = $IPADDR
. B4 u8 y  r0 X7 Gbind_port = 9696
  N1 @5 {* A- ~/ s5 F' G- V) zcore_plugin = ml2
7 C) O7 U4 {( t5 P8 p( Cdebug = false7 @# b! I% p# I
use_syslog = false9 j3 t+ e8 y6 C+ p2 n
log_dir = /var/log/neutron/ a; k. k6 v/ e& o9 y
service_plugins = router,metering
4 d4 E* D5 U8 k' I( h; yauth_strategy = keystone* e$ i$ w7 N/ n/ n' `7 q
base_mac = fa:16:3f:00:00:00& o# A5 F: O; D; k
allow_overlapping_ips = true# ]/ s! K+ t2 f$ u
mac_generation_retries = 16+ L5 N" y5 I& Q6 B) B
auth_strategy = keystone. \" W) H8 G, W4 t* E2 B
notify_nova_on_port_status_changes = true
- J! m; r; w/ }' U7 s* Qnotify_nova_on_port_data_changes = true
' S1 l) w& B0 h" C. |5 Unotification_driver = neutron.openstack.common.notifier.rpc_notifier4 h! }: T! l4 z1 |
rpc_backend = rabbit
5 N. r* w8 D/ X. f+ F$ c3 a$ hagent_down_time = 75' Z  M& N8 U" c  u0 D( i$ t" T
api_workers = 40# ]  C; ?, y6 F% E4 Z" j0 B
rpc_workers = 40
# l6 h' w+ w! o# P8 _send_events_interval = 2, G/ m/ |- T3 f$ ^1 H9 V, f( [
[agent]
: S; t( c! u* h9 T; x/ F- Ucheck_child_processes_interval = 30
' X. A( W: R' t4 o7 ^check_child_processes_action = respawn
& g2 [9 h! I1 A[cors]3 r1 w# K# O0 m) f2 g. s. o
[cors.subdomain]
" i, m5 @9 n8 p2 ][database]  E/ N( Z) M0 @2 @6 G
connection = mysql+pymysql://neutron:Ol1fBhLMCFr7@mysqlserver/neutron0 G' W0 J( K" s# |  k7 b
max_pool_size = 150( b8 f  e2 J. R( _6 n
max_overflow = 300
: v$ [3 y* \0 r  s9 m+ L[keystone_authtoken]* s# c9 ^( B6 |4 H" }4 \9 ]8 z& e
auth_uri = http://controller:5000/v39 F& ]$ Q6 @: [, O
auth_url = http://controller:35357/v3
1 J6 b  n/ }) w$ @memcached_servers = controller-3-28:11211,controller-3-29:11211
, S2 {- s( R$ [6 }5 i* hauth_type = password( o4 m" {' W) _+ h0 G7 C! z& Z
project_domain_name = default" L) s& w" n$ t3 I
user_domain_name = default0 Z( `0 `- j: d
project_name = service
8 l' b0 y; O# u: G! G$ V4 C: M+ y  Q; gusername = neutron
3 J: B  {, e3 T( _% _password = newneutronpass
. F1 ?; H- R3 V, ~  ~( I6 Z* L[matchmaker_redis]: a- f" g2 f& D2 S9 l
[nova]/ \0 q5 ^4 B  O' f8 l- y
url = http://controller:8774/v2.11 G' O: z/ r* y: W; t. Q$ o
auth_uri = http://controller:5000/v3
9 c  o# N* s( X5 w' F* Lauth_url = http://controller:35357/v3
4 l% y  e" Q  lauth_type = password
% L+ \; y& L  w4 Q5 n" J/ Nproject_domain_name = default
0 j1 Y' N# o: [6 c7 M: i7 ~user_domain_name = default
- z2 P' M0 p, Y: |region_name = RegionOne, v) T; u6 s1 |6 W
project_name = service
$ q& j: S5 v3 ^username = nova: G4 A: m. _' s- d+ N: s- K% E8 z1 a
password = newnovapass
/ V  u3 X7 m) l9 z9 w4 Y[oslo_concurrency]) W+ m* ]' H" T$ J
lock_path = /var/lib/neutron/tmp. ^5 `" s7 B( o! Q% Q; v* Y
[oslo_messaging_amqp]
% @3 |. L' j0 |: c: X. T; Y* Q1 [[oslo_messaging_notifications]/ u# I* o3 o8 g% i7 U8 H2 J  r$ U
[oslo_messaging_rabbit]
6 M+ Z/ |( g7 _# u1 M4 Irabbit_hosts=controller-3-28:5672,controller-3-29:56726 ^8 H( v+ h2 J
rabbit_ha_queues=true
* i; w8 S& }1 g/ ^7 N) Mrabbit_userid = openstack) }! E0 Y* D9 J
rabbit_password = h1Zg3IvdIiCx3 A$ x6 _6 O* [. ]
heartbeat_timeout_threshold=0
( K) R5 i8 _" e% }+ c3 ?* l& ]rabbit_max_retries=2
$ `  b4 y1 U2 L[oslo_messaging_zmq]
) _0 H7 p& s  C* l3 l% w1 l[oslo_middleware]; h" }4 B2 x, y+ H
[oslo_policy]
! j! U9 q# F$ n[qos]
& y9 s! x) z3 e+ F, @4 a' t& F[quotas]* ~5 y* G& o/ }6 l5 k+ U
[ssl]' {1 {4 u0 P- @; I
EOF% a4 S% a3 y* d. O
cat <<EOF> /etc/neutron/plugins/ml2/ml2_conf.ini; u8 i- d" T# j) B
[DEFAULT]3 e4 k8 }: k: w# \
[ml2]
  A& P! T7 {; P' t$ ?type_drivers = vlan$ A2 J, b% |+ B; z) e3 Q
tenant_network_types = vlan
# `0 q; O5 R; d5 Amechanism_drivers = openvswitch
* m1 W. e9 Y: `& W+ j  s[ml2_type_flat]
& D: l# \9 p5 _flat_networks = physnet1# y, g5 U1 x. X  k
[ml2_type_geneve]
. m0 f7 V3 d0 _$ O- F# e[ml2_type_gre]
) E8 w7 q' t( f[ml2_type_vlan]) m( Z8 o) I9 b
network_vlan_ranges = physnet1:1:4000
, J6 X# L9 ~9 D" Z[ml2_type_vxlan]5 m4 B! L$ {$ p6 w
[securitygroup]
" H  J* o$ a* U+ }0 \enable_security_group = false0 q- B6 U# k4 Z, j4 Y- H2 }
firewall_driver = neutron.agent.firewall.NoopFirewallDriver
4 e; c. a" l  AEOF
( l0 @4 L% g2 a( B6 V- [! |2 r, A/ ecat <<EOF> /etc/neutron/plugins/ml2/openvswitch_agent.ini
9 o6 E" S% _4 l# I[DEFAULT]) ~  Q0 [: w6 {8 K% [/ w" o! G
[agent]
. b/ a/ g1 ^1 q5 v: S" Q/ @prevent_arp_spoofing = false& t& O+ ]" d& A  r! o
[ovs]7 U: q; @! L% i) s; s5 i
bridge_mappings = physnet1:br-bond03 f0 Q7 x- q/ o# f
[securitygroup]& y+ w2 D) o8 c$ {# X: u
enable_security_group = false* q, F' ~; g- J
EOF
4 m. \( G3 V& V$ m" e% o4 W#修改nova权限- c% }  l6 Y1 x7 d1 i
sed -i '/^nova/d' /etc/passwd
; Q( d/ v, k) v+ l. c+ l8 _7 Mecho "nova:x:162:162:OpenStack Nova Daemons:/var/lib/nova:/bin/sh" >> /etc/passwd% d" f8 D5 l* @9 p4 F
#设置开机启动
4 C9 Q; N# R( x5 Usystemctl enable openstack-nova-compute.service neutron-openvswitch-agent.service openvswitch.service3 {; S6 K) _( F- ^/ U2 l' t
#启动服务
1 J/ ]/ ~$ x# \- lsystemctl start openstack-nova-compute.service neutron-openvswitch-agent.service openvswitch.service6 f; S- p8 J! G! s4 X5 e
#设置
& D& m4 L0 a. m  p9 B& j! Tovs-vsctl show
3 B% n2 N* b* N* A* |1 i9 V7 \4 Jovs-vsctl add-br br-int, W  s% ~" R* E# Y! d
ovs-vsctl add-br br-bond0; p3 l* i$ P$ ^- I* N+ U
ovs-vsctl add-port br-bond0 bond0: o, c# ]! N  I: _% z7 w9 z8 C
#创建openstack目录并拷贝nova文件
2 h* c! _* L6 B" y$ M3 C/ Emkdir -p /data/openstack ; cp -a /var/lib/nova /data/openstack/
1 _- |9 L, W' S& Z#更改权限
& F: i9 T7 K" Y! U1 ~( ~echo "neutron ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers
  x% @6 p  @& }+ u4 `+ k  becho "nova ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers
3 H# m# q" n6 }* K0 zcp -a /usr/share/nova/interfaces.template /usr/share/nova/interfaces.template_bak3 c+ I8 b1 G) N& }/ J9 r3 W
cat /usr/lib/python2.7/site-packages/nova/virt/interfaces.template > /usr/share/nova/interfaces.template! ?' I" R# D* L/ i& i  h
systemctl restart openstack-nova-compute.service ; systemctl restart neutron-openvswitch-agent.service% `1 w' Z: P$ w- X4 h( ?
#拷贝key文件
) R- G. s- ~* w3 |scp -r root@10.152.3.25:/var/lib/nova/.ssh /var/lib/nova/2 ^1 {% F" K; w3 M( X
#更改权限
7 U6 T" L3 @. H$ n% Y& A* `chown -R nova:nova /var/lib/nova/.ssh
! m$ W5 ~/ z; }! Z) v: f8 ~* f5 I# K6 Q- o' p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:00 , Processed in 0.025386 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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