您的位置:首页 > 运维架构

openstack 制作winserver2008_R2镜像 用cloudbase-init 实现第一次创建就注入密码(需登录)

2016-05-06 16:45 489 查看
使用cloudbase-init 注入密码的方法网上很多,这里主要是解决

在第一次创建实例时密码注入比较缓慢,用户会不需要密码直接进入到系统中,需要重启才会要求输入密码,这样会带来安全隐患

导致原因:配置文件会提前加载两个模块

cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin

cloudbaseinit.plugins.common.mtu.MTUPlugin

这就会导致在设置好主机名以后重新加载所有模块,而此时系统已经启动了

用户已经进入系统,cloudbase-init 的程序还在后台运行设置密码和其它设置

为了解决这个问题,在代码中找到了所有模块加载的地方

opts = [

    cfg.ListOpt(

        'plugins',

        default=[

            'cloudbaseinit.plugins.common.mtu.MTUPlugin',

            'cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin',

            'cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin',

            'cloudbaseinit.plugins.windows.createuser.CreateUserPlugin',

            'cloudbaseinit.plugins.common.networkconfig.NetworkConfigPlugin',

            'cloudbaseinit.plugins.windows.licensing.WindowsLicensingPlugin',

            'cloudbaseinit.plugins.common.sshpublickeys.'

            'SetUserSSHPublicKeysPlugin',

            'cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin',

            'cloudbaseinit.plugins.common.userdata.UserDataPlugin',

            'cloudbaseinit.plugins.common.setuserpassword.'

            'SetUserPasswordPlugin',

            'cloudbaseinit.plugins.windows.winrmlistener.'

            'ConfigWinRMListenerPlugin',

            'cloudbaseinit.plugins.windows.winrmcertificateauth.'

            'ConfigWinRMCertificateAuthPlugin',

            'cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin',

        ],

        help='List of enabled plugin classes, '

        'to executed in the provided order'),

]

思路:将修改密码的模块放到配置文件中,让它开始就与设置主机名一起被执行

此时配置文件就会有三个模块需要提前加载运行

cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin

cloudbaseinit.plugins.common.mtu.MTUPlugin

cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin

测试结果:成功

效果:用户在第一次创建的时候,到界面时提示需要输入密码,而不是直接进入系统了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息