1:登录运维面

2:进入右下角导航栏快速访问,点击ServiceOM(shanghai) 跳转到新的窗口

image.png

image.png

3:点击资源里的镜像资源

image.png

制作镜像流程:
具体请参考用户指南手册12章<镜像服务>
image.png

4:公共镜像流程

注册镜像
创建规格
创建虚拟机
安装vmtools
制作镜像
image.png

5:填写注册镜像信息

规格要求请填写
虚拟化:KVM
CPU:X86
操作系统:Linux
内存:4GB
磁盘:10GB
上传方式:HTTPS
磁盘设备类型:virtio

image.png

6:选择本地光盘通过HTTPS方式上传

image.png

image.png

最小磁盘:
使用该镜像创建虚拟机时,对于虚拟机磁盘大小的最低要求。
ISO格式镜像:
Windows操作系统,建议最小磁盘不小于60G。
Linux操作系统,建议最小磁盘不小于20G。
非ISO格式镜像:
不小于制作镜像时使用的虚拟机磁盘大小。

最小内存:
使用该镜像创建的弹性云服务器内存大小的最低要求:
若不限制最小内存,租户界面申请弹性云服务器时可以选择到所有内存大小的规格;
若设置为具体值,租户界面申请弹性云服务器时只能选择到内存大小大于设置值的规格。

设备类型:
系统磁盘读写数据时与主机通讯的总线类型。
建议优先选择virtio;若业务要求使用scsi类型的磁盘,需要选择scsi(virtio类型磁盘性能略优于scsi类型磁盘,ide类型磁盘性能较差)。
注册非ISO格式的Windows系统镜像时,若已安装UVP VMTools,建议选择virtio;否则,需要选择为ide。

7:注册镜像上传中

image.png

7:使用注册的镜像创建模板虚拟机
image.png

8:可用区选择 az6.dc ——运维管理区

image.png

9:选择刚刚注册的IOS镜像

image.png

10:规格选择已有的最小规格4C8G 系统盘选择使用云磁盘

image.png

11:使用默认az6后端存储

image.png

12:修改默认网卡信息 点击修改 项目选择 service 网络选择 external_om 关闭安全组 其它保持默认

image.png
image.png
关闭安全组
image.png

image.png

13:设置虚拟机模板名称

image.png

14:最后再次确认所有信息

image.png

15:确认查看镜像制作日志

image.png
image.png
image.png

16:点击资源 选择计算机资源 找到刚刚创建的虚拟机 点击它打开它 使用VNC登录虚拟机界面 开始部署系统

image.png

image.png
image.png

image.png

image.png

17:语言选择English 开始自定义部署Linux系统

image.png

image.png
image.png
image.png
image.png
image.png
image.png
image.png

18: 在计算资源里 点击更多挂载UVP VMTools

image.png
image.png

19:系统部署完成后使用终端ssh连接部署UVP VMTools 和 Cloud-Init 先关闭系统防火墙

image.png

20:挂载UVP VMTools

图片.png

21:ssh 终端登录系统 挂载镜像文件

图片.png

22:安装vmtools

复制uvp vmtools到虚拟机/opt目录下
mkdir -p /mnt/image-tools
mount /dev/sr1 /mnt/image-tools
cd /mnt/image-tools/

mkdir -p /opt/image-tools
cp -r /mnt/image-tools/linux /opt/image-tools
cd /opt/image-tools/linux
chmod +x *.sh
umount /mnt/image-tools
rm -rf /root/vmtools-2.5.0.156.tar.bz2

图片.png
图片.png

23:安装cloud-init

图片.png

修改cloud-init文件init.py文件 导致主机名添加 .novalocal
修复文件位置
/opt/cloudinit/lib/python2.7/site-packages/cloud_init-18.2-py2.7.egg/cloudinit/sources

rm -rf init.pyc
rm -rf /var/lib/cloud/
rm -rf /var/log/cloud-init

检查配置文件
cloud-init init —local

修改日志 handlers=cloudLogHandler
vim /etc/cloud/cloud.cfg.d/05_logging.cfg

  1. [logger_cloudinit]
  2. level=DEBUG
  3. qualname=cloudinit
  4. handlers=cloudLogHandler
  5. propagate=1

