设为首页 收藏本站
查看: 1055|回复: 0

[经验分享] OpenStack Keystone源码安装

[复制链接]

尚未签到

发表于 2015-4-11 16:50:19 | 显示全部楼层 |阅读模式
  一、准备环境,源码安装
  由于本次安装选择的Ubuntu Server 12.04,需要安装以下必需软件包:

apt-get install build-essential git python-dev python-setuptools python-pip libxml2-dev libxslt-dev
  keystone默认使用的是sqlite存储数据,现在为了需要改成MySQL数据库,所以需要安装MySQL:

apt-get install mysql-server mysql-client python-mysqldb
  设置好MySQL的root密码,建立keystone数据库:

mysql -u root -p
create database keystone;
grant all on keystone.* to 'keystone'@'%' identified by 'openstack';
quit
  获取keystone和keystoneclient源代码,分别安装它们的依赖项,并将它们安装到系统中:

git clone git://github.com/openstack/keystone.git
git clone git://github.com/openstack/python-keystoneclient.git keystone/client
pip install -r tools/pip-requires
python setup.py install
cd client/
pip install -r tools/pip-requires
python setup.py install
  

  二、安装后配置
  1、配置前提
  将源码目录的etc/下所有文件复制到/etc/keystone中,依次执行以下命令:

mkdir -p /etc/keystone
mv keystone.conf.sample keystone.conf
mv logging.conf.sample logging.conf
  
  2、修改keystone.conf文件
  将keystone.conf文件以下配置的注释去掉(即将句首‘#’去掉)即可。

[DEFAULT]
admin_token = openstack    #admin_token需要记住,后续安装其他项目还需要用到
bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
compute_port = 8774
policy_file = policy.json
policy_default_rule = admin_required

# === Logging Options ===
# Print debugging output
verbose = False

# Print more verbose output
# (includes plaintext request logging, potentially including passwords)
debug = False

log_config = /etc/keystone/logging.conf   #log_config的值改成你存放logging.conf的位置


[sql]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://keystone:openstack@192.168.0.114/keystone   #将connection的值改成MySQL的


# the timeout before idle sql connections are reaped
idle_timeout = 200

[identity]
driver = keystone.identity.backends.sql.Identity

[catalog]
# dynamic, sql-based backend (supports API/CLI-based management commands)
driver = keystone.catalog.backends.sql.Catalog  #在本次安装中catalog使用sql的,也可以使用模板来实现

[token]
# driver = keystone.token.backends.kvs.Token
driver = keystone.token.backends.sql.Token   #token改成sql实现,原来为kvs


# Amount of time a token should remain valid (in seconds)
expiration = 86400

[policy]
driver = keystone.policy.backends.sql.Policy

1)使用ssl配置如下:
[ssl]
enable = True
certfile = /etc/keystone/ssl/certs/keystone.pem
keyfile = /etc/keystone/ssl/private/keystonekey.pem
#ca_certs = /etc/keystone/ssl/certs/ca.pem
cert_required = True

[signing]
token_format = PKI
certfile = /etc/keystone/ssl/certs/signing_cert.pem
keyfile = /etc/keystone/ssl/private/signing_key.pem
#ca_certs = /etc/keystone/ssl/certs/ca.pem
key_size = 1024
valid_days = 3650
#ca_password = None


2)不用ssl如下:
[ssl]
enable = False
cert_required = False


[signing]
token_format = UUID       #必须改成UUID方式

[ldap]     #本次安装暂不使用
# url = ldap://localhost
  

  3、修改logging.conf配置
  logging.conf文件基本不用修改,本次安装仅是修改了keystone的log文件所在位置,如下:

[handler_file]
class=FileHandler
level=DEBUG
formatter=normal_with_name
args=('/var/log/keystone/keystone.log', 'a')

  

  4、生产环境
  1)配置ssl服务
  生产环境中一般都需要配置ssl安全访问,使用openssl生成pem文件(keystone的源码中提供了测试用的pem文件)过程如下:
  1)、生成RSA密钥的方法

openssl genrsa -des3 -out keystone.pem 2048
  这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成:

