2016-05-08 68 views
1

其實,我已經設置了kubernetes集羣。我想基於使用python的模板動態地生成yaml配置文件。如何使用純python創建kubernetes yaml文件

template.yaml

apiVersion: v1 
kind: pod 
metadata: 
    name: $name 
spec: 
    replicas: $replicas 
    template: 
    metadata: 
     labels: 
     run: $name 
    spec: 
     containers: 
     - name: $name 
     image: $image 
     ports: 
     - containerPort: 80 

佔位符名,副本和影像是我的Python方法的輸入。 任何幫助將不勝感激。

+2

看看http://jinja.pocoo.org/docs/dev/ – eandersson

回答

2

如果你想辦法用純Python做到這一點,沒有圖書館,用一個多字符串和格式這裏是:

def writeConfig(**kwargs): 
    template = """ 
    apiVersion: v1 
    kind: pod 
    metadata: 
     name: {name} 
    spec: 
     replicas: {replicas} 
     template: 
     metadata: 
      labels: 
      run: {name} 
     spec: 
      containers: 
      - name: {name} 
      image: {image} 
      ports: 
      - containerPort: 80""" 

    with open('somefile.yaml', 'w') as yfile: 
     yfile.write(template.format(**kwargs)) 

# usage: 
writeConfig(name="someName", image="myImg", replicas="many") 
+0

嗨菲利普,我試圖用你的方法,但我得到這個錯誤:TypeError:create_app()有一個意想不到的關鍵字參數'name' – DiStephane

+0

我的不好,錯過了一個asterix。 –

+0

仍然無法正常工作。我得到了同樣的錯誤:yfile.write(template.format(kwargs)) KeyError:'name' – DiStephane

1

如果你只想使用模板,純Python,如果你的變量工作已經被檢查(安全),你可以使用字符串format method

這裏有一個例子:

# load your template from somewhere 
template = """apiVersion: v1 
kind: pod 
metadata: 
    name: {name} 
spec: 
    replicas: {replicas} 
    template: 
    metadata: 
     labels: 
     run: {name} 
    spec: 
     containers: 
     - name: {name} 
     image: {image} 
     ports: 
     - containerPort: 80 
""" 
# insert your values 
specific_yaml = template.format(name="test_name", image="test.img", replicas="False") 
print(specific_yaml)