cloud-init制作centos7镜像
来源:互联网 发布:51网络技术论坛 编辑:程序博客网 时间:2024/06/11 07:12
一、环境说明
你需要准备一台KVM机器,用于制作初始的centos7镜像。建议最终将ISO镜像转为QCOW2。
二、配置好网络
ISO镜像的centos7系统刚装好,网络可能不通,所以要检查网络。
ping 外网检测
# ping www.baidu.com
如果未能ping通,请依次检测ip,route
# vi /etc/sysconfig/network-script/ifcfg-eth0
可以先将dhcp动态分配IP改为静态IP
#cgls #BOOTPROTO=dhcpBOOTPROTO=staticIPADDR=172.16.5.133GATEWAY=172.16.1.1NETMASK=255.255.0.0ONBOOT=yes
重启网卡使其生效
# service network restart
检查路由
# route -n
Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 172.16.1.1 0.0.0.0 UG 100 0 0 eth0169.254.169.254 172.16.88.100 255.255.255.255 UGH 100 0 0 eth0172.16.0.0 0.0.0.0 255.255.0.0 U 100 0 0 eth0
如果你缺失第一个路由,是肯定无法ping通外网的这里写代码片
添加dns
# vim /etc/resolv.conf
nameserver 114.114.114.114nameserver 8.8.8.8
添加路由
# route add default gw 172.16.1.1
试一下ping百度
# ping www.baidu.com
成功之后我们可以开始下一步操作。
三、安装相应的包
安装ACPI服务
这个服务是控制重启和关闭实例
# yum -y install acpid# systemctl enable acpid
配置获取元数据
一个实例必须与元数据服务进行交互任务后再启动。 例如:必须得到实例 ssh公钥并运行脚本的用户数据。 为了确保实例执行这些任务,推荐安装一个cloud-init包。
使用cloud-init获取公钥,cloud-init包将从元数据服务器和一个帐户的关键的地方自动获取公钥 。
安装cloud-init。
# yum -y install cloud-init
cloud-init通过编辑/etc/cloud/cloud.cfg,对镜像进行定制。我们现在暂时不修改这个文件,将其他配置弄完再进行定制。
安装cloud-utils-growpart允许分区调整
# yum -y install cloud-utils-growpart
实例需要访问元数据服务, 必须禁用默认zeroconf路线。
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
配置控制台
如果希望在仪表盘界面查看nova控制台的日志,需要做以下配置:
# vi /etc/default/grub
修改GRUB_CMDLINE_LINUX为以下内容
GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8"
保存更改
# grub2-mkconfig -o /boot/grub2/grub.cfg
出现以下内容,配置结束。
Generating grub configuration file ...Found linux image: /boot/vmlinuz-3.10.0-229.14.1.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-229.14.1.el7.x86_64.imgFound linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.imgFound linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.imgFound linux image: /boot/vmlinuz-0-rescue-605f01abef434fb98dd1309e774b72baFound initrd image: /boot/initramfs-0-rescue-605f01abef434fb98dd1309e774b72ba.imgdone
三、进行定制
修改配置项,修改之前说两句。
阅读cloud-init官方文档,读几遍,确保你知道你在配置些什么,以及这些配置项是如何生效的,模块频率是怎样。
Users and Groups模块的模块频率是每个实例执行一次,也就是说你制作的镜像起了云主机之后,再修改这个模块配置重启机器是不再生效了。
与Users and Groups模块的模块频率相似的还有Write_files、Set Passwords模块。
Bootcmd模块的模块频率是每个实例可以执行多次,也就是说,起了云主机之后,再修改这个模块配置重启机器之后也会生效。
与Bootcmd模块的模块频率相似的还有Runcmd。
vi /etc/cloud/cloud.cfg
将locale_configfile: /etc/sysconfig/i18n之前的配置替换为以下内容。
groups: - centosusers: - name: demo expiredate: 2016-09-01 groups: centos homedir: /home/bh lock_passwd: false passwd: $6$dfdfsdsf$y9obLvZMtAb.uWTIU1OTrZqZImHvCCs01ntDFwO0DnfFxXtgaLq2YoMK6yJ0KjfI260DH0Pv7T6Sj9TXVuUag0 - name: root ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYbA+xgxzm3pySQfW6oh7yr4xYD6n6T/upHuWAdVp/sU2ukeoDU/U6qPBpJuMVRzfaT6pyJEgK7gknaKu/GZxMfnA/9Dt5JJln6PmstWZoWclmxvS7MPCqeL0+ESFvMx64UZFIePbClb5kh1UFggQ5WwDvAIC+1HysI3qGOIZ/RoYUrOHNdgQJzV8xcpWLeDKF2MBNQt/Pyzl+WLxoTN6cd4XlrA9E729t8OwrK5mvTe9CUpWKYELGV6bfqNLGNcUT5LYx9tqyanB4KA1eBC5/9MhBjGeO+EcsQv6zooVJTIAE65XmCEib4WukQcUTr8Td7+6+wMY9463us2OrVVw7bootcmd: - echo 123321 >> /root/bootcmd.logwrite_files: - encoding: b64 content: CiMgVGhpcyBmaWxlIGNvbnRyb2xzIHRoZSBzdGF0ZSBvZiBTRUxpbnV4... owner: root:root path: /etc/sysconfig/cjm permissions: '0644' - content: | # My new /etc/sysconfig/samba file SMDBOPTIONS="-D" path: /etc/sysconfig/cglsruncmd: - [ sh, -c, sh /root/bootcmd.sh ] - [ sh, -c, echo "=========hello world'=========" >> /root/runcmd.log ]ssh_pwauth: yeschpasswd: list: | root:cjm123 expire: False preserve_hostname: flasefqdn: qwehost.localhostname: qwehostmanage_etc_hosts: true
复制过去的时候注意格式问题。
注意格式问题:
1.确定空行一致性,统一以空2格作为区分。
2.冒号后空一格
3.写多行需要按照yuml语法编写
如果格式出了问题,你配置的cloud-init将全部失效。
解释配置:
1.配置了用户组
groups: - centos
2.配置用户,创建了demo用户,设置了过期时间,所属用户组,用户目录,以及是否开启密码登录,并为其设置了密码。
为root用户,设置了ssh免密码登录,附上了公钥。
密码是通过加密的产生的,生成命令为:
# python -c 'import crypt; print crypt.crypt("cgls", "$6$dfdfsdsf")'
在需要免密码登录的机器上执行下面命令,产生密钥对。
# ssh-keygen -t rsa
将公钥内容复制到配置中。
cat /root/.ssh/id_rsa.pub
users: - name: demo expiredate: 2016-09-01 groups: centos homedir: /home/bh lock_passwd: false passwd: $6$dfdfsdsf$y9obLvZMtAb.uWTIU1OTrZqZImHvCCs01ntDFwO0DnfFxXtgaLq2YoMK6yJ0KjfI260DH0Pv7T6Sj9TXVuUag0 - name: root ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYbA+xgxzm3pySQfW6oh7yr4xYD6n6T/upHuWAdVp/sU2ukeoDU/U6qPBpJuMVRzfaT6pyJEgK7gknaKu/GZxMfnA/9Dt5JJln6PmstWZoWclmxvS7MPCqeL0+ESFvMx64UZFIePbClb5kh1UFggQ5WwDvAIC+1HysI3qGOIZ/RoYUrOHNdgQJzV8xcpWLeDKF2MBNQt/Pyzl+WLxoTN6cd4XlrA9E729t8OwrK5mvTe9CUpWKYELGV6bfqNLGNcUT5LYx9tqyanB4KA1eBC5/9MhBjGeO+EcsQv6zooVJTIAE65XmCEib4WukQcUTr8Td7+6+wMY9463us2OrVVw7
3.Bootcmd只用于在引导过程之后不能做的时候再使用
bootcmd: - echo 123321 >> /root/bootcmd.log
4.写文件,第一个是加密之后的内容,第二个是正常内容。
write_files: - encoding: b64 content: CiMgVGhpcyBmaWxlIGNvbnRyb2xzIHRoZSBzdGF0ZSBvZiBTRUxpbnV4... owner: root:root path: /etc/sysconfig/cjm permissions: '0644' - content: | # My new /etc/sysconfig/samba file SMDBOPTIONS="-D" path: /etc/sysconfig/cgls
5.与bootcmd类似,可在引导之后使用
runcmd: - [ sh, -c, sh /root/bootcmd.sh ] - [ sh, -c, echo "=========hello world'=========" >> /root/runcmd.log ]
6.设置root用户密码
ssh_pwauth: yeschpasswd: list: | root:cjm123 expire: False
最后就是修改静态IP为dhcp动态获取了
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
#cgls BOOTPROTO=dhcp#BOOTPROTO=static#IPADDR=172.16.5.133#GATEWAY=172.16.1.1#NETMASK=255.255.0.0ONBOOT=yes
关机
# poweroff
四、开启云主机
上传镜像到openstack上
# openstack image create "centos7_init" --file centos7.0-3.qcow2 --disk-format qcow2 --container-format bare --public
控制台界面中自己开启云主机,可以看到自己定制的centos7有没有成功了。
- cloud-init制作centos7镜像
- powerkvm cloud-init镜像制作
- ubuntu安装cloud-init制作成openstack镜像---cloud-init篇
- 制作centos6.5 镜像,安装cloud-init 支持openstack 密码注入
- 制作centos6.5 镜像,安装cloud-init 支持openstack 密码注入
- centos7如何安装cloud-init
- 制作rhe7.3- cloud-init
- 制作CentOS7.3的OpenStack镜像
- [docker]centos7 supervisor镜像制作参考
- 制作基于centos7的mysql的docker镜像
- 制作mesos的docker镜像(centos7.2)
- openstack使用2——制作centos7镜像
- centos7上win2003 virtio (openstack)镜像制作成功(图文详解)
- 制作支持OS::Heat::SoftwareConfig以及ansible组件的自定义centos7镜像
- 手动制作openstack、libvirt上的centos7镜像(存储使用qcow2)
- 制作iso镜像
- 制作文件系统镜像
- 制作initramfs镜像
- 数据结构-栈
- Hadoop、Hive、Spark 之间是什么关系?
- TensorFlow学习笔记(一):快速安装与使用TensorFlow
- 用jquery获取tbody下的第一个tr的最后一个td里面的第一个a标签
- 贝塞尔曲线与CSS3动画、SVG和canvas的基情
- cloud-init制作centos7镜像
- Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String'
- USB PHY Test
- Java分布式锁
- C#——面向对象——泛型——约束
- OBS直播画面模糊怎么回事
- C语言位域的用法
- 关于python的txt文件内容修改的解决方案
- Django开发实践-1