vim /etc/cloud/cloud.cfg

  1. # make up a hostname (LP: #475354) in format ip-xx.xx.xx.xx
  2. 316 lhost = self.metadata['local-hostname']
  3. 317 if util.is_ipv4(lhost):
  4. 318 toks = []
  5. 319 if resolve_ip:
  6. 320 toks = util.gethostbyaddr(lhost)
  7. 321
  8. 322 if toks:
  9. 323 toks = str(toks).split('.')
  10. 324 else:
  11. 325 toks = ["ip-%s" % lhost.replace(".", "-")]
  12. 326 else:
  13. 327 toks = lhost.split(".novalocal")
  14. 328
  15. 329 if len(toks) > 1:
  16. 330 hostname = toks[0]
  17. 331 #domain = '.'.join(toks[1:])
  18. 332 else:
  19. 333 hostname = toks[0]
  20. 334
  21. 335 if fqdn and domain != defdomain:
  22. 336 return "%s.%s" % (hostname, domain)
  23. 337 else:
  24. 338 return hostname

image.png

优化配置文件

  1. [root@uat-devops sources]# cat /etc/cloud/cloud.cfg
  2. # The top level settings are used as module
  3. # and system configuration.
  4. # A set of users which may be applied and/or used by various modules
  5. # when a 'default' entry is found it will reference the 'default_user'
  6. # from the distro configuration specified below
  7. users:
  8. - name: root
  9. lock_passwd: false
  10. # If this is set, 'root' will not be able to ssh in and they
  11. # will get a message to login instead as the default $user
  12. disable_root: 0
  13. mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
  14. resize_rootfs_tmp: /dev
  15. ssh_deletekeys: 0
  16. ssh_genkeytypes: ~
  17. ssh_pwauth: 1
  18. network:
  19. config: disabled
  20. datasource_list: ['ConfigDrive', 'OpenStack']
  21. manage_etc_hosts: localhost
  22. # This will cause the set+update hostname module to not operate (if true)
  23. preserve_hostname: false
  24. # Example datasource config
  25. # datasource:
  26. # Ec2:
  27. # metadata_urls: [ 'blah.com' ]
  28. # timeout: 5 # (defaults to 50 seconds)
  29. # max_wait: 10 # (defaults to 120 seconds)
  30. # The modules that run in the 'init' stage
  31. cloud_init_modules:
  32. - ssh
  33. - migrator
  34. - seed_random
  35. - bootcmd
  36. - write-files
  37. - growpart
  38. - resizefs
  39. - disk_setup
  40. - mounts
  41. - set_hostname
  42. - update_hostname
  43. - update_etc_hosts
  44. - ca-certs
  45. - rsyslog
  46. - users-groups
  47. # The modules that run in the 'config' stage
  48. cloud_config_modules:
  49. - ssh-import-id
  50. - locale
  51. - set-passwords
  52. - ntp
  53. - timezone
  54. - disable-ec2-metadata
  55. - runcmd
  56. # The modules that run in the 'final' stage
  57. cloud_final_modules:
  58. - package-update-upgrade-install
  59. - puppet
  60. - chef
  61. - mcollective
  62. - salt-minion
  63. - rightscale_userdata
  64. - scripts-vendor
  65. - scripts-per-once
  66. - scripts-per-boot
  67. - scripts-per-instance
  68. - scripts-user
  69. - ssh-authkey-fingerprints
  70. - keys-to-console
  71. - phone-home
  72. - final-message
  73. - power-state-change
  74. # System and/or distro specific settings
  75. # (not accessible to handlers/transforms)
  76. system_info:
  77. # This will affect which distro class gets used
  78. distro: centos
  79. # Default user name + that default users groups (if added/used)
  80. default_user:
  81. name: centos
  82. lock_passwd: True
  83. gecos: centos Cloud User
  84. groups: [wheel, adm, systemd-journal]
  85. sudo: ["ALL=(ALL) NOPASSWD:ALL"]
  86. shell: /bin/bash
  87. # Other config here will be given to the distro class and/or path classes
  88. paths:
  89. cloud_dir: /var/lib/cloud/
  90. templates_dir: /etc/cloud/templates/
  91. ssh_svcname: sshd
  92. #openstack
  93. datasource:
  94. OpenStack:
  95. metadata_urls: ['http://169.254.169.254']
  96. max_wait: 120
  97. timeout: 50
  98. [root@uat-devops sources]#

24:安装一键修改密码插件

