假设有个开头

nova.api.openstack.compute.servers.py中的create()函数写道虚拟机的adminPass来自一个名为password的变量。而这个变量是通过_get_server_admin_password函数产生的。

假设有个过程

看一下create函数:

password = self._get_server_admin_password(server_dict)

再看一下_get_server_admin_password函数:

    def _get_server_admin_password(self, server):
        \"\"\"Determine the admin password for a server on creation.\"\"\"
        try:
            password = server[\'adminPass\']
            self._validate_admin_password(password)
        except KeyError:
            password = utils.generate_password()
        except ValueError:
            raise exc.HTTPBadRequest(explanation=_(\"Invalid adminPass\"))

        return password

由此可见,_get_server_admin_password函数已经具备判断并选择自定义密码的能力,于是只要传入一个adminPassserver_dict里即可。

于是对create函数进行修改,修改后的样子:

        meta_dict = body[\'server\'].get(\'metadata\', None)
        if meta_dict:
            if meta_dict.get(\'password\', None):
                server_dict[\'adminPass\'] = meta_dict[\'password\']

            del server_dict[\'metadata\']
        password = self._get_server_admin_password(server_dict)

调用方法

nova boot ******* --meta password=mypass *****

另一个地址:
http://pages.turtleend.info/2015/03/17/openstack-use-custom-password-f…