cloud-init使用技巧

 

对于 Linux 镜像,cloud-init 负责 instance 的初始化工作。cloud-init 功能很强大,能做很多事情,而且我们可以通过修改配置文件灵活定制 cloud-init。

cloud-init 的配置文件为 /etc/cloud/cloud.cfg,这里举几个应用场景:

1. 如果希望 root 能够直接登录 instance(默认不允许 root 登录),设置:

disable_root: 0

 

2. 如果希望能以 ssh passwod 方式登录(默认只能通过 private key 登录),设置:

 

ssh_pwauth: 1

 


3. 如果希望能够修改 instance 的 hostname(默认 instance 每次重启后 cloud-init 都会重新将 hostname 恢复成初始值),将cloud_init_modules 列表中下面两项删除或注释掉:

- set_hostname
- update_hostname

 

 

instance 每次启动 cloud-init 都会执行初始化工作,如果希望改变所有 instance 的初始化行为,则修改镜像的 /etc/cloud/cloud.cfg 文件;如果只想改变某个 instance 的初始化行为,直接修改 instance 的 /etc/cloud/cloud.cfg。

 

 

 

 
Set Passwords:
 
例子1:
 
   
chpasswd:
  list: |
    user1:password1
    user2:password2
    user3:RANDOM
  expire: False
 

例子2:

 #cloud-config

chpasswd:

   list: |

       root:123456

       ubuntu:123456

   expire: false

 

 

如果指定expire, 并且设置为 false, 则将密码全局配置键用作所有用户帐户的密码。如果指定了expire并将其设置为 true, 则用户密码将过期, 从而防止使用默认的系统密码。

如果提供了list键, 则可以指定username:password列表。指定的用户名必须已存在于系统中, 或者已使用 cc_users_groups 模块创建

密码可以使用username:RANDOM 或者 username:R生成

 

 如果提供了RAMDOM或者R选项的话密码会被设置为自动生成的字符串.这个密码可以在console-log(nova console-log )或者在/var/log/cloudinit-output.log中查看.

 

注意:cloud-init 只有第一次启动的时候会修改密码,也就是说第一次安装cloud-init,然后配置/etc/cloud/cloud.cfg,关机清理信息。再开机会强行修改密码。

接着再开机不会强行修改密码,即使删除cloud-init再重装配置也不行。

 

 

下面是cloud.cfg的一个例子:

users:
 - default

disable_root: 0
ssh_pwauth:   1

locale_configfile: /etc/sysconfig/i18n
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
resize_rootfs_tmp: /dev
ssh_deletekeys:   0
ssh_genkeytypes:  ~
syslog_fix_perms: ~

cloud_init_modules:
 - migrator
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - rsyslog
 - users-groups
 - ssh

cloud_config_modules:
 - mounts
 - locale
 - set-passwords
 - yum-add-repo
 - package-update-upgrade-install
 - timezone
 - puppet
 - chef
 - salt-minion
 - mcollective
 - disable-ec2-metadata
 - runcmd

cloud_final_modules:
 - rightscale_userdata
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message

system_info:
  default_user:
    name: root
    lock_passwd: true
    gecos: Cloud User
    groups: [wheel, adm]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash
  distro: rhel
  paths:
    cloud_dir: /var/lib/cloud
    templates_dir: /etc/cloud/templates
  ssh_svcname: sshd

# vim:syntax=yaml
chpasswd:
   list: |
       root:123456
   expire: true  

 

注意:

 

1.如果镜像没有设置cloud_init,即使在计算节点的 /etc/nova/nova.conf 中配置 force_config_drive = true,也不会调用元数据信息
2.如果镜像设置了cloud_init,在计算节点的 /etc/nova/nova.conf 中没有配置 force_config_drive = true,依然会调用元数据信息,
而此时因为不知道怎么去调,所以会有一些报错信息,这样会导致开机比较久,而且每次开机都会读取元数据信息

 

 提醒和解决方法:

如果之前的镜像是没有安装cloud-init,这时会有这种情况出现:
1.在/etc/nova/nova.conf中没有配置force_config_drive = true的计算节点中的机器,任何操作都是正常的;
即使在计算节点的 /etc/nova/nova.conf 中配置 force_config_drive = true,也不会调用元数据信息

2.这时通过rbd ls vms查看的所有虚拟机是这样子的:
4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk


但是如果之后的镜像安装了cloud-init,则会出现这种情况:
1.在/etc/nova/nova.conf中配置了force_config_drive = true,那么之前用没有安装cloud-init的镜像安装的这些虚拟机
一旦重启就会变成ERROR 或者NOSTATE状态。
原因:
这时通过rbd ls vms查看的所有虚拟机是这样子的
4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk
4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk_config
并且读取的是4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk_config文件

2.如果镜像设置了cloud_init,在计算节点的 /etc/nova/nova.conf 中没有配置 force_config_drive = true,依然会调用元数据信息,
而此时因为不知道怎么去调,所以会有一些报错信息,这样会导致开机比较久,而且每次开机都会读取元数据信息


解决:
1.修改数据库,然后关闭虚拟机再开机

推荐:
1.如果之前/etc/nova/nova.conf没有force_config_drive = true选项,则建议不要安装cloud_init;否则会出现各种奇怪的问题


有朋友说:突然多出的4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk_config文件是因为迁移导致的,可能跟force_config_drive无关;
但是没有实验证明。

 

 

 

 

 

 

 

 

 

 

参考:http://www.cnblogs.com/CloudMan6/p/6431771.html

 https://www.2cto.com/net/201708/667502.html

转载于:https://www.cnblogs.com/zhongguiyao/p/8328872.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值