美文网首页
获取OpenStack Mitaka认证的两种方式

获取OpenStack Mitaka认证的两种方式

作者: Alecyrus | 来源:发表于2016-09-26 14:21 被阅读403次

    背景

    随着OpenStack不断发展, 目前的MITAKA版本的keystone已经弃用了第二版本的身份认证API, 而且我在M版本下使用原来版本的keystoneclient时, 发现提示如下

    DeprecationWarning: keystoneclient auth plugins are deprecated as of the 2.1.0 release in favor of keystoneauth1 plugins. They will be removed in future releases.

    因此, 在Mitaka版本中使用keystoneclient已不可取, 而且第三版的身份认证API和第二代有比较大的不同.


    Keystone第三版身份认证相关参数

    只涉及到

    project_domain: 项目域
    project_name:项目(租户)
    user_domain_name:用户域
    username:用户名
    password:密码
    auth_url:认证地址, "http://controller:5000/v3/"
    region: 区域, Regions之间完全隔离,但它们共享同一个Keystone和Dashboard服务
    auth_plugin: 认证方式, "password"
    其中, 高亮部分为必须参数,其余为可选参数


    在代码中直接指定相关参数

    def create_connection(project_domain_name, user_domain_name, auth_url, region, project_name, username, password):
        prof = profile.Profile()
        prof.set_region(profile.Profile.ALL, region)
    
        return connection.Connection(
            profile=prof,
            user_agent='Autumn',
            project_domain_name=project_domain_name,
            user_domain_name=user_domain_name,
            auth_url=auth_url,
            project_name=project_name,
            username=username,
            password=password
        )
    
    def list_images(conn):
        print("List Images:")
    
        for image in conn.image.images():
            print(image)
    
    if __name__ == '__main__':
    
        auth_args = {
            'project_domain_name':'default',
            'user_domain_name':'default',
            'auth_url': 'http://127.0.0.1:5000/v3',
            'region':'RegionOne',
            'project_name': 'admin',
            'username': 'admin',
            'password': 'password',
        }
        conn = create_connection(**auth_args)
        list_images(conn)
    

    从文件中给定相关参数

    新建cloud.yaml, 并加载cloud.ymal

    $ export OS_CLIENT_CONFIG_FILE=/yourPath/clouds.yaml
    
    cloud.yaml
    
    clouds:
      test_cloud:
        region_name: RegionOne
        auth:
          auth_url: http://127.0.0.1:5000/v3/
          username: admin
          password: password
          project_name: admin
          domain_name: default
    
    TEST_CLOUD = os.getenv('OS_TEST_CLOUD', 'test_cloud')
    class Opts(object):
        def __init__(self, cloud_name='test_cloud', debug=False):
            self.cloud = cloud_name
            self.debug = debug
            self.identity_api_version = '3'
    opts = Opts(cloud_name=TEST_CLOUD)
    occ = os_client_config.OpenStackConfig()
    cloud = occ.get_one_cloud(opts.cloud, argparse=opts)
    
    def list_images(conn):
        print("List Images:")
        for image in conn.image.images():
            print(image)
            
        list_images(connection.from_config(cloud_config=cloud, options=opts))
    

    相关文章

      网友评论

          本文标题:获取OpenStack Mitaka认证的两种方式

          本文链接:https://www.haomeiwen.com/subject/rmsqyttx.html