64位操作系统(X86场景)
12.10.2.8 安装一键式密码重置插件(支撑 X86 架构)

  1. wget http://ap-southeast-1-cloud-reset-pwd.obs.myhwclouds.com/linux/64/reset_pwd_agent/CloudResetPwdAgent.zip

mkdir -p /opt/image-tools/linux/pkgs/reset-pwd
mv CloudResetPwdAgent.zip /opt/image-tools/linux/pkgs/reset-pwd/
cd /opt/image-tools/linux
sh reset-pwd.sh
image.png

25:部署jdk环境

  1. cd /tmp
  2. tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local
  3. ln -s /usr/local/jdk1.8.0_191/ /usr/local/jdk
  4. rm -rf /usr/bin/java
  5. ln -s /usr/local/jdk/bin/java /usr/bin/java
  6. cp /etc/profile /etc/profile.bak
  7. cat >> /etc/profile << EOF
  8. export JAVA_HOME=/usr/local/jdk
  9. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  10. export PATH=$JAVA_HOME/bin:$PATH
  11. EOF
  12. source /etc/profile
  13. rm -rf /tmp/jdk-8u191-linux-x64.tar.gz
  14. java -version

image.png

26:模板优化

修改网卡信息并清空网络规则70-persistent-ipoib.rules文件
加速虚拟机启动
清空临时文件和历史命令记录 history -c
rm -rf /etc/udev/rules.d/70-persistent-ipoib.rules

  1. datasource:
  2. OpenStack:
  3. metadata_urls: ['http://169.254.169.254']
  4. max_wait: 120
  5. timeout: 50

禁用dns自动更新 PEERDNS=”no”

  1. cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
  2. DEVICE=eth0
  3. NAME=eth0
  4. BOOTPROTO=dhcp
  5. ONBOOT=yes
  6. STARTMODE=onboot
  7. PERSISTENT_DHCLIENT=yes
  8. TYPE=Ethernet
  9. PEERDNS=no
  10. PROXY_METHOD=none
  11. BROWSER_ONLY=no
  12. DEFROUTE=yes
  13. IPV4_FAILURE_FATAL=no
  14. IPV6INIT=no
  15. EOF

image.png

删除虚拟网卡
nmcli connection delete virbr0
nmcli device delete virbr0

修复jdk bug
mv /dev/random /dev/random.bak;ln -s /dev/urandom /dev/random

image.png

