Aug 082012
 

八:Ubuntu 12.04

cobbler上装ubuntu,是一个技术活,基本很难找到一篇完整的文档,尤其一些高级的设置。下面很多设置都是参考ubuntu里的Maas对cobbler的设置。

1:导入ISO

经过测试,是可以直接使用ubuntu 12.04的导入的iso,作为安装源,完成安装。

 

mount -t auto -o loop /root/ubuntu-12.04-server-amd64.iso /mnt
# cobbler import --path=/mnt --name=ubuntu12.04
task started: 2012-08-08_101200_import
task started (id=Media import, time=Wed Aug  8 10:12:00 2012)
Found a debian/ubuntu compatible signature: pool
adding distros
avoiding symlink loop
creating new distro: ubuntu12.04-x86_64
creating new profile: ubuntu12.04-x86_64
avoiding symlink loop
skipping import, as distro name already exists: ubuntu12.04-x86_64
avoiding symlink loop
avoiding symlink loop
associating repos
traversing distro ubuntu12.04-x86_64
descent into /var/www/cobbler/ks_mirror/ubuntu12.04
associating kickstarts
skipping /var/www/cobbler/ks_mirror/ubuntu12.04/dists/stable
skipping /var/www/cobbler/ks_mirror/ubuntu12.04/dists/precise
skipping /var/www/cobbler/ks_mirror/ubuntu12.04/dists/unstable
*** TASK COMPLETE ***

对于ubuntu来说,就没那么幸运,导入的distro和profile,是有问题的

cobbler distro report --name=ubuntu12.04-x86_64
cobbler profile report --name=ubuntu12.04-x86_64

2:修改distro

默认的是错误,一定要修改。

cobbler distro edit --name=ubuntu12.04-x86_64 \
--kernel=/var/www/cobbler/ks_mirror/ubuntu12.04/install/netboot/ubuntu-installer/amd64/linux \
--initrd=/var/www/cobbler/ks_mirror/ubuntu12.04/install/netboot/ubuntu-installer/amd64/initrd.gz \
--os-version=precise

3:脚本

我根据ubuntu的Maas,提取了他的pressed文件,修改了一下,可以直接下载使用:ubuntu.preseed

这个preseed文件的分区,大家可以调整。里面有两种分区的方案,我注释掉了默认的分区方案。

cd /var/lib/cobbler/kickstarts
wget http://www.chenshake.com/wp-content/uploads/2012/08/ubuntu.preseed.txt
mv ubuntu.preseed.txt ubuntu.preseed

由于ubuntu.preseed文件,用到几个snippets,所以需要创建

/var/lib/cobbler/snippets/orchestra_disable_pxe

wget "http://$http_server:$http_port/cblr/svc/op/nopxe/system/$system_name" -O /dev/null \

/var/lib/cobbler/snippets/orchestra_proxy

# Point apt to orchestra-provisioning-server's squid
d-i     mirror/country string manual
d-i     mirror/http/hostname string $http_server
d-i     apt-setup/security_host string $http_server
d-i     apt-setup/security_path string /ubuntu
d-i     mirror/http/directory string /ubuntu
d-i     mirror/http/proxy string http://@@server@@:3128/

设置静态IP地址

由于cobbler没有提供脚本来设置静态IP,所以这个需要自己想办法. static.sh 脚本 ,注意,这个脚本,有一个地方你是需要修改,就是你的网段。我的网段是10.1.199.0,你改成你的网段才可以。

mkdir /var/www/html/post
cd /var/www/html/post
wget http://www.chenshake.com/wp-content/uploads/2012/08/static.sh_.txt
mv static.sh_.txt static.sh

我的ubuntu.preseed 已经调用了这个脚本。

 

4:设置proflie

增加kernel option,关联ubuntu preseed

cobbler profile edit --name=ubuntu12.04-x86_64 \
--kopts="log_port=514 priority=critical locale=en_US log_host=10.1.199.12 netcfg/choose_interface=auto " \
--kickstart=/var/lib/cobbler/kickstarts/ubuntu.preseed

