2013-05-10 4 views
4

팔레트를 사용하여 ec2 노드 목록을 반환합니다. 나는 이들의 DNS 이름을 얻고 싶다. jclouds에는 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? –

+0

0.7이지만, 문서를 살펴보면 0.8 –

+1

에서 지원하지 않는 것 같습니다. 아직 문서에 없습니다. 내 대답은 0.8 (나는 0.7에서 그것을 테스트하지 않은)에서 실행 0.8 베타 확실히 매일 사용을위한 준비가되어 있습니다. 덕분에 –

답변

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 메서드를 사용하여이 문제를 해결했습니다. –

관련 문제