27:系统安全加固

  1. #!/bin/bash
  2. ##########################################################
  3. ## ##
  4. ## Script Name : security for Redhat7.0~7.6 ##
  5. ## By:Eren 2020-05-21 ##
  6. ## ##
  7. ##########################################################
  8. #创建系统运维用户chroot
  9. user=chroot
  10. if ! id $user;then
  11. groupadd -g 700 $user
  12. useradd -g 700 -u 700 -m -G $user $user
  13. echo "chroot:1qaz@WSX" |chpasswd
  14. echo "user $user is created"
  15. fi
  16. #设置系统最小化开机启动项目
  17. for serv in ` systemctl list-unit-files | grep enabled|awk '{print $1}'`;do systemctl disable $serv ;done
  18. for serv in autovt@.service crond.service getty@.service irqbalance.service kdump.service auditd.service microcode.service rsyslog.service sshd.service sysstat.service systemd-readahead-collect.service systemd-readahead-drop.service systemd-readahead-replay.service NetworkManager.service tuned.service lvm2-lvmetad.socket lvm2-lvmpolld.socket default.target cloud-init-local.service cloud-init.service cloud-init.target cloud-final.service vm-agent.service multi-user.target;do systemctl enable $serv;done
  19. #设置单用户启动
  20. systemctl set-default multi-user.target
  21. #删除机器系统重启快捷键
  22. rm -f /usr/lib/systemd/system/ctrl-alt-del.target
  23. #设置NTP服务器
  24. cp /etc/chrony.conf /etc/chrony.conf.bak
  25. sed -i 's/^server/#server/g' /etc/chrony.conf
  26. sed -i '/#server 3/a\server 10.182.200.100' /etc/chrony.conf
  27. echo "leapsecmode slew" >>/etc/chrony.conf
  28. systemctl restart chronyd
  29. systemctl enable chronyd
  30. #设置文件系统打开文件数
  31. ##limits
  32. cat>>/etc/security/limits.conf<<EOF
  33. * soft nproc 20480
  34. * hard nproc 20480
  35. * hard nofile 20480
  36. * soft nofile 20480
  37. EOF
  38. sed -i "s/* soft nproc 20480/#* soft nproc 20480/g" /etc/security/limits.d/20-nproc.conf
  39. #设置系统目录权限
  40. chmod 400 /etc/crontab
  41. chmod 400 /etc/securetty
  42. #chmod 600 /boot/grub/grub.conf
  43. chmod 644 /etc/hosts.allow
  44. chmod 644 /etc/hosts.deny
  45. chmod 600 /etc/inittab
  46. chmod 644 /etc/login.defs
  47. chmod 644 /etc/profile
  48. chmod 644 /etc/bashrc
  49. chmod 744 /usr/bin/consolehelper
  50. #设置系统密码策略
  51. #cp /etc/pam.d/system-auth-ac /etc/pam.d/system-auth-ac.bak
  52. #sed -i '/password requisite pam_pwquality.so.*$/s//& minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1/' /etc/pam.d/system-auth-ac
  53. #sed -i '/password sufficient pam_unix.so.*$/s//& remeber=3/' /etc/pam.d/system-auth-ac
  54. #cp /etc/pam.d/password-auth-ac /etc/pam.d/password-auth-ac.bak
  55. #sed -i '/password requisite pam_pwquality.so.*$/s//& minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1/' /etc/pam.d/password-auth-ac
  56. #sed -i '/password sufficient pam_unix.so.*$/s//& remeber=3/' /etc/pam.d/password-auth-ac
  57. /sbin/authconfig --passminlen=8 --update
  58. /sbin/authconfig --enablereqdigit --update
  59. /sbin/authconfig --enablereqlower --update
  60. /sbin/authconfig --enablerequpper --update
  61. /sbin/authconfig --enablereqother --update
  62. #设置系统账户有效时间
  63. cp /etc/login.defs /etc/login.defs.bak
  64. sed -ie 's/PASS_MAX_DAYS\t99999/PASS_MAX_DAYS\t90/' /etc/login.defs
  65. sed -ie 's/PASS_MIN_LEN\t5/PASS_MIN_LEN\t8/' /etc/login.defs
  66. #避免记录不存在用户的登录信息,避免用户误输入导致密码泄露
  67. echo "LOG_UNKFAIL_ENAB yes" >> /etc/login.defs
  68. #配置用户密码尝试次数为6次,超过6次后登录会话自动登出,避免自动连续暴力破解
  69. echo "LOGIN_RETRIES 6" >> /etc/login.defs
  70. #记录用户上次登录时间,用户登录时给予提示
  71. echo "LASTLOG_ENAB yes" >> /etc/login.defs
  72. #ssh访问时超出密码失败次数后锁定用户5分钟
  73. cp /etc/pam.d/login /etc/pam.d/login.bak
  74. sed -i '/#%PAM/a\auth required pam_tally2.so deny=6 unlock_time=300' /etc/pam.d/login
  75. cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
  76. sed -i '/#%PAM/a\auth required pam_tally2.so deny=6 unlock_time=300' /etc/pam.d/sshd
  77. ##sshd
  78. cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  79. sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
  80. sed -i '/#Banner none/a\Banner /etc/issue.net' /etc/ssh/sshd_config
  81. sed -i 's/^#UseDNS no/UseDNS no/' /etc/ssh/sshd_config
  82. #sed -i 's/^UsePAM yes/UsePAM no/' /etc/ssh/sshd_config
  83. sed -i 's/^#Port 22/Port 22/' /etc/ssh/sshd_config
  84. echo 'Authorized users only! All activity may be monitored and reported!'> /etc/motd
  85. cp /etc/issue /etc/issue_`date +\%Y\%m\%d`
  86. cp /etc/issue.net /etc/issue.net_`date +\%Y\%m\%d`
  87. echo 'Be sure you are authorized to access this system!' > /etc/issue
  88. echo 'Be sure you are authorized to access this system!' > /etc/issue.net
  89. #profile
  90. echo "export TMOUT=600" >> /etc/profile
  91. echo 'export HISTTIMEFORMAT="%F %T `whoami` " ' >>/etc/profile
  92. sed -i "s/export HISTFILESIZE=.*/export HISTFILESIZE=10000/g" /etc/profile
  93. #关闭SELINUX
  94. cp /etc/sysconfig/selinux /etc/sysconfig/selinux.bak
  95. sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  96. #rc-local
  97. chmod +x /etc/rc.d/rc.local
  98. systemctl enable rc-local
  99. #kernel参数调优
  100. cat>>/etc/sysctl.conf<<EOF
  101. net.ipv4.conf.all.arp_ignore = 0
  102. net.ipv4.conf.default.arp_ignore = 0
  103. net.ipv4.conf.all.arp_filter = 0
  104. net.ipv4.conf.default.arp_filter = 0
  105. net.ipv4.conf.all.rp_filter = 1
  106. net.ipv4.conf.all.log_martians =0
  107. net.ipv4.conf.default.log_martians = 0
  108. net.ipv4.conf.all.promote_secondaries = 0
  109. net.ipv4.ip_no_pmtu_disc = 1
  110. net.ipv4.conf.all.forwarding = 0
  111. net.ipv4.conf.default.forwarding = 0
  112. Net.ipv4.icmp_echo_ignore_broadcasts = 1
  113. net.ipv4.conf.all.accept_source_route = 0
  114. net.ipv4.conf.default.accept_source_route = 0
  115. net.ipv4.conf.all.accept_redirects = 0
  116. net.ipv4.conf.default.accept_redirects = 0
  117. net.ipv4.tcp_timestamps = 0
  118. net.ipv4.icmp_ignore_bogus_error_responses = 1
  119. net.ipv4.conf.all.proxy_arp = 0
  120. net.ipv4.conf.default.proxy_arp = 0
  121. net.ipv4.tcp_max_syn_backlog = 4096
  122. net.ipv4.tcp_syncookies = 1
  123. net.ipv4.tcp_fin_timeout = 60
  124. net.ipv4.ip_forward = 0
  125. net.ipv4.tcp_keepalive_time = 150
  126. net.ipv4.tcp_keepalive_probes = 5
  127. net.ipv4.tcp_keepalive_intvl = 6
  128. EOF
  129. sysctl -p &>/dev/null
  130. #rsyslog
  131. echo "*.err;auth.info /var/adm/messages" >>/etc/rsyslog.conf
  132. systemctl restart sshd.service
  133. echo "------ Modify is OK ------"

