zoukankan      html  css  js  c++  java
  • OpenStack镜像制作-CentOS

    云平台中镜像还是很重要的,提供各种定制化的镜像使得用户体验更好。

    最开始玩OpenStack的时候用的是安装文档中提到的cirros,其密码cubswin:) 刚开始感觉很怪,现在已经可以随手打出。ps:打的还很熟练:-)

    然后慢慢开始想尝试各种镜像,于是乎在网上搜了很多。如下:

    关于CentOS镜像制作需要注意以下几点:

    (1)修改网络信息 /etc/sysconfig/network-scripts/ifcfg-eth0 (删掉mac信息),如下:

    TYPE=Ethernet
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    NM_CONTROLLED=no

    (2)删除已生成的网络设备规则,否则制作的镜像不能上网

    # rm -rf /etc/udev/rules.d/70-persistent-net.rules 

    (3)增加一行到/etc/sysconfig/network

    NOZERCONF=yes

    (4)安装cloud-init(可选),cloud-init可以在开机时进行密钥注入以及修改hostname等,关于cloud-init,陈沙克的一篇博文有介绍:http://www.chenshake.com/about-openstack-centos-mirror/

    # yum install -y cloud-utils cloud-init parted
    修改配置文件/etc/cloud/cloud.cfg ,在cloud_init_modules 下面增加:
    - resolv-conf

    (5)设置系统能自动获取openstack指定的hostname和ssh-key(可选)
    编辑/etc/rc.local文件,该文件在开机后会执行,加入以下代码:

     1 if [ ! -d /root/.ssh ]; then
     2 mkdir -p /root/.ssh
     3 chmod 700 /root/.ssh
     4 fi
     5 # Fetch public key using HTTP
     6 ATTEMPTS=30
     7 FAILED=0
     8 
     9  
    10 
    11 while [ ! -f /root/.ssh/authorized_keys ]; do
    12 curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/metadata-key 2>/dev/null
    13 if [ $? -eq 0 ]; then
    14 cat /tmp/metadata-key >> /root/.ssh/authorized_keys
    15 chmod 0600 /root/.ssh/authorized_keys
    16 restorecon /root/.ssh/authorized_keys
    17 rm -f /tmp/metadata-key
    18 echo “Successfully retrieved public key from instance metadata”
    19 echo “*****************20 echo “AUTHORIZED KEYS”
    21 echo “*****************22 cat /root/.ssh/authorized_keys
    23 echo “*****************24 
    25 curl -f http://169.254.169.254/latest/meta-data/hostname > /tmp/metadata-hostname 2>/dev/null
    26 if [ $? -eq 0 ]; then
    27 TEMP_HOST=`cat /tmp/metadata-hostname`
    28 sed -i “s/^HOSTNAME=.*$/HOSTNAME=$TEMP_HOST/g” /etc/sysconfig/network
    29 /bin/hostname $TEMP_HOST
    30 echo “Successfully retrieved hostname from instance metadata”
    31 echo “*****************32 echo “HOSTNAME CONFIG”
    33 echo “*****************34 cat /etc/sysconfig/network
    35 echo “*****************36 
    37 else
    38 echo “Failed to retrieve hostname from instance metadata. This is a soft error so we’ll continue”
    39 fi
    40 rm -f /tmp/metadata-hostname
    41 else
    42 FAILED=$(($FAILED + 1))
    43 if [ $FAILED -ge $ATTEMPTS ]; then
    44 echo “Failed to retrieve public key from instance metadata after $FAILED attempts, quitting”
    45 break
    46 fi
    47 echo “Could not retrieve public key from instance metadata (attempt #$FAILED/$ATTEMPTS), retrying in 5 seconds…”
    48 sleep 5
    49 fi
    50 done 

    或者

     1 # set a random pass on first boot
     2 if [ -f /root/firstrun ]; then
     3   dd if=/dev/urandom count=50|md5sum|passwd --stdin root
     4   passwd -l root
     5   rm /root/firstrun
     6 fi
     7 
     8 if [ ! -d /root/.ssh ]; then
     9   mkdir -m 0700 -p /root/.ssh
    10   restorecon /root/.ssh
    11 fi
    12 # Get the root ssh key setup
    13 # Get the root ssh key setup
    14 ReTry=0
    15 while [ ! -f /root/.ssh/authorized_keys ] && [ $ReTry -lt 10 ]; do
    16   sleep 2
    17   curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /root/.ssh/pubkey
    18   if [ 0 -eq 0 ]; then
    19     mv /root/.ssh/pubkey /root/.ssh/authorized_keys
    20   fi
    21   ReTry=$[Retry+1]
    22 done
    23 chmod 600 /root/.ssh/authorized_keys && restorecon /root/.ssh/authorized_keys

    主要目的就是获取hostname和公钥

     (6)其他

    route命令查看一下路由表

    查看/etc/ssh/sshd_conf中PermitRootLogin是不是为yes

  • 相关阅读:
    如何进入闷声发大财的传统企业做数据分析工作,帮助企业做数字转型?
    做一个最好的自己,不盲目学数据分析
    sql server如何判断数据库是否存在
    c++引用深入探讨
    VirtualBox 安装ghost版windows XP
    QT透明显示文字
    CSAPP
    随机颜色的生成
    远程桌面如何传递声音的原理
    递归求解全排列
  • 原文地址:https://www.cnblogs.com/gorlf/p/4140740.html
Copyright © 2011-2022 走看看