2016-05-08 12 views
1

実際には、kubernetesクラスタを設定しています。私はpythonを使用してテンプレートに基づいてyaml configファイルを動的に生成したい。純粋な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を使用してそれを行うための方法をしたい場合は、ここで1は複数行の文字列と形式を使用します:

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

私の悪い、欠場している1つのアスタリスクです。 –

+0

まだ動作しません。私は同じエラーが発生しました:yfile.write(template.format(kwargs)) KeyError: '名前' – 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) 
関連する問題