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

[经验分享] cobbler之自动化部署ubuntu14

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-13 09:01:44 | 显示全部楼层 |阅读模式
                      概述   
   本例主要实现通过cobbler,配合seed脚本文件,来自动化安装部署ubunut环境,并安装相应的软件并作相应的基本配置,可以通过此方法来为ceph等大规模集群基础部署。
   seed文件:Debian ubuntu平台的一种自动化部署配置文件 和kickstart文件功能相同。其实ubuntu也可以使用ks文件,但是只能进行基本的环境配置,不能自定义包的安装和脚本的运行。
  实验环境


    • cobbler-server: 1.1.1.122 centos7.2
    • ubuntu 客户端:kvm虚拟机


定义发行版Distro

  • 导入外部安装源,如光盘导入本地会放在 /var/www/cobbler/ks_mirror 下,通过 http输出,假设这里已将ubuntu的安装光盘挂载到本地 的/mnt 下

    • 1
      2
      cobbler import --name="ubuntu14" --path=/mnt    【导入安装源】
      cobbler distro list 【查看已经存在的安装源】




建立更改配置文件profile
1.用于与相应的发行版联系起来,实现同一个发行版的不同安装选项,名称不要与 distro 相同。默认情况下,建立完成distro后会自动建立与之相关联的profile。如果想手动建立并且指定seed文件的话使用如下操作:
1
cobbler profile add --name=ubuntu14-x86_64 --distro=ubuntu14 --kickstart=/var/lib/cobbler/kickstarts/ubuntu.seed 【指定发行版为ubuntu14,并指定 seed文件的名称和位置, cobbler 的/var/lib/cobbler/kickstarts/目录下带了很多 kickstart和seed的文件模板



具体seed文件内容稍后会列出。当然这些操作可以在web UI界面下完成,也很直观。
2.查看现有的profile
1
cobbler profile list



添加安装节点System
主要功能就是可以根据节点mac地址,来识别不同节点的安装选项差异,如ip、dns、hostname等等。
1
2
3
4
5
6
7
8
9
10
11
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



这样当客户端通过pxe启动,检测到与之匹配的mac时候就会自动调取相应的system,安装过程中会给分配相应的地址等信息。如果不匹配启动就会出现cobbler默认的引导菜单界面。

PreSeed文件
这里列出了一个seed文件,一般情况下会适用于绝大多数ubuntu14的安装环境,但是某些情况也许有些特例,这方面seed不如ks兼容性那么好,不同的大版本直接也许会有差异。这里仅以14版本为例,12版本没有试过是否可用,由于本人对seed文件也是理解有限,所以仅供参考
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#############
# 网络配置
#############

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
#############

# 针对12.10以上的版本一定要配置这个
d-i live-installer/net-image string

#############
#语言设置
#############
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

#############
# 键盘设置
#############
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    #此处必须填写,否则安装system要等很久
d-i mirror/http/hostname string 1.1.1.122
d-i mirror/http/directory string /ubuntu/

#############
# APT
############
#如不配置此项,在安装包的时候会卡住很久,但不影响最终安装结果
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
#############

#清楚磁盘中所有的lvm分区
d-i partman-lvm/device_remove_lvm boolean true

# 清楚所有raid分区
d-i partman-md/device_remove_md boolean true


#使用磁盘进行普通分区
d-i partman-auto/method string  regular
d-i partman-auto/disk string /dev/vda    #kvm虚拟机中磁盘是vda,如果是真实机器则是sda

#预定义分区方式,每个分区在一行定义,以.结尾
#每组分区三个数字表示:最小分区多少MB,优先级(越小越优先),分区最大多少MB
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 #不提示写入fenqu信息到磁盘
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true #不提示覆盖磁盘中已有数据
#############
# Packages
#############

# 这里目前我只能选择包组,没法制定具体某个安装包,不知道具体为什么。
tasksel tasksel/first multiselect openssh-server

# 禁止安装时自动更新
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密码,通过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    #安装完成后重启

#############
# 安装完成后执行脚本和命令
#############

#所有命令通过;分隔,如果使用一般命令可以直接执行,但此时真正的系统正被挂在载/target/下面,因此最终执行的目标是/target/下,如果想使用系统级的命令,如执行脚本等。需要通过chroor 到/target下,以target为根 才能正常执行,否则报错。
#第一个命令是修改ssh配置文件,使其允许root登录
#第二个命令是下载soures.list,该文件实现定义内部的apt源。
#第三个命令是去掉cobbler中system的自动引导,否则下次重启系统还会重新安装。
#第四个命令是下载并执行一个脚本,实现公钥注入功能。
#第五个命令是更新apt源,并安装指定的软件包。
#第六个命令则修改puppet配置文件和chrony时间服务的配置文件。
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



公钥注入脚本内容
1
2
3
4
5
6
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



总结
个人感觉ubuntu的seed文件较ks更为复杂一些,而且更容易出错,很详细的说明文档也很少,所以在自己的环境中不断的试验修改,最后达到适合自己环境的版本。目前还不知道在post脚本阶段怎么成功引用snippets变量,试了很多方式都会报错,因此干脆就用执行脚本替代了。

                   


运维网声明 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-271503-1-1.html 上篇帖子: HA高可用集群 下篇帖子: find命令与locate命令的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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