5:设置本地源

直接使用导入的光盘作为源

ln -s /var/www/cobbler/ks_mirror/ubuntu12.04 /var/www/html/ubuntu

这样就可以顺利完成安装。不过你登陆安装完的机器,运行 apt-get update, 就会发现问题,彻底的解决办法,就是同步一个ubuntu 12.04的本地源。这是一个体力活,全部的ubuntu 12.04 的源,一共120G,10M带宽,需要2天时间。

http://www.chenshake.com/centos6-x-production-of-ubuntu12-04-source/

这就是我使用的脚本,下载的本地源。存放在 /home/ubuntu 下。需要链接到web可以访问的目录

ln -s /home/ubuntu /var/www/html/ubuntu

6:安装客户端

这个就和centos基本是一样。唯一的区别就是需要指定ubuntu

cobbler system  add \
--name=node15 \
--hostname=node15.chenshake.com  \
--dns-name=node15.chenshake.com \
--profile=ubuntu12.04-x86_64 \
--interface=eth0 \
--mac=00:25:90:67:CE:28 \
--interface=eth0 \
--ip-address=10.1.199.15 \
--subnet=255.255.255.0 \
--gateway=10.1.199.1 \
--static=1 \
--power-type=ipmilan \
--power-user=ADMIN \
--power-pass=ADMIN \
--power-address=10.1.199.215

  66 Responses to “CentOS 6.3 安装和配置cobbler(3)ubuntu篇”

  1. 太好了,我一直都没有搞定Ubuntu,有时间测一下。

    • 看看文档有啥问题。最麻烦的地方,就是做本地源。我改天看看用关盘作为源,是否也可以。

      • 沙克老师,关于Ubuntu源的问题,是否可以使用国内镜像呢?
        官方有篇文章,关于 自动选择镜像节点的 解决办法的:http://askubuntu.com/questions/37753/how-can-i-get-apt-to-use-a-mirror-close-to-me-or-choose-a-faster-mirror

        如果本地搭建一个源,看起来还是太费事了

  2. 我现在没有本地源,出于实验的目的,能否指定网络位置作为源呢?如何设置?

    • 没设置源的话,安装ubuntu的时候报错:Bad archive mirror An error has been detected while trying to use the specified Ubuntu archiver mirror…

      • 因为你没做本地源,所以会出现这个错误。全部下载ubuntu 12.04的源,超过120G。

    • /var/lib/cobbler/snippets/orchestra_proxy

      这个文件把源指向本地。你可以尝试调整一下这个文件。改成下面看看是否可以.把最后一行注释掉,不用proxy。

      d-i mirror/country string manual
      d-i mirror/http/hostname string mirrors.sohu.com
      d-i apt-setup/security_host string mirrors.sohu.com
      d-i apt-setup/security_path string /ubuntu
      d-i mirror/http/directory string /ubuntu
      #d-i mirror/http/proxy string http://@@server@@:3128/

      • 多谢,我公司的带宽只有2M,坑爹的,我想先通过网络源的方法试试….

  3. 我在安装到最后执行static.sh的时候报错,提示命令执行错误,然后我直接进入系统,手工调用在ubuntu.preseed中的命令【cd /target; wget http://192.168.0.77/post/static.sh; chmod +x ./static.sh; chroot ./ ./static.sh】,还是报错,发现可能存在两个问题:
    1. 没有/target需要手工创建
    2. chroot ./ ./static.sh这句有问题,总是提示【chroot: failed to run command `./static.sh’: No such file or directory】

    是否需要修改文档呢?

    • 手工执行出错是正常的,target是用在安装的时候使用的。
      文档,我想不会有错。我现在安装一个cobbler,都是用这个,配置文件也是从这里下载。你是用我的那个ubuntu.preseed文件吗

      • 是从这里下载的!
        正是因为自动安装的时候报错,才用手工的方式来检查错误的原因的。
        明天我再装一次试试

    • /target 是ubuntu安装期间 挂载点, 磁盘默认是 /dev/sda
      这个路径一定不能改,我确认过了,例如 /taget/111 在安装完毕正常启动后的物理路径是/111

      另外,手动执行是会报错,我的方法是: chroot ./ `./static.sh` ,这样手动执行就能OK

  4. 沙克好,按照教程配置ubuntu后,使用cobbler安装时候,遇到
    “Failed to process the preconfiguration file”, 请问你遇到过这个问题吗?
    ubuntu 12.04

    • ubuntu安装过程,肯定会遇到不少问题。你读读preseed文件,看看有啥问题没有。我这里是啥问题都没有,我明天会重装一个,再检查文档一次。

    • 我在安装的时候 遇到的这个现象 就跟最后那部分采用外部脚本(static.sh) 的配置有关系
      这个问题就是preseed 文件配置有错误,这个提示非常的蛋疼。进入debug模式,在日志里面啥有用信息看不到
      我采取的办法是 分部调试/debug,也就是由上到下 一点点的 采取排除法 去测试相关配置

  5. 沙克老师好。
    我发现Ubuntu的安装 关于网络这块比较麻烦,RHT系的Snippet 脚本 可以自动 把Cobbler system定义的 网络参数 写入到安装好的系统中。 是不是可以参照这个 改写一个Ubuntu的版本?(snippet的语法 我目前还没有参悟透), 另外,如果static.sh 的变量 HOSTNAME=”changed” ,应该是 HOSTNAME=”chang” 吧?

    • 最理想的方式肯定是用snippet来实现。不过这个好像挺难写的,你可以参考一下redhat的那个脚本,结合这个static来改造一下,应该就差不多。
      http://terrarum.net/administration/deploying-ubuntu-with-cobbler.html

      上面那个老外搞了一个,不过我没搞定。

      看来我改错了。应该是 change。这是老外写的脚本,原文可以看

      https://wiki.gogrid.com/wiki/index.php/Customer:Automatically_convert_your_Linux_server_to_a_static_IP

      • 沙克老师,还想请教一个问题:昨天我无意间发现 Ubuntu12.04.1 的Openstack的组件有升级: 以nova-api 包为例,我们是 2012.1+stable~20120612-3ee026e-0ubuntu1.2, 发现有一个升级后是 2012.1+stable~20120612-3ee026e-0ubuntu1.3 ,还有一次重大升级:2012.1.3+stable-20120827-4d2a4afe-0ubuntu1 这次升级是F版么 。我是用apt-get changelog nova-api 看到的

        • 你设置源定期更新就可以。这样你就可以看到所有的更新。我用本地源,每天晚上同步一次。直接和美国那个同步,没啥问题。

          [root@node05 ~]# crontab -l
          30 21 * * * /root/ubuntu_mirror.sh
          30 22 * * * /root/puppet.sh
          30 23 * * * /usr/bin/cobbler reposync

  6. 沙克老师: 有一个snippet : /var/lib/cobbler/snippets/orchestra_disable_pxe 您给代码最后有一个符号:”\” 是必须加进去的么?

    您的原文是:
    >>> 由于ubuntu.preseed文件,用到几个snippets,所以需要创建

    >>> /var/lib/cobbler/snippets/orchestra_disable_pxe
    >>> wget “http://$http_server:$http_port/cblr/svc/op/nopxe/system/$system_name” -O /dev/null \

  7. 沙克老师,我补充一个情况:

    您提供的 ubuntu.preseed.txt 最后一行,我的实验环境会报错,导致无法安装。
    我用的centos6.3 做Cobbler Server ;需要安装的OS 是 Ubuntu 12.04.1 LTS

    因为这个问题,让我迷茫了很久,而且Ubuntu的安装 日志的错误提示也让我 掉沟里去了快2周时间。。。

    >>> 原始代码是:
    $SNIPPET(‘orchestra_disable_pxe’) && \
    true

    >>> 我的机器能用的配置是:
    $SNIPPET(‘orchestra_disable_pxe’) && \
    exit 0;

  8. 估计不同的环境导致的。不过我肯定一点,我的环境真的是这样的。而且这些配置,不是我搞出来,都是ubuntu的maas里面copy出来的。

    这是我的system里的最终显示的内容

    # Post scripts. Executes late command and disables PXE
    d-i preseed/late_command string true && \
    cd /target; wget http://10.1.199.5/post/static.sh; chmod +x ./static.sh; chroot ./ ./static.sh && \
    wget “http://10.1.199.5:80/cblr/svc/op/nopxe/system/node06” -O /dev/null \
    && \
    true

    • 您的配置我在另外一篇文章也看到了:https://gist.github.com/2869152

      我发现 不同版本下 的kickstart 配置也不大相同。
      比如 RHT5 RHT6的有些配置不能通用。

      不知道您的Ubuntu 是12.04.1 LTS么?

      另外提一个思路: Ubuntu 在安装的时候,会把 安装源写到 source.list里面去,我们可以在Kickstart 的POST 配置中 把这个源路径改掉,或者增加新的源。当然snippets 就更好了

      • 我现在每天都用,装完就是12.04.1. 用脚本修改sorce.list ,这个倒是简单,最后一步运行那个脚本,顺便搞定就可以。

        目前只是centos 6.x是没任何问题,在我的环境下。没测试过centos5.x。

    • 嗯,学习下,谢谢沙克分享!

  9. 沙克老师好
    最近在折腾那个FixIP的问题。目前我发现的问题是:
    1 您提供的脚本 如果在 第一次安装好,reboot 进入Ubuntu 后,由于默认网卡是DHCP的,因此运行没有问题

    2 在preseed 中执行这个脚本,会发现 获取不到 IP ,MASK, GATEWAY 这些参数
    因此导致 第一次reboot后,网卡启动失败
    查询ubuntu的官方说明 :https://help.ubuntu.com/12.04/installation-guide/amd64/preseed-contents.html ,有这么一段: Although preseeding the network configuration is normally not possible when using network preseeding (using “preseed/url”)
    最近的测试发现:我在 相关软件安装结束后,使用Ubuntu的SHELL 进入(没有自动重启) ,发现 Ubuntu在经过Preseed 后 并没有启动网络相关配置(虽然配置成eth0 DHCP模式了), 手动执行 这个static.sh,它自然取不到相关数据

    不知道有什么办法能解决?是否我的安装上 缺少什么配置呢

    • 最后运行的那个脚本,就是吧dhcp分配过来的IP设置成固定的IP。在我这边的环境是没问题。估计硬件不同,导致有所差异吧。
      那个static.sh 脚本,你读一下,他有一个地方需要修改的,就是你的网段,好像我文档没有强调。

      • 那个脚本 我已经调通了,我在安装完 系统后,reboot进入 Ubuntu,手动执行 static.sh 是完全可以的。(第一次 网卡 是默认DHCP 获取IP,不是静态IP)

        问题就出现在 安装过程中:Preseed相关操作 做完之后,会去执行那个 static.sh文件,但是当时 拿不到IP 这些参数,看了代码发现 脚本是通过ifconfig来获取相关参数的
        因此 安装过程中我尝试手动从菜单中 选择 开启一个shell 会话,进去之后发现 ifconfig 无法正常工作。 截图在这里: http://photo.weibo.com//wbphotos/large/photo_id/3494588947385876?refer=weibofeed

        • 这个脚本本来就是帮你吧dhcp的IP改成静态。所以登陆后,肯定是可以运行。为啥preseed最后一步不能运行,这个就很郁闷。我没测试过vmware。

          • 想尝试写一个snipeet 看看,明天在物理机器 也试试。。。
            我的Vmware station的版本不是太高。

            奇怪的事,正常reboot以后,ubuntu 是能识别Vmware的虚拟机的。。。
            多谢 老师指点,最近是太叨扰 您了

          • 搞个snipeet出来方便大家。等你好消息。

          • 尝试的几条路都堵死了:
            1 preseed/late_command 只允许执行一次,要不然 可以做成跟 centos的 post数据似的提交多次。。。
            2 netcfg/get_ipaddress 这部分是安装时候加载到网卡上的

            所以 看起来 snippets的办法 是不适用在ubuntu下。。。

            还得想别的法子,突破口在 preseed/late_command 调用的脚步上。。。

          • 是啊,为了这个我都折腾了快半年。

          • 目前的进展:
            1 直接准备好 网卡配置,通过http下载到本地,然后覆盖
            高级一点,就用python/php +mysql 做一个接口,动态输出 网卡配置文件

            有一个例子:https://code.google.com/p/ubuntu-kickstart-install/

            2 我用一台 DELL2950 安装Ubuntu12.04.1 ,结果也是 在安装过程中无法获取到DHCP的网络配置,原因也是一样:在安装过程中 没有启动安装好的网络配置

          • 查了官方资料 :cobbler system dumpvars –name=sys_name
            这个可以拿到 一个自定义的 sys_name 下所有变量(包括MAC地址)

            所有思路就有了:
            1 在 kickstart 文件中 加入一个自己定义的 snippets ,里面会根据 mac地址调用wget 下载属于自己的网卡配置文件
            例句:
            #set global mac_address = $getVar(“mac_address_eth0″,””)
            #if $getVar(“system_name”,””) != “”
            wget “http://$http_server:$http_port/tool/$mac_address” -O /target/INTERFACE.COBBLER
            #end if

            2 根据得到的 配置文件 直接覆盖 系统的网卡配置文件 即可

            这个做法能解决多网卡配置的问题,但前提是必须 每台机器都在cobbler中 单独做好配置

  10. shake老师您好,按照您说的做下来,我这个在安装过程中在GRUB那块都会停下来等待交互,非得手动输入/dev/sda才能完成安装(就是半自动了)。不知道这种情况可能是哪的问题,还请您给指点下,谢谢!

  11. shake老师您好,请问cobbler可以安装ubuntu10.04吗,和12.04有什么不同?

  12. shake老师您好,请问cobbler和FAI在安装ubuntu方面有什么各自的优劣?为什么您没有选择FAI而选择了cobbler呢?

    • 我测试过FAI,不过他的学习曲线很陡,我折腾了一个星期,才勉强把debian装好。另外他有一个明显的问题就是他是通过nfs的方式安装,而不是走http。这样好像就导致不能跨网段进行。当时ubuntu server的负责人,专门做了一个类似的调研,后来选择了Cobbler。

      • shake老师您好,请问Cobbler在配置文件方面表现怎么样,是不是易读易修改,可以有类似模板的东西吗,比如抽象出不同的配置模块。这样在部署不同类型的服务器时,可以灵活的组合或者修改配置文件。谢谢~

  13. 您好,我用cobbler装ubuntu12.04,

    分区方案是:
    boot->sda1(普通分区,100MB),
    sda2为磁盘剩余空间做PV(30GB),
    swap->LV(1024MB),
    /->LV(5120MB),
    opt->LV(5120MB),
    剩余VG空间保留待手动分配。

    问题是安装完了最后指定的opt使用了VG剩余的所有空间,我的preed哪里有问题?

    # Partition
    d-i partman-auto/disk string /dev/sda
    d-i partman-auto/method string lvm
    d-i partman-lvm/device_remove_lvm boolean true
    d-i partman-lvm/device_remove_lvm_span boolean true
    d-i partman-auto/purge_lvm_from_device boolean true
    d-i partman-auto/choose_recipe select chenchen

    d-i partman-auto/expert_recipe string chenchen :: \
    200 200 200 ext4 \
    $primary{ } $bootable{ } \
    method{ format } format{ } \
    use_filesystem{ } filesystem{ ext4 } \
    mountpoint{ /boot } \
    . \
    11264 201 11264 lvm \
    $primary{ } \
    $defaultignore{ } \
    method{ lvm } \
    device{ /dev/sda } \
    vg_name{ vg00 } \
    . \
    1024 1024 1024 linux-swap \
    $lvmok{ } \
    lv_name{ SWAP } \
    in_vg{ vg00 } \
    method{ swap } format{ } \
    . \
    5120 5120 5120 ext4 \
    $lvmok{ } \
    lv_name{ ROOT } \
    in_vg{ vg00 } \
    method{ lvm } format{ } \
    use_filesystem{ } filesystem{ ext4 } \
    mountpoint{ / } \
    . \
    5120 5120 5120 ext4 \
    $lvmok{ } \
    lv_name{ OPT } \
    in_vg{ vg00 } \
    method{ lvm } format{ } \
    use_filesystem{ } filesystem{ ext4 } \
    mountpoint{ /opt } \
    .

    d-i partman-lvm/confirm_nochanges boolean false
    d-i partman-lvm/confirm_nooverwrite boolean true
    d-i partman-lvm/confirm boolean true
    d-i partman-auto-lvm/guided_size string max
    d-i partman/confirm_write_new_label boolean true
    d-i partman/choose_partition select finish
    d-i partman/confirm boolean true
    d-i partman/confirm_nooverwrite boolean true

  14. 沙克老师,请问下您安装的是ubuntu-server版本。这个测试过是没问题的。但安装ubuntu-desktop版本就出问题了。提示缺少问题的错误

    • 因为我没用桌面,也就真不知道是啥问题。应该最新版本的cobbler,对ubuntu支持好很多。

  15. 沙克老师您好,可以在kickstart文件中向某个指定的文件写入数据吗?安装Ubuntu好麻烦。

    • 我直接添加这句话好像没有起到作用:sed -i “s/PermitRootLogin without-password/PermitRootLogin yes/g” ‘/etc/ssh/sshd_config’

  16. 沙克老师,您好:
    我配好的Ubuntu安装时候出现Retrieving 特别慢,请问怎么才能跳过呢?

  17. 为什么我安装Ubuntu过程中要手动选择网卡呢,我在seed文件里写了d-i netcfg/choose_interface select em3 还是需要手动选择呢,我这有4个网卡,em1 和em2是生产用的,我想用em3安装

    • 那个网卡安装,应该是pxe的时候决定的。

      • 老师 ,可能是我理解错了,安装的时候是从em3安装的,但是安装过程中却出现了选择网卡配置的界面,我seed里面写auto 了,按照您的文件配置的,也不行,必要要手动去选择一个网卡,然后回车。

        • 这个问题就复杂了。不过我想fuel也应该有类似的问题。不知道他们怎么解决。

          • 老师,我这里有个需求是想用一个system配置默认使用一个ks文件,可以一个system对应多台机器,最终的目的是跳过客户机启动的时候手动选择镜像的步奏,不知道老师有没有解决办法

          • 感觉你理解有点问题。system就是一个机器。profile和system是1对多的关系。不选择镜像倒是简单,你可以通过mac地址指定。或者利用ipmitool,让机器仅仅一次从pxe启动,这样就不会导致重复安装的问题。

          • 谢谢老师的回复,我看到网上有那种添加system的时候可以用–ip添加一个网段,指定一个profile,但是我看了system add 好像没有这个参数,不知道他们是不是从新开发了。

        • 我也碰到了同样的问题,请问你解决的了吗?

        • 我也碰到了同样的问题,请问你解决了吗?

  18. 你好!最近在研究基于centos自动化安装ubuntu,想问下几个问题:
    1、如果不安装swap,只要根分区,如何解决每次自动化安装都提示没有swap的问题?
    2、多个网卡的时候,每次自动化安装都会提示选择哪个网卡(虽然配置文件中已经设置自动)?
    3、当cobbler导入多个源的时候,如何设置默认值(目前测试的时候每次安装都要我选择使用哪个)?

    谢谢!在线等,急!!!!!!

    • 物理机器都是有swap分期的。多网卡选择的我问他,我文档应该提到,需要设置kernel参数。cobbler导入多个源,你可以在profile里选择。

 Leave a Reply

(required)

(required)