2017-01-10 4 views
0

私は各インスタンスに対して以下のYAML構成を持っています。部分的なYAMLを辞書にロードする

prod: 
    login: A 
    var1: VP1 
    var2: VP2 
QA: 
    login: B 
    var1: QP1 
    var2: QP2 

は、私は私の現在の環境がQAである場合は、辞書に

  • のみQAブロックをロードします。
  • 私の現在の環境が魅力的であれば、Prodブロックをdictにブロックします。

YAMLブロックを条件付きで条件付きでロードするにはどうすればよいですか?

下流のコードは、私は、これらの値は、環境に基づいてkshのスクリプトで解決することにしたい。この

#bin/ksh 
login = {login} 
var1 = {var1} 
var2 = {var2} 

のようなものです。

+3

あなたはYAML全体を摂取し、次に望むものだけを取る必要があります – inspectorG4dget

+0

詳細を追加しました。すべての読み込みで競合が発生する – pmv

+1

'{'prod':{'login':" A "、" var1 ":" VP1 "、" var2 ":" VP2 "}、" QA ":{'ログイン':" B "、" var1 ":" QP1 "、" var2 ":" QP2 "}}'あなたは簡単に 'prod'や' QA'のためにそのdictを照会し、衝突のないデータを得ることができます – inspectorG4dget

答えて

1

ファイル全体を読み込み、必要なキーの下にあるものだけをつかみます。

with open('data.yml') as f: 
    d = yaml.load(f.read()) 
    print yaml.dump(d['QA']) 

何かがそうです。

0
import yaml 
import socket 

qa="172.27.139.94" 
prod="172.27.139.95" 
ip = socket.gethostbyname(socket.gethostname()) 
if ip == qa: 
    yml_dic = yaml.load(open('yamlconfig.yml', 'r'))["QA"] 
elif ip == prod: 
    yml_dic = yaml.load(open('yamlconfig.yml', 'r'))["prod"] 

print yml_dic 
+0

あなたの提案された解決策が実際に何をしているかについての少なくともいくつかの説明を与えるのは伝統的です。 –

+0

ステップ1:当社の環境からIPアドレスを取得する –

+0

ステップ2:QAと一致するIPアドレスがQAセクションのデータを読み取る場合 –

関連する問題