用于配置Kazoo及其组件的便捷库
项目描述
# kzconfig
通用的Kazoo配置封装和助手。封装以下库
* python-couchdb
* kazoo-sdk
* pyrkube
* dnsimple
## 自定义
继承`kzconfig.Context`。在这个例子中,我选择展示一个用户如何除了使用不同的DNS提供商外,使用默认约定。
```python
from kzconfig import Context, meta
class MyContext(Context)
_configs = ('environment',)
_secrets = ('couchdb', 'rabbitmq', 'master-account', 'dns.coredns')
def __init__(self, domain='example.org')
self.domain = domain
@meta.lazy_property
def dns(self)
return MyDNS(self, self.domain)
...
import CoreDNS
class MyDNS
def __init__(self, context, domain)
self.context = context
self.domain = domain
creds = self.context.secrets['dns.coredns']
self.api = CoreDNS(
username=creds['email'],
password=creds['password']
)
```
快速子类化示例,没有DNS实现。
```python
from kzconfig import Context, meta
class MyContext(Context)
_configs = ('environment',)
_secrets = ('couchdb', 'rabbitmq', 'master-account', 'dns.coredns')
_domain = 'example.org'
def __init__(self, domain='example.org')
self.domain = domain
def dns(self)
raise NotImplemented
```
## 使用
### 初始化新的上下文
```python
from kzconfig import Context, meta
context = Context()
```
### Kubernetes
```python
# 获取名为rabbitmq的pod
rabbit_pod = context.kube.api.get('pod', 'rabbitmq')
# 默认为默认命名空间
all_pods = context.kube.api.get('pod')
所有 kube-system pods
all_system_pods = context.kube.api.get('pod', namespace='kube-system')
获取第一个标签为 app=couchdb 的 pod
first_couchdb_pod = context.kube.api.get_first('pod', selector=dict(app='couchdb'))
```
更多请参阅我的 pyrkube 库...
### CouchDB
```python
获取系统配置数据库
db = context.couchdb['system_config']
doc = dict(_id='hello')
将新文档保存到其中
db.save(doc)
```
### Kazoo
```python
获取 Kazoo 中的主账户对象
master_acct = context.kazoo.get_account(context.secrets['master-account'])
```
### DNS
```python
context.dns.add('A', '192.168.0.1')
```
### Sup
```python
context.sup.kz_nodes.status()
```
## CLI 命令
### `sup`
#### 用法
```
用法:sup [OPTIONS] 模块 函数 [ARGS]...
选项
--help 显示此信息并退出。
```
### `install-kubectl`
#### 用法
```
用法:install-kubectl [OPTIONS]
选项
--help 显示此信息并退出。
```
安装 kubectl 版本 == KUBECTL_VERSION || 1.7.8
如果您使用环境变量覆盖版本,请确保也覆盖 KUBECTL_SHA256。
#### 示例
```
sup kz_nodes status
```
通用的Kazoo配置封装和助手。封装以下库
* python-couchdb
* kazoo-sdk
* pyrkube
* dnsimple
## 自定义
继承`kzconfig.Context`。在这个例子中,我选择展示一个用户如何除了使用不同的DNS提供商外,使用默认约定。
```python
from kzconfig import Context, meta
class MyContext(Context)
_configs = ('environment',)
_secrets = ('couchdb', 'rabbitmq', 'master-account', 'dns.coredns')
def __init__(self, domain='example.org')
self.domain = domain
@meta.lazy_property
def dns(self)
return MyDNS(self, self.domain)
...
import CoreDNS
class MyDNS
def __init__(self, context, domain)
self.context = context
self.domain = domain
creds = self.context.secrets['dns.coredns']
self.api = CoreDNS(
username=creds['email'],
password=creds['password']
)
```
快速子类化示例,没有DNS实现。
```python
from kzconfig import Context, meta
class MyContext(Context)
_configs = ('environment',)
_secrets = ('couchdb', 'rabbitmq', 'master-account', 'dns.coredns')
_domain = 'example.org'
def __init__(self, domain='example.org')
self.domain = domain
def dns(self)
raise NotImplemented
```
## 使用
### 初始化新的上下文
```python
from kzconfig import Context, meta
context = Context()
```
### Kubernetes
```python
# 获取名为rabbitmq的pod
rabbit_pod = context.kube.api.get('pod', 'rabbitmq')
# 默认为默认命名空间
all_pods = context.kube.api.get('pod')
所有 kube-system pods
all_system_pods = context.kube.api.get('pod', namespace='kube-system')
获取第一个标签为 app=couchdb 的 pod
first_couchdb_pod = context.kube.api.get_first('pod', selector=dict(app='couchdb'))
```
更多请参阅我的 pyrkube 库...
### CouchDB
```python
获取系统配置数据库
db = context.couchdb['system_config']
doc = dict(_id='hello')
将新文档保存到其中
db.save(doc)
```
### Kazoo
```python
获取 Kazoo 中的主账户对象
master_acct = context.kazoo.get_account(context.secrets['master-account'])
```
### DNS
```python
context.dns.add('A', '192.168.0.1')
```
### Sup
```python
context.sup.kz_nodes.status()
```
## CLI 命令
### `sup`
#### 用法
```
用法:sup [OPTIONS] 模块 函数 [ARGS]...
选项
--help 显示此信息并退出。
```
### `install-kubectl`
#### 用法
```
用法:install-kubectl [OPTIONS]
选项
--help 显示此信息并退出。
```
安装 kubectl 版本 == KUBECTL_VERSION || 1.7.8
如果您使用环境变量覆盖版本,请确保也覆盖 KUBECTL_SHA256。
#### 示例
```
sup kz_nodes status
```
项目详情
关闭
kzconfig-0.3.4.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8f3785948bde827869f0c9edc29e71c345acd5e8f30a915ec7a981df0354a603 |
|
MD5 | 3a9473deedfc2f1bc5458227130337ec |
|
BLAKE2b-256 | b855e42aa35344de70770559d2f8d2695994cb1aab52bdebfcb5933612bab846 |