openssl genrsa -out  keystone.pem 2048
  建议用2048位密钥,少于此可能会不安全或很快将不安全。
2)、生成一个证书请求

openssl req -new -key  keystone.pem -out cert.csr
  这个命令将会生成一个证书请求,当然,用到了前面生成的密钥keystone.pem文件
这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。
如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书:

openssl req -new -x509 -key  keystone.pem -out   keystonekey.pem -days 1095
  这个命令将用上面生成的密钥 keystone.pem生成一个数字证书 keystonekey.pem
  

  2)配置ldap(未测试)
  

  5、安装后测试
  1)启动keystone

keystone-all -d &
  2)查看日志

tail -f /var/log/keystone/keystone.log
  3)实例
  创建租户:

keystone --os-endpoint http://127.0.0.1:35357/v2.0 --os-token openstack tenant-create --name test --description "Test Tenant" --enabled true
  +-------------+----------------------------------+
  |   Property  |              Value               |
  +-------------+----------------------------------+
  | description |           Test Tenant            |
  |   enabled   |               True               |
  |      id     | ce57e39988c640029f080c415193231e |
  |     name    |               test               |
  +-------------+----------------------------------+
  获取租户列表:

keystone --os-endpoint http://127.0.0.1:35357/v2.0 --os-token openstack tenant-list
  +----------------------------------+---------+---------+
  |                id                |   name  | enabled |
  +----------------------------------+---------+---------+
  | 29e1a1b5251a4cb78e3c73afd40c725d |  admin  |   True  |
  | 901d44a896a54cba88df1d92531640d2 |   demo  |   True  |
  | cbc4329de3f8421296507475ced04b15 | service |   True  |
  | ce57e39988c640029f080c415193231e |   test  |   True  |
  +----------------------------------+---------+---------+
  使用curl测试:

curl -d '{"auth": {"tenantName": "admin", "passwordCredentials":{"username": "admin", "password": "openstack"}}}' -H "Content-type: application/json" http://127.0.0.1:35357/v2.0/tokens | python -mjson.tool
  如果没问题,将返回一个json格式的结果,如下所示:

{
    "access": {
        "metadata": {
            "is_admin": 0,
            "roles": [
                "76154d4fcca84e369c3075c36fcca004"
            ]
        },
        "serviceCatalog": [
            {
                "endpoints": [
                    {
                       # ... ...
                    }
                ],
                "endpoints_links": [],
                "name": "nova",
                "type": "compute"
            },
            {
                "endpoints": [
                    {
                        # ... ...
                    }
                ],
                "endpoints_links": [],
                "name": "glance",
                "type": "image"
            },
            {
                "endpoints": [
                    {
                        # ... ...
                    }
                ],
                "endpoints_links": [],
                "name": "volume",
                "type": "volume"
            },
            {
                "endpoints": [
                    {
                       # ... ...
                    }
                ],
                "endpoints_links": [],
                "name": "ec2",
                "type": "ec2"
            },
            {
                "endpoints": [
                    {
                        # ... ...
                    }
                ],
                "endpoints_links": [],
                "name": "swift",
                "type": "object-store"
            },
            {
                "endpoints": [
                    {
                        # ... ...
                    }
                ],
                "endpoints_links": [],
                "name": "keystone",
                "type": "identity"
            }
        ],
        "token": {
            "expires": "2012-12-11T03:52:09Z",
            "id": "efcfabb3ab13466babb68a8b56487a24",
            "issued_at": "2012-12-10T03:52:09.689634",
            "tenant": {
                "description": "Admin Tenant.",
                "enabled": true,
                "id": "29e1a1b5251a4cb78e3c73afd40c725d",
                "name": "admin"
            }
        },
        "user": {
            "id": "4819c6cca1e5456d9b2a717446cfb228",
            "name": "admin",
            "roles": [
                {
                    "name": "admin"
                }
            ],
            "roles_links": [],
            "username": "admin"
        }
    }
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56096-1-1.html 上篇帖子: 学习OpenStack之 (2):Cinder LVM 配置 下篇帖子: openStack ceilometer API
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表