五节点:ext
五节点模板,在 Pigsty 支持的五大操作系统发行版上,准备构建扩展插件的环境,工具与依赖
Categories:
ext
是一个五节点模板,用于在 Pigsty 支持的五大操作系统发行版上,准备构建扩展插件的环境,工具与依赖
配置概览
- 配置名称:
ext
- 节点数量: 五节点,
pigsty/vagrant/spec/oss.rb
- 配置说明:在 Pigsty 支持的五大操作系统发行版上,准备构建扩展插件的环境,工具与依赖
- 适用系统:
el8
,el9
,d12
,u22
,u24
(一次性) - 适用架构:
x86_64
,aarch64
启用方式:直接将 ext.yml
配置文件替换 pigsty.yml
配置文件:
cp conf/build/ext.yml pigsty.yml
备注:这是一个固定IP地址的构建模板
配置内容
源文件地址:pigsty/conf/oss.yml
all:
children:
infra:
hosts:
#10.10.10.7: { infra_seq: 0, admin_ip: 10.10.10.7 }
10.10.10.8: { infra_seq: 1, admin_ip: 10.10.10.8 }
10.10.10.9: { infra_seq: 2, admin_ip: 10.10.10.9 }
10.10.10.12: { infra_seq: 3, admin_ip: 10.10.10.12 }
10.10.10.22: { infra_seq: 4, admin_ip: 10.10.10.22 }
10.10.10.24: { infra_seq: 5, admin_ip: 10.10.10.24 }
vars: { node_conf: oltp }
etcd: { hosts: { 10.10.10.8: { etcd_seq: 1 }}, vars: { etcd_cluster: etcd } }
rpm:
hosts:
#10.10.10.7: { infra_seq: 7, admin_ip: 10.10.10.7 }
10.10.10.8: { infra_seq: 1, admin_ip: 10.10.10.8 }
10.10.10.9: { infra_seq: 2, admin_ip: 10.10.10.9 }
vars:
repo_upstream:
#- { name: pigsty-local ,description: 'Pigsty Local' ,module: local ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://${admin_ip}/pigsty' }} # used by intranet nodes
- { name: pigsty-infra ,description: 'Pigsty INFRA' ,module: infra ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://10.10.10.1/yum/infra/$basearch' }}
- { name: pigsty-pgsql ,description: 'Pigsty PGSQL' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://10.10.10.1/yum/pgsql/el$releasever.$basearch' }}
- { name: base ,description: 'EL 7 Base' ,module: node ,releases: [7 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://vault.centos.org/7.9.2009/os/$basearch/' ,china: 'https://mirrors.aliyun.com/centos/$releasever/os/$basearch/' } }
- { name: updates ,description: 'EL 7 Updates' ,module: node ,releases: [7 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://vault.centos.org/7.9.2009/updates/$basearch/' ,china: 'https://mirrors.aliyun.com/centos/$releasever/updates/$basearch/' } }
- { name: extras ,description: 'EL 7 Extras' ,module: node ,releases: [7 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://vault.centos.org/7.9.2009/extras/$basearch/' ,china: 'https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/' } }
- { name: epel ,description: 'EL 7 EPEL' ,module: node ,releases: [7 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://download.fedoraproject.org/pub/epel/$releasever/$basearch/' ,china: 'https://mirrors.aliyun.com/epel/$releasever/$basearch/' ,europe: 'https://mirrors.xtom.de/epel/$releasever/$basearch/' } }
- { name: centos-sclo ,description: 'EL 7 SCLo' ,module: node ,releases: [7 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://vault.centos.org/7.9.2009/sclo/$basearch/sclo/' ,china: 'https://mirrors.aliyun.com/centos/$releasever/sclo/$basearch/sclo/' } }
- { name: centos-sclo-rh ,description: 'EL 7 SCLo rh' ,module: node ,releases: [7 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://vault.centos.org/7.9.2009/sclo/$basearch/rh/' ,china: 'https://mirrors.aliyun.com/centos/$releasever/sclo/$basearch/rh/' } }
- { name: baseos ,description: 'EL 8+ BaseOS' ,module: node ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/BaseOS/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/BaseOS/$basearch/os/' } }
- { name: appstream ,description: 'EL 8+ AppStream' ,module: node ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/AppStream/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/AppStream/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/AppStream/$basearch/os/' } }
- { name: extras ,description: 'EL 8+ Extras' ,module: node ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/extras/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/extras/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/extras/$basearch/os/' } }
- { name: powertools ,description: 'EL 8 PowerTools' ,module: node ,releases: [ 8 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/PowerTools/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/PowerTools/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/PowerTools/$basearch/os/' } }
- { name: HighAvailability ,description: 'EL 8 HA' ,module: node ,releases: [ 8 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/HighAvailability/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/HighAvailability/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/HighAvailability/$basearch/os/' } }
- { name: NFV ,description: 'EL 8 NFV' ,module: node ,releases: [ 8 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/NFV/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/NFV/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/NFV/$basearch/os/' } }
- { name: RT ,description: 'EL 8 RT' ,module: node ,releases: [ 8 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/RT/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/RT/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/RT/$basearch/os/' } }
- { name: plus ,description: 'EL 8 plus' ,module: node ,releases: [ 8 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/plus/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/plus/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/plus/$basearch/os/' } }
- { name: devel ,description: 'EL 8 devel' ,module: node ,releases: [ 8 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/devel/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/devel/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/devel/$basearch/os/' } }
- { name: crb ,description: 'EL 9 CRB' ,module: node ,releases: [ 9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://dl.rockylinux.org/pub/rocky/$releasever/CRB/$basearch/os/' ,china: 'https://mirrors.aliyun.com/rockylinux/$releasever/CRB/$basearch/os/' ,europe: 'https://mirrors.xtom.de/rocky/$releasever/CRB/$basearch/os/' } }
- { name: epel ,description: 'EL 8+ EPEL' ,module: node ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'http://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch/' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch/' ,europe: 'https://mirrors.xtom.de/epel/$releasever/Everything/$basearch/' } }
- { name: pgdg-common ,description: 'PostgreSQL Common' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/redhat/rhel-$releasever-$basearch' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/common/redhat/rhel-$releasever-$basearch' } }
- { name: pgdg-srpm ,description: 'PostgreSQL SRPM' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/srpms/common/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/srpms/common/redhat/rhel-$releasever-$basearch' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/srpms/common/redhat/rhel-$releasever-$basearch' } }
- { name: pgdg-el8fix ,description: 'PostgreSQL EL8FIX' ,module: pgsql ,releases: [ 8] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/common/pgdg-centos8-sysupdates/redhat/rhel-8-x86_64/' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/pgdg-centos8-sysupdates/redhat/rhel-8-x86_64/' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/common/pgdg-centos8-sysupdates/redhat/rhel-8-x86_64/' } }
- { name: pgdg-el9fix ,description: 'PostgreSQL EL9FIX' ,module: pgsql ,releases: [ 9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/common/pgdg-rocky9-sysupdates/redhat/rhel-9-x86_64/' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/pgdg-rocky9-sysupdates/redhat/rhel-9-x86_64/' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/common/pgdg-rocky9-sysupdates/redhat/rhel-9-x86_64/' } }
- { name: pgdg12 ,description: 'PostgreSQL 12' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/12/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/12/redhat/rhel-$releasever-$basearch' } }
- { name: pgdg13 ,description: 'PostgreSQL 13' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/13/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/13/redhat/rhel-$releasever-$basearch' } }
- { name: pgdg14 ,description: 'PostgreSQL 14' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/14/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/14/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/14/redhat/rhel-$releasever-$basearch' } }
- { name: pgdg15 ,description: 'PostgreSQL 15' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/15/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/15/redhat/rhel-$releasever-$basearch' } }
- { name: pgdg16 ,description: 'PostgreSQL 16' ,module: pgsql ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/16/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/16/redhat/rhel-$releasever-$basearch' } }
- { name: pgdg17 ,description: 'PostgreSQL 17' ,module: pgsql ,releases: [ 8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/17/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/17/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/17/redhat/rhel-$releasever-$basearch' } }
- { name: pgdg-extras ,description: 'PostgreSQL Extra' ,module: extra ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/common/pgdg-rhel$releasever-extras/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/pgdg-rhel$releasever-extras/redhat/rhel-$releasever-$basearch' , europe: 'https://mirrors.xtom.de/postgresql/repos/yum/common/pgdg-rhel$releasever-extras/redhat/rhel-$releasever-$basearch' } }
- { name: timescaledb ,description: 'TimescaleDB' ,module: pgsql ,releases: [7,8,9] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://packagecloud.io/timescale/timescaledb/el/$releasever/$basearch' } }
#----------------------------------#
# build el8 packages on Rocky 8.9
#----------------------------------#
el8:
hosts: { 10.10.10.8: { pg_seq: 1, pg_role: primary } }
vars:
pg_cluster: pg-el8
node_default_packages:
- python3,python3-pip,python3-virtualenv
- pgdg-srpm-macros,postgresql1*-devel,postgresql1*-server
- pkg-config,dnf-utils,dnf-plugins-core,modulemd-tools
- rpm-build,rpmdevtools,createrepo_c,createrepo,jq,firebird-devel,libfq
- llvm,llvm-devel,clang,ccache,flex,bison,make,cmake,CUnit,ninja-build
- git,ncdu,wget,openssl,openblas*
- readline-devel,zlib-devel,lz4-devel,libzstd-devel,openssl-devel,krb5-devel,hiredis-devel,gsl-devel,python3-docutils
- libcurl-devel,libxml2-devel,gd-devel,pcre-devel,libical-devel,clamav-devel,uriparser-devel,librdkafka-devel,libsodium-devel
- python3.11,python3.11-devel
- libomp,libomp-devel,lld
#----------------------------------#
# build el9 packages on Rocky 9.3
#----------------------------------#
el9:
hosts: { 10.10.10.9: { pg_seq: 1, pg_role: primary } }
vars:
pg_cluster: pg-el9
node_default_packages:
- python3,python3-pip,python3-virtualenv
- pgdg-srpm-macros,postgresql1*-devel,postgresql1*-server
- pkg-config,dnf-utils,dnf-plugins-core,modulemd-tools
- rpm-build,rpmdevtools,createrepo_c,createrepo,jq,firebird-devel,libfq
- llvm,llvm-devel,clang,ccache,flex,bison,make,cmake,CUnit,ninja-build
- git,ncdu,wget,openssl,openblas*
- readline-devel,zlib-devel,lz4-devel,libzstd-devel,openssl-devel,krb5-devel,hiredis-devel,gsl-devel,python3-docutils
- libcurl-devel,libxml2-devel,gd-devel,pcre-devel,libical-devel,clamav-devel,uriparser-devel,librdkafka-devel,libsodium-devel
- python3.11,python3.11-devel
- libomp,libomp-devel,lld
- cpanminus
#----------------------------------#
# build d12 packages on Debian 12
#----------------------------------#
d12:
hosts: { 10.10.10.12: { pg_seq: 1, pg_role: primary } }
vars:
pg_cluster: pg-d12
node_default_packages:
- postgresql-all
- postgresql-server-dev-all
- build-essential,debhelper,devscripts,fakeroot,pkg-config
- lz4,unzip,bzip2,pv,jq,git,ncdu,make,patch,bash,lsof,wget,uuid,tuned,nvme-cli,numactl,sysstat,iotop,htop,rsync,tcpdump
- python3,python3-pip,socat,lrzsz,net-tools,ipvsadm,telnet,ca-certificates,openssl,chrony,zlib1g,acl,dnsutils,libreadline-dev,vim-tiny,openssh-server,openssh-client
- ninja-build,flex,bison,make,cmake,git,ncdu,wget,libtinfo5,libstdc++-12-dev,firebird-dev
- libreadline-dev,zlib1g-dev,libicu-dev,libssl-dev,libpq-dev,libxml2-dev,libxslt1-dev,libldap2-dev,libperl-dev,libsodium23,libsodium-dev,libgd-dev,libgc-dev,libpam0g-dev,libsqlite3-dev,libhiredis-dev,libgsl-dev
- python3-dev,tcl-dev,libkrb5-dev,libsasl2-dev,uuid-dev,libossp-uuid-dev,gettext,libcurl4-openssl-dev,libopenblas-dev,liblz4-dev,libzstd-dev,libpulse-dev,liburiparser-dev,libcrack2-dev,librdkafka-dev,python3-docutils
#----------------------------------#
# build u22 packages on Ubuntu 22.04
#----------------------------------#
u22:
hosts: { 10.10.10.22: { pg_seq: 1, pg_role: primary } }
vars:
pg_cluster: pg-u22
node_default_packages:
- postgresql-all
- postgresql-server-dev-all
- build-essential,debhelper,devscripts,fakeroot,pkg-config
- lz4,unzip,bzip2,pv,jq,git,ncdu,make,patch,bash,lsof,wget,uuid,tuned,nvme-cli,numactl,sysstat,iotop,htop,rsync,tcpdump
- python3,python3-pip,socat,lrzsz,net-tools,ipvsadm,telnet,ca-certificates,openssl,chrony,zlib1g,acl,dnsutils,libreadline-dev,vim-tiny,openssh-server,openssh-client
- ninja-build,flex,bison,make,cmake,git,ncdu,wget,lld,libtinfo5,libstdc++-12-dev,firebird-dev
- libreadline-dev,zlib1g-dev,libicu-dev,libssl-dev,libpq-dev,libxml2-dev,libxslt1-dev,libldap2-dev,libperl-dev,libsodium23,libsodium-dev,libgd-dev,libgc-dev,libpam0g-dev,libsqlite3-dev,libhiredis-dev,libgsl-dev
- python3-dev,tcl-dev,libkrb5-dev,libsasl2-dev,uuid-dev,libossp-uuid-dev,gettext,libcurl4-openssl-dev,libopenblas-dev,liblz4-dev,libzstd-dev,libpulse-dev,liburiparser-dev,libcrack2-dev,librdkafka-dev,python3-docutils
#----------------------------------#
# build u24 packages on Ubuntu 24.04
#----------------------------------#
u24:
hosts: { 10.10.10.24: { pg_seq: 1, pg_role: primary } }
vars:
pg_cluster: pg-u24
node_default_packages:
- postgresql-all
- postgresql-server-dev-all
- build-essential,debhelper,devscripts,fakeroot,pkg-config
- lz4,unzip,bzip2,pv,jq,git,ncdu,make,patch,bash,lsof,wget,uuid,tuned,nvme-cli,numactl,sysstat,iotop,htop,rsync,tcpdump
- python3,python3-pip,socat,lrzsz,net-tools,ipvsadm,telnet,ca-certificates,openssl,chrony,zlib1g,acl,dnsutils,libreadline-dev,vim-tiny,openssh-server,openssh-client
- ninja-build,flex,bison,make,cmake,git,ncdu,wget,lld,libstdc++-12-dev,firebird-dev #libtinfo5
- libreadline-dev,zlib1g-dev,libicu-dev,libssl-dev,libpq-dev,libxml2-dev,libxslt1-dev,libldap2-dev,libperl-dev,libsodium23,libsodium-dev,libgd-dev,libgc-dev,libpam0g-dev,libsqlite3-dev,libhiredis-dev,libgsl-dev
- python3-dev,tcl-dev,libkrb5-dev,libsasl2-dev,uuid-dev,libossp-uuid-dev,gettext,libcurl4-openssl-dev,libopenblas-dev,liblz4-dev,libzstd-dev,libpulse-dev,liburiparser-dev,libcrack2-dev,librdkafka-dev,python3-docutils
#----------------------------------#
# build el7 packages on CentOS 7.9
#----------------------------------#
#el7:
# hosts: { 10.10.10.7: { pg_seq: 1, pg_role: primary } }
# vars:
# pg_cluster: pg-el7
# node_default_packages:
# - python3,python3-pip,python3-virtualenv
# - rpm-build,rpmdevtools,createrepo_c,createrepo
# - llvm,llvm-devel,clang,ccache,flex,bison,make,cmake,CUnit
# - git,ncdu,wget,openssl,openblas*
# - readline-devel,zlib-devel,lz4-devel,libzstd-devel,openssl-devel,krb5-devel
# - hiredis-devel,gsl-devel,python3-docutils,uriparser-devel,librdkafka-devel
# - libcurl-devel,libxml2-devel,gd-devel,pcre-devel,libical-devel,clamav-devel
# - pgdg-srpm-macros,postgresql1*-devel,postgresql1*-server
# - pkgconfig,yum-utils
vars:
version: v3.1.0
admin_ip: 10.10.10.8
region: china
etcd_clean: true
proxy_env: # global proxy env when downloading packages
no_proxy: "localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.*,*.myqcloud.com,*.tsinghua.edu.cn"
node_conf: oltp
node_repo_modules: infra,pgsql,node
node_repo_remove: true # remove existing repo on node?
repo_url_packages: []
注意事项
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.