2013-05-10 75 views
4

我使用托盤獲取ec2節點列表。我想獲得這些的DNS名稱。我發現在jcloud中有一個dnsName方法,但是我發現無法訪問它以便在clojure中使用托盤。這可能嗎?通過托盤獲取ec2 dns名稱

詳細

我試圖進行修改風暴部署項目,DNS名稱來工作,以便安全組正常工作。具體來說,我想寫這樣的功能在代碼中使用:

(defn zookeeper-dns-names [compute name] 
    (let [running-nodes (filter running? 
    (map (partial jclouds-node->node compute) (nodes-in-group compute (str "zookeeper-" name))))] 
    (map dns-name running-nodes))) 
+0

托盤0.8或0.7? – 2013-05-10 19:44:49

+0

0.7,雖然看文檔似乎沒有支持這個0.8 – 2013-05-12 18:20:40

+1

它只是沒有在文檔尚未。我的答案在0.8(我沒有在0.7中測試過)運行,0.8測試版肯定可以用於日常使用。 – 2013-05-12 20:04:41

回答

1

我在我們的托盤部署其通過公共IP導出DNS名稱中使用這樣的:

(defn get-aws-name [] 
    (let [ip (-> (target-node) bean :publicAddresses first)] 
    (str "ec2-" (apply str (replace {\. \-} ip)) ".compute-1.amazonaws.com"))) 

私有IP也通過安全組工作:

(defn ips-in-group [group-name public-or-private] 
    "Sequence of the first public IP from each node in the group" 
    (->> (nodes-in-group group-name) 
     (map bean) 
     (map public-or-private) 
     (map first)) 

(defn public-ips-in-group 
    "Sequence of the first public IP from each node in the group" 
    [group-name] 
    (ips-in-group group-name :publicAddresses)) 

(defn private-ips-in-group 
    "Sequence of the first public IP from each node in the group" 
    [group-name] 
    (ips-in-group group-name :privateAddresses)) 
+0

謝謝。我最終用私人ips方法解決了這個問題。 – 2013-05-12 18:22:39