2013-01-22 14 views
12

Chúng tôi có thể sử dụng AWS::CloudFormation::Init để thực thi lệnh và tải tệp lên sau khi bắt đầu một phiên bản. Nhưng không ai biết nội bộ của hoạt động này (từ phía Amazon) là gì?AWS :: CloudFormation :: Init nó hoạt động như thế nào?

Khi chúng tôi chuyển mẫu vào, các tệp hoặc lệnh được truyền tới máy ảo ở điểm nào? Đây có phải là tính năng Xen (thông qua đường ống đặc biệt) hay qua mạng không?

"Resources": { 
    "MyInstance": { 
    "Type": "AWS::EC2::Instance", 
    "Metadata" : { 
     "AWS::CloudFormation::Init" : { 
     "config" : { 
      "packages" : { 
      : 
      }, 
      "sources" : { 
      : 
      }, 
      "commands" : { 
      : 
      }, 
      "files" : { 
      : 
      }, 
      "services" : { 
      : 
      }, 
      "users" : { 
      : 
      }, 
      "groups" : { 
      : 
      } 
     } 
     } 
    }, 
    "Properties": { 
     : 
    } 
    } 
} 

Trả lời

26

Tạo AWS :: CloudFormation :: Tắt tài nguyên dưới dạng siêu dữ liệu vào cá thể EC2 không làm cho cá thể làm bất cứ điều gì.

Ví dụ để thực sự thực hiện tất cả các thao tác được chỉ định trong tài nguyên đó, nó phải chạy công cụ dòng lệnh cfn-init. Trên Amazon EC2 AMIs lệnh đó đã được cài đặt tại /opt/aws/bin/cfn-init. Lệnh này có một số tùy chọn, bao gồm tên của tài nguyên AWS :: CloudFormation :: Init, tên của tài nguyên máy chủ EC2 và vùng bạn đang chạy. Bạn cũng cần cung cấp thông tin xác thực bảo mật AWS.

Nếu bạn muốn thao tác này chạy tự động khi tạo một cá thể mới (tôi chắc chắn), bạn sẽ phải sử dụng UserData của cá thể EC2 để tạo tập lệnh shell mà cá thể sẽ chạy khi khởi động đầu tiên và đặt lệnh cfn-init trong đó.

Tôi mới đây written about this specific issue trong blog của mình.

+1

Cảm ơn bạn, đây thực sự là thông tin hữu ích. Nhưng tôi vẫn muốn biết, làm thế nào nó hoạt động phía sau cfn-init (làm thế nào những lệnh và các tập tin truyền đến VM, thông qua mạng hoặc các thiết bị ảo khác?) – SoYoung

+1

cfn-init thực hiện một yêu cầu HTTP đến một địa chỉ Amazon để tìm nạp dữ liệu trong tài nguyên. Sau đó, nó thực hiện các hành động được chỉ định trong mẫu. Mẫu ở đâu? Một nơi nào đó trên máy chủ được kiểm soát của Amazon. –

+0

Vì vậy, tất cả những hành động đó đều dựa trên mạng? Nghe có vẻ hợp lý, nhưng vẫn có một số tình huống bất tiện. Nếu tôi không muốn mở SecurityGroup ra khỏi lý do bảo mật (chỉ có 22 cổng), nó sẽ là một vấn đề để triển khai ứng dụng của tôi một cách tự động. Thành thật mà nói, tôi hy vọng họ được truyền bằng đường ống đặc biệt hoặc thiết bị (trong xen). Bất kỳ cách nào, cảm ơn sự giúp đỡ của bạn! – SoYoung