新聞中心
概述

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的廣平網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
本例主要實(shí)現(xiàn)通過(guò)cobbler,配合seed腳本文件,來(lái)自動(dòng)化安裝部署ubunut環(huán)境,并安裝相應(yīng)的軟件并作相應(yīng)的基本配置,可以通過(guò)此方法來(lái)為ceph等大規(guī)模集群基礎(chǔ)部署。
seed文件:Debian ubuntu平臺(tái)的一種自動(dòng)化部署配置文件 和kickstart文件功能相同。其實(shí)ubuntu也可以使用ks文件,但是只能進(jìn)行基本的環(huán)境配置,不能自定義包的安裝和腳本的運(yùn)行。
實(shí)驗(yàn)環(huán)境
cobbler-server: 1.1.1.122 CentOS7.2
ubuntu 客戶端:kvm虛擬機(jī)
定義發(fā)行版Distro
導(dǎo)入外部安裝源,如光盤(pán)導(dǎo)入本地會(huì)放在 /var/www/cobbler/ks_mirror 下,通過(guò) http輸出,假設(shè)這里已將ubuntu的安裝光盤(pán)掛載到本地 的/mnt 下
cobbler import --name="ubuntu14" --path=/mnt 【導(dǎo)入安裝源】
cobbler distro list 【查看已經(jīng)存在的安裝源】
建立更改配置文件profile
1.用于與相應(yīng)的發(fā)行版聯(lián)系起來(lái),實(shí)現(xiàn)同一個(gè)發(fā)行版的不同安裝選項(xiàng),名稱不要與 distro 相同。默認(rèn)情況下,建立完成distro后會(huì)自動(dòng)建立與之相關(guān)聯(lián)的profile。如果想手動(dòng)建立并且指定seed文件的話使用如下操作:
cobbler profile add --name=ubuntu14-x86_64 --distro=ubuntu14 --kickstart=/var/lib/cobbler/kickstarts/ubuntu.seed 【指定發(fā)行版為ubuntu14,并指定 seed文件的名稱和位置, cobbler 的/var/lib/cobbler/kickstarts/目錄下帶了很多 kickstart和seed的文件模板
具體seed文件內(nèi)容稍后會(huì)列出。當(dāng)然這些操作可以在web UI界面下完成,也很直觀。
2.查看現(xiàn)有的profile
cobbler profile list
添加安裝節(jié)點(diǎn)System
主要功能就是可以根據(jù)節(jié)點(diǎn)mac地址,來(lái)識(shí)別不同節(jié)點(diǎn)的安裝選項(xiàng)差異,如ip、dns、hostname等等。
1234567891011 cobbler system add \
--name=ceph-deploy \
--hostname=ceph-deploy.test.com \
--dns-name=ceph-deploy.test.com \
--profile=ubuntu14-x86_64 \
--interface=eth0 \
--mac= [mac地址] \
--ip-address=1.1.1.30 \
--subnet=255.255.255.0 \
--gateway=1.1.1.1 \
--static=1
這樣當(dāng)客戶端通過(guò)pxe啟動(dòng),檢測(cè)到與之匹配的mac時(shí)候就會(huì)自動(dòng)調(diào)取相應(yīng)的system,安裝過(guò)程中會(huì)給分配相應(yīng)的地址等信息。如果不匹配啟動(dòng)就會(huì)出現(xiàn)cobbler默認(rèn)的引導(dǎo)菜單界面。
#############
# 網(wǎng)絡(luò)配置
#############
d-i netcfg/choose_interface select auto
#############
# Pre Install
############
# Command Line 1: This is necessary otherwise you will be prompted to umount /dev/sda. See Ubuntu bug #1347726.
d-i preseed/early_command string \
umount /media || true
#############
# Net Image
#############
# 針對(duì)12.10以上的版本一定要配置這個(gè)
d-i live-installer/net-image string
#############
#語(yǔ)言設(shè)置
#############
d-i debian-installer/locale string en
d-i debian-installer/country string CN
d-i debian-installer/locale string en_US.UTF-8
d-i debian-installer/language string en
#############
# 鍵盤(pán)設(shè)置
#############
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us
d-i console-setup/variantcode string
d-i keyboard-configuration/layoutcode string us
#############
# 安裝源配置
#############
#安裝源配置
d-i mirror/country string manual
d-i mirror/http/proxy string 1.1.1.122 #此處必須填寫(xiě),否則安裝system要等很久
d-i mirror/http/hostname string 1.1.1.122
d-i mirror/http/directory string /ubuntu/
#############
# APT
############
#如不配置此項(xiàng),在安裝包的時(shí)候會(huì)卡住很久,但不影響最終安裝結(jié)果
d-i apt-setup/security_host string 172.16.245.240
d-i apt-setup/security_path string /ubuntu
#############
#
# Clock and Time Zone
#
#############
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string 1.1.1.1
d-i time/zone string Asia/Shanghai
d-i clock-setup/CST boolean true
#############
# Partitioning
#############
#清楚磁盤(pán)中所有的lvm分區(qū)
d-i partman-lvm/device_remove_lvm boolean true
# 清楚所有raid分區(qū)
d-i partman-md/device_remove_md boolean true
#使用磁盤(pán)進(jìn)行普通分區(qū)
d-i partman-auto/method string regular
d-i partman-auto/disk string /dev/vda #kvm虛擬機(jī)中磁盤(pán)是vda,如果是真實(shí)機(jī)器則是sda
#預(yù)定義分區(qū)方式,每個(gè)分區(qū)在一行定義,以.結(jié)尾
#每組分區(qū)三個(gè)數(shù)字表示:最小分區(qū)多少M(fèi)B,優(yōu)先級(jí)(越小越優(yōu)先),分區(qū)最大多少M(fèi)B
d-i partman-auto/expert_recipe string \
boot-root :: \
150 150 150 ext4 \
$primary{ } $bootable{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /boot } \
. \
8000 8000 8000 linux-swap \
method{ swap } format{ } \
. \
204800 204800 204800 ext4 \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } \
.
d-i partman-partitioning/confirm_write_new_label boolean true #不提示寫(xiě)入fenqu信息到磁盤(pán)
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true #不提示覆蓋磁盤(pán)中已有數(shù)據(jù)
#############
# Packages
#############
# 這里目前我只能選擇包組,沒(méi)法制定具體某個(gè)安裝包,不知道具體為什么。
tasksel tasksel/first multiselect openssh-server
# 禁止安裝時(shí)自動(dòng)更新
d-i pkgsel/upgrade select none
d-i pkgsel/update-policy select none
popularity-contest popularity-contest/participate boolean false
#############
# Users and Password
#############
#允許使用root登錄
d-i passwd/root-login boolean true
# 不建立其他用戶
d-i passwd/make-user boolean false
#允許使用弱密碼
d-i user-setup/allow-password-weak boolean true
#配置root密碼,通過(guò)mkpasswd程序生成
d-i passwd/root-password-crypted password $1$RsMBi5P0$bWmhi.I4MnZPmWFXpBEy0/
#############
# Bootloader
#############
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note #安裝完成后重啟
#############
# 安裝完成后執(zhí)行腳本和命令
#############
#所有命令通過(guò);分隔,如果使用一般命令可以直接執(zhí)行,但此時(shí)真正的系統(tǒng)正被掛在載/target/下面,因此最終執(zhí)行的目標(biāo)是/target/下,如果想使用系統(tǒng)級(jí)的命令,如執(zhí)行腳本等。需要通過(guò)chroor 到/target下,以target為根 才能正常執(zhí)行,否則報(bào)錯(cuò)。
#第一個(gè)命令是修改ssh配置文件,使其允許root登錄
#第二個(gè)命令是下載soures.list,該文件實(shí)現(xiàn)定義內(nèi)部的apt源。
#第三個(gè)命令是去掉cobbler中system的自動(dòng)引導(dǎo),否則下次重啟系統(tǒng)還會(huì)重新安裝。
#第四個(gè)命令是下載并執(zhí)行一個(gè)腳本,實(shí)現(xiàn)公鑰注入功能。
#第五個(gè)命令是更新apt源,并安裝指定的軟件包。
#第六個(gè)命令則修改puppet配置文件和chrony時(shí)間服務(wù)的配置文件。
d-i preseed/late_command string \
sed -i '/PermitRootLogin / s/ .*/ yes/' /target/etc/ssh/sshd_config; \
wget http://$http_server/cobbler/repo_mirror/trusty-sources.list -O /target/etc/a pt/sources.list; \
wget http://$http_server/cblr/svc/op/nopxe/system/$system_name -O /dev/null; \
cd /target; \
wget http://$http_server/cobbler/svc/public_key.sh; chmod +x ./public_key.sh; chr oot ./ ./public_key.sh; \
chroot ./ apt-get update; \
chroot ./ apt-get install -y --force-yes vim chrony puppet; \
cd - ; \
sed -i '8 s/^.*/server=puppet-server.chinergy.com.cn/' /target/etc/puppet/puppet. conf; sed -i '4 s/^.*/server 1.1.1.1 iburst/' /target/etc/chrony/chrony.conf
公鑰注入腳本內(nèi)容
123456 mkdir /root/.ssh
cat >> /root/.ssh/authorized_keys << PUPPET
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCk0cgPsrcwvIKBe+Y4sDMtcriNkxgLvXDTJhi1M4v+HvUF0VUO7DmjESfcUcpJVRn09O8erYcPy548b/mJBoy0zfp16+5mGw6y9NH/VHToxfqkA1nAdBKQRih7CHv40iO7cFxFBnDcL+5nTyHzHAbPx4TZ5QwsWGNPnL8yMFyeX2dxP64woiwVIcKo2yoVockyyiGkgiOb6vc6ZK6XKR1LjhAr1ESAAYBzSKNCNak8qrf4tuCvVI++qnl9GiiLJ+OatTNOLId3umz5+J5/hRfHhxNzR7P0q/fJBQOvgtBqXaldJFYM6zr679dB4niMuObXphVuOVGfQDDOK7w/ root@puppet-server
PUPPET
總結(jié)
個(gè)人感覺(jué)ubuntu的seed文件較ks更為復(fù)雜一些,而且更容易出錯(cuò),很詳細(xì)的說(shuō)明文檔也很少,所以在自己的環(huán)境中不斷的試驗(yàn)修改,最后達(dá)到適合自己環(huán)境的版本。目前還不知道在post腳本階段怎么成功引用snippets變量,試了很多方式都會(huì)報(bào)錯(cuò),因此干脆就用執(zhí)行腳本替代了。
分享文章:Cobbler自動(dòng)化安裝部署Ubuntu14.04
標(biāo)題來(lái)源:http://m.fisionsoft.com.cn/article/ccscsjj.html


咨詢
建站咨詢
