设为首页 收藏本站
查看: 1083|回复: 0

[经验分享] CentOS7 安装cobbler自动部署ubuntu

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-10-12 13:34:38 | 显示全部楼层 |阅读模式
CentOS7 安装cobbler自动部署ubuntu

一、简介
二、安装CentOS 7 调整配置及安装相关软件
1、调整配置
2、安装 epel 包
3、安装cobbler、cobbler-web 以及相关依赖软件
4、设置开机启动
三、Cobbler、tftp、dhcp、rsync配置
1、TFTP配置
2、配置rsync
3、配置/etc/cobbler/settings
4、修改/etc/cobbler/modules.conf
5、修改/etc/cobbler/dhcp.template
6、重启cobbler httpd服务
四、检查cobbler配置
五、导入镜像并查看导入情况
1、导入镜像
2、查看
六、编辑seed文件
1、普通分区配置
2、lvm分区配置
七、注意事项
八、截图



一、简介Cobbler是红帽开发的批量部署系统的工具,对RHEL、CentOS支持完美
对其他发行版的linux部分支持,也不是很完美
本文介绍的是基于CentOS 7上安装cobbler 2.6的文档
参照了网上的一些教程和官方文档,加上自己的实践,特别是分区部分,调试了数十次才算完美了。
二、安装CentOS 7 调整配置及安装相关软件1、调整配置安装完成后关闭selinux或参照cobbler官方文档设置selinux,http://cobbler.github.io/manuals/2.6.0/4/2_-_SELinux.html
[iyunv@cobbler-server ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config  
重启服务器
关闭iptables以及取消开机启动,centos7 minimal没有安装ipables
关闭firewall或放行80 67 68 69 443 端口
80 443是cobbler web管理界面端口
67 68 是DHCP端口
69是TFTP端口
[iyunv@cobbler-server ~]# systemctl stop firewalld
[iyunv@cobbler-server ~]# systemctl disable firewalld
2、安装 epel 包[iyunv@cobbler-server ~]# yum install epel-release
[iyunv@cobbler-server ~]# yum makecache
3、安装cobbler、cobbler-web 以及相关依赖软件[iyunv@cobbler-server ~]# yum install cobbler cobbler-web xinetd pykickstart cman dhcp -y
4、设置开机启动[iyunv@cobbler-server ~]# systemctl enable httpd
[iyunv@cobbler-server ~]# systemctl enable dhcpd  
[iyunv@cobbler-server ~]# systemctl enable cobblerd
三、Cobbler、tftp、dhcp、rsync配置1、TFTP配置配置tftp绿色着色为修改后的值
[iyunv@cobbler-server ~]# vim /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
2、配置rsync[iyunv@cobbler-server ~]# systemctl enable rsyncd
CentOS7上安装cobbler 对于rsync无需额外配置
3、配置/etc/cobbler/settings[iyunv@cobbler-server ~]# cat /etc/cobbler/settings |grep '^[^#]'
---
allow_duplicate_hostnames: 0
allow_duplicate_ips: 0
allow_duplicate_macs: 0
allow_dynamic_settings: 0
anamon_enabled: 0
authn_pam_service: "login"
auth_token_expiration: 3600
build_reporting_enabled: 0
build_reporting_sender: ""
build_reporting_email: [ 'root@localhost' ]
build_reporting_smtp_server: "localhost"
build_reporting_subject: ""
build_reporting_ignorelist: [ "" ]
cheetah_import_whitelist:
- "random"
- "re"
- "time"
createrepo_flags: "-c cache -s sha"
default_kickstart: /var/lib/cobbler/kickstarts/default.ks
default_name_servers: []
default_ownership:
- "admin"
default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac."
default_template_type: "cheetah"
default_virt_bridge: xenbr0
default_virt_file_size: 5
default_virt_ram: 512
default_virt_type: xenpv
enable_gpxe: 0
enable_menu: 1
func_auto_setup: 0
func_master: overlord.example.org
http_port: 80
kernel_options:
ksdevice: bootif
lang: ' '
text: ~
kernel_options_s390x:
RUNKS: 1
ramdisk_size: 40000
root: /dev/ram0
ro: ~
ip: off
vnc: ~
ldap_server: "ldap.example.com"
ldap_base_dn: "DC=example,DC=com"
ldap_port: 389
ldap_tls: 1
ldap_anonymous_bind: 1
ldap_search_bind_dn: ''
ldap_search_passwd: ''
ldap_search_prefix: 'uid='
ldap_tls_cacertfile: ''
ldap_tls_keyfile: ''
ldap_tls_certfile: ''
mgmt_classes: []
mgmt_parameters:
from_cobbler: 1
puppet_auto_setup: 0
sign_puppet_certs_automatically: 0
puppetca_path: "/usr/bin/puppet"
remove_old_puppet_certs_automatically: 0
manage_dhcp: 1
#cobbler接管DHCP,默认为0,此处修改以后需要修改对应/etc/cobbler/dhcp.template模板
manage_dns: 0
bind_chroot_path: ""
bind_master: 127.0.0.1
manage_tftpd: 1
manage_rsync: 1 #接管rsync,无需额外配置rsync
manage_forward_zones: []
manage_reverse_zones: []
next_server: 192.168.11.252 #本机ip地址
power_management_default_type: 'ipmitool'
power_template_dir: "/etc/cobbler/power"
pxe_just_once: 0
pxe_template_dir: "/etc/cobbler/pxe"
consoles: "/var/consoles"
redhat_management_type: "off"
redhat_management_server: "xmlrpc.rhn.redhat.com"
redhat_management_key: ""
redhat_management_permissive: 0
register_new_installs: 0
reposync_flags: "-l -n -d"
restart_dns: 1
restart_dhcp: 1
run_install_triggers: 1
scm_track_enabled: 0
scm_track_mode: "git"
server: 192.168.11.252 #本机ip地址
client_use_localhost: 0
client_use_https: 0
snippetsdir: /var/lib/cobbler/snippets
template_remote_kickstarts: 0
virt_auto_boot: 1
webdir: /var/www/cobbler
xmlrpc_port: 25151
yum_post_install_mirror: 1
yum_distro_priority: 1
yumdownloader_flags: "--resolve"
serializer_pretty_json: 0
replicate_rsync_options: "-avzH"
replicate_repo_rsync_options: "-avzH"
always_write_dhcp_entries: 0
proxy_url_ext: ""
proxy_url_int: ""

4、修改/etc/cobbler/modules.conf[iyunv@cobbler-server ~]# cat /etc/cobbler/modules.conf |grep '^[^#]'

[authentication]
module = authn_configfile
[authorization]
module = authz_allowall
[dns]
module = manage_bind
[dhcp]
module = manage_isc #如果是dnsmasq就应该为manage_dnsmasq
[tftpd]
module = manage_in_tftpd

5、修改/etc/cobbler/dhcp.template[iyunv@localhost cobbler]# cat /etc/cobbler/dhcp.template |grep '^[^#]'
ddns-update-style interim;
allow booting;
allow bootp;
ignore client-updates;
set vendorclass = option vendor-class-identifier;
option pxe-system-type code 93 = unsigned integer 16;
subnet 192.168.11.0 netmask 255.255.255.0 {
     option routers             192.168.11.252;
     option domain-name-servers 192.168.11.252;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.11.100 192.168.11.200;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                $next_server;
     class "pxeclients" {
          match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
          if option pxe-system-type = 00:02 {
                  filename "ia64/elilo.efi";
          } else if option pxe-system-type = 00:06 {
                  filename "grub/grub-x86.efi";
          } else if option pxe-system-type = 00:07 {
                  filename "grub/grub-x86_64.efi";
          } else {
                  filename "pxelinux.0";
          }
     }
}
    ## group could be subnet if your dhcp tags line up with your subnets
    ## or really any valid dhcpd.conf construct ... if you only use the
    ## default dhcp tag in cobbler, the group block can be deleted for a
    ## flat configuration
group {
        #for mac in $dhcp_tags[$dhcp_tag].keys():
            #set iface = $dhcp_tags[$dhcp_tag][$mac]
    host $iface.name {
        hardware ethernet $mac;
        #if $iface.ip_address:
        fixed-address $iface.ip_address;
        #end if
        #if $iface.hostname:
        option host-name "$iface.hostname";
        #end if
        #if $iface.netmask:
        option subnet-mask $iface.netmask;
        #end if
        #if $iface.gateway:
        option routers $iface.gateway;
        #end if
        #if $iface.enable_gpxe:
        if exists user-class and option user-class = "gPXE" {
            filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
        } else if exists user-class and option user-class = "iPXE" {
            filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
        } else {
            filename "undionly.kpxe";
        }
        #else
        filename "$iface.filename";
        #end if
        ## Cobbler defaults to $next_server, but some users
        ## may like to use $iface.system.server for proxied setups
        next-server $next_server;
        ## next-server $iface.next_server;
    }
        #end for
}
6、重启cobbler httpd服务[iyunv@cobbler-server ~]# systemctl restart cobblerd
[iyunv@cobbler-server ~]# systemctl restart httpd

四、检查cobbler配置[iyunv@cobbler-server ~]# cobbler check
The following are potential configuration items that you may want to fix:

1 : debmirror package is not installed, it will be required to manage debian deployments and repositories
2 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one

Restart cobblerd and then run 'cobbler sync' to apply changes.
以上两点都可以忽略
第二点是修改部署系统默认的root密码
若提示enabled rsyncd or use systemctl to start rsyncd.service
是叫你把rsync加到开机启动
[iyunv@cobbler-server ~]# systemctl enable rsyncd
执行以上命令后就不会出现这个提示了
五、导入镜像并查看导入情况1、导入镜像[iyunv@cobbler-server ~]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[iyunv@cobbler-server ~]#cobbler import --path=/mnt/cdrom/ --name=ubuntu-12.04.5 --arch=x86_64
task started: 2016-10-07_221950_import
task started (id=Media import, time=Fri Oct  7 22:19:50 2016)
Found a candidate signature: breed=freebsd, version=10.1
Found a candidate signature: breed=freebsd, version=10.0
Found a candidate signature: breed=freebsd, version=8.3
Found a candidate signature: breed=freebsd, version=8.2
Found a candidate signature: breed=freebsd, version=8.4
Found a candidate signature: breed=freebsd, version=10.2
Found a candidate signature: breed=freebsd, version=9.0
Found a candidate signature: breed=freebsd, version=9.1
Found a candidate signature: breed=freebsd, version=9.2
Found a candidate signature: breed=freebsd, version=9.3
Found a candidate signature: breed=ubuntu, version=precise
running: /usr/bin/file /var/www/cobbler/ks_mirror/ubuntu-12.04.5-x86_64/dists/precise/Release
received on stdout: /var/www/cobbler/ks_mirror/ubuntu-12.04.5-x86_64/dists/precise/Release: ASCII text

received on stderr:
Found a matching signature: breed=ubuntu, version=precise
Adding distros from path /var/www/cobbler/ks_mirror/ubuntu-12.04.5-x86_64:
creating new distro: ubuntu-12.04.5-x86_64
trying symlink: /var/www/cobbler/ks_mirror/ubuntu-12.04.5-x86_64 -> /var/www/cobbler/links/ubuntu-12.04.5-x86_64
creating new profile: ubuntu-12.04.5-x86_64
associating repos
checking for apt repo(s)
adding apt repo for ubuntu-12.04.5-x86_64
Added repos for ubuntu-12.04.5-x86_64
*** TASK COMPLETE ***
有些镜像是不支持的,不支持就会导入错误
2、查看查看导入的镜像和使用到的kickstart文件信息
[iyunv@cobbler-server ~]# cobbler distro list
   CentOS-7.2-x86_64
   ESXi-6.0.0-x86_64
   ubuntu-12.04.5-x86_64
[iyunv@cobbler-server ~]# cobbler profile report
Name                           : ESXi-6.0.0-x86_64
TFTP Boot Files                : {}
Comment                        :
DHCP Tag                       : default
Distribution                   : ESXi-6.0.0-x86_64
Enable gPXE?                   : 0
Enable PXE Menu?               : 1
Fetchable Files                : {}
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart                      : /var/lib/cobbler/kickstarts/sample_esxi5.ks
Kickstart Metadata             : {}
Management Classes             : []
Management Parameters          : <<inherit>>
Name Servers                   : []
Name Servers Search Path       : []
Owners                         : ['admin']
Parent Profile                 :
Internal proxy                 :
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Repos                          : []
Server Override                : <<inherit>>
Template Files                 : {}
Virt Auto Boot                 : 1
Virt Bridge                    : xenbr0
Virt CPUs                      : 1
Virt Disk Driver Type          : raw
Virt File Size(GB)             : 5
Virt Path                      :
Virt RAM (MB)                  : 512
Virt Type                      : kvm

Name                           : CentOS-7.2-x86_64
TFTP Boot Files                : {}
Comment                        :
DHCP Tag                       : default
Distribution                   : CentOS-7.2-x86_64
Enable gPXE?                   : 0
Enable PXE Menu?               : 1
Fetchable Files                : {}
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart                      : /var/lib/cobbler/kickstarts/sample_end.ks
Kickstart Metadata             : {}
Management Classes             : []
Management Parameters          : <<inherit>>
Name Servers                   : []
Name Servers Search Path       : []
Owners                         : ['admin']
Parent Profile                 :
Internal proxy                 :
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Repos                          : []
Server Override                : <<inherit>>
Template Files                 : {}
Virt Auto Boot                 : 1
Virt Bridge                    : xenbr0
Virt CPUs                      : 1
Virt Disk Driver Type          : raw
Virt File Size(GB)             : 5
Virt Path                      :
Virt RAM (MB)                  : 512
Virt Type                      : kvm

Name                           : ubuntu-12.04.5-x86_64
TFTP Boot Files                : {}
Comment                        :
DHCP Tag                       : default
Distribution                   : ubuntu-12.04.5-x86_64
Enable gPXE?                   : 0
Enable PXE Menu?               : 1
Fetchable Files                : {}
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart                      : /var/lib/cobbler/kickstarts/sample.seed
Kickstart Metadata             : {}
Management Classes             : []
Management Parameters          : <<inherit>>
Name Servers                   : []
Name Servers Search Path       : []
Owners                         : ['admin']
Parent Profile                 :
Internal proxy                 :
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Repos                          : []
Server Override                : <<inherit>>
Template Files                 : {}
Virt Auto Boot                 : 1
Virt Bridge                    : xenbr0
Virt CPUs                      : 1
Virt Disk Driver Type          : raw
Virt File Size(GB)             : 5
Virt Path                      :
Virt RAM (MB)                  : 512
Virt Type                      : kvm
六、编辑seed文件1、普通分区配置[iyunv@cobbler-server ~]# grep "^[^#]" /var/lib/cobbler/kickstarts/sample.seed
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/layoutcode string us
d-i keyboard-configuration/variantcode string
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string $myhostname
d-i time/zone string US/Eastern
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server  string ntp.ubuntu.com
d-i mirror/country string manual
d-i mirror/http/hostname string $http_server
d-i mirror/http/directory string $install_source_directory
d-i mirror/http/proxy string
d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select fsm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto/expert_recipe string \
fsm :: \
1024 100% 1024 linux-swap method{ swap } \
format{ } \
. \
2048 2048 2048 ext4 method{ format } \
mountpoint{ /home } \
format{ } use_filesystem{ } filesystem{ ext4 } \
. \
10240 10240 10240 ext4 method{ format } \
mountpoint{ / } \
format{ } use_filesystem{ } filesystem{ ext4 } \
options/relatime{ relatime } \
. \
768 1024 1024 ext4 method{ format } \
mountpoint{ /tmp } \
format{ } use_filesystem{ } filesystem{ ext4 } \
options/relatime{ relatime } \
. \
1 2048 1000000000 ext4 method{ format } \
mountpoint{ /www } \
format{ } use_filesystem{ } filesystem{ ext4 } \
options/relatime{ relatime } \
.
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/confirm boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password $default_password_crypted
d-i passwd/make-user boolean false
$SNIPPET('preseed_apt_repo_config')
d-i pkgsel/include string ntp ssh wget vim
d-i debian-installer/add-kernel-opts string $kernel_options_post
d-i finish-install/reboot_in_progress note
d-i preseed/early_command string wget -O- \
   http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_early_default | \
   /bin/sh -s
d-i preseed/late_command string wget -O- \
   http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_late_default | \
   chroot /target /bin/sh -s
2、lvm分区配置绿色标记部分是最重要的,定制分区的配置,以上是普通分区方式
如果是lvm分区方式,用以下配置
d-i partman-auto/disk string /dev/sda#指定磁盘
d-i partman-auto/method string lvm#分区格式lvm还是普通分区还是raid
d-i partman-auto/choose_recipe select fsm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto-lvm/no_boot boolean true
d-i partman-auto-lvm/new_vg_name string vg0
d-i partman-auto/expert_recipe string \
fsm :: \
1024 100% 1024 linux-swap method{ swap } \
format{ } $lvmok{ } lv_name{ swap } \
. \
2048 2048 2048 ext4 method{ lvm } \
$lvmok{ } mountpoint{ /home } lv_name{ home } \
format{ } use_filesystem{ } filesystem{ ext4 } \
. \
10240 10240 10240 ext4 method{ lvm } \
$lvmok{ } mountpoint{ / } lv_name{ root } \
format{ } use_filesystem{ } filesystem{ ext4 } \
options/relatime{ relatime } \
. \
768 1024 1024 ext4 method{ lvm } \
$lvmok{ } mountpoint{ /tmp } lv_name{ tmp } \
format{ } use_filesystem{ } filesystem{ ext4 } \
options/relatime{ relatime } \
. \
1 2048 1000000000 ext4 method{ lvm } \
$lvmok{ } mountpoint{ /www } lv_name{ www } \
format{ } use_filesystem{ } filesystem{ ext4 } \
options/relatime{ relatime } \
.
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/confirm boolean true
d-i partman/choose_partition \
    select Finish partitioning and write changes to disk    #保存分区
QQ截图20161012133358.jpg

注:
$lvmok{ }必须存在,不然安装会报错无法继续
QQ截图20161012133403.jpg
不存在这个选项cobbler又会报错
{'code': u'VFFSL(SL,"lvmok",True)',
  'exc_val': NotFound(u"cannot find 'lvmok'",),
  'lineCol': (60, 11),
  'rawCode': u'$lvmok',
不知道是不是cobbler的bug

七、注意事项1、1 2048 1000000000 ext4 method{ lvm } \ 这三个数字分别代表最少1M ,权重,最多1000000000M
如果把剩余的都分配就用三个-1,即-1 -1 -1 ext4 method{ lvm } \
2、d-i partman-auto/choose_recipe select fsm:fsm随意命名,但必须和d-i partman-auto/expert_recipe string fsm :: 这个fsm对应
3、seed文件中不能有中文哪怕是注释,不然会报错
4、每次修改/etc/cobbler/setting配置后需要执行cobbler sync进行同步
5、对于esxi的支持,默认不支持esxi6,但是可以用esxi5的kickstart文件,部分不兼容,但仍能全自动安装

八、截图
QQ截图20161012133410.jpg





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-284990-1-1.html 上篇帖子: centos 7.2 邮件服务器搭建-iredmail邮件服务器搭建与使用 下篇帖子: http+tftp+pxe+kickstar自动化部署 ubuntu
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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