image.png

28:升级openssh

  1. #!/bin/bash
  2. ###By:Eren 2020-05-26
  3. cd /tmp/openssh
  4. rm -rf /etc/yum.repos.d/*.repo
  5. yum -y localinstall /tmp/openssh/*.rpm
  6. cd /tmp/openssh/openssl-1.1.1g/
  7. ./config --prefix=/usr/local/ssl shared
  8. make && make install
  9. echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
  10. /sbin/ldconfig -v
  11. mv /usr/bin/openssl /usr/bin/openssl.old
  12. ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
  13. ln -s /usr/local/ssl/include/openssl /usr/include/openssl
  14. ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so
  15. strings /usr/local/lib64/libssl.so |grep OpenSSL
  16. /usr/bin/openssl version
  17. cp /etc/pam.d/sshd /etc/pam.d/sshd.old
  18. cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old
  19. cd /tmp/openssh/openssh-8.3p1/
  20. install -v -m700 -d /var/lib/sshd
  21. chown -v root:sys /var/lib/sshd
  22. ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr/local/ssl/lib --with-privsep-path=/var/lib/sshd --with-ssl-dir=/tmp/openssh/openssl-1.1.1g
  23. make && make install
  24. cat /tmp/openssh/sshd_config >/etc/ssh/sshd_config
  25. chmod 600 /etc/ssh/ssh_host_rsa_key
  26. chmod 600 /etc/ssh/ssh_host_ecdsa_key
  27. chmod 600 /etc/ssh/ssh_host_ed25519_key
  28. rm -rf /usr/lib/systemd/system/sshd.service
  29. systemctl daemon-reload
  30. cp /tmp/openssh/openssh-8.3p1/contrib/redhat/sshd.init /etc/init.d/sshd
  31. /etc/init.d/sshd restart
  32. chkconfig --add sshd
  33. /etc/init.d/sshd status
  34. ssh -V

29:关闭虚拟机转换镜像并同步到公共镜像区

image.png

image.png
image.png
image.png