Ubuntu

如何獲取 Puppet 生成的配置以在我的 CloudFormation 堆棧中包含其他 ec2 實例的內部主機名?

  • September 26, 2014

我有一個由 AWS CloudFormation 生成的堆棧,其中包括一個 EC2 實例(執行 Ubuntu 14.04)和一個 RDS(數據庫)實例。它們都在一個 VPC 中,其中包括一個 puppet master(不作為雲形成堆棧的一部分):

----------------- VPC --------------------
+-----+       +-----+    +---------------+
| EC2 | <---> | RDS |    | Puppet master |
+-----+       +-----+    +---------------+

我想木偶化 EC2 節點,為 Web 伺服器和應用程序編寫一個配置,包括數據庫連接資訊,其中一部分是 RDS 實例的內部主機名。

問題是如果 puppetmaster 需要知道 RDS 節點的內部主機名,我如何才能讓 puppetmaster 為應用程序配置編譯模板。

我對這些技術中的大多數都是新手,尤其是 CloudFormation 和 Puppet。到目前為止,我已經想到了一些解決方案,但想要一些指導,並想知道我是否遺漏了什麼。

  • 使用 CloudFormation 模板中的 UserData 使其可用於 EC2 實例,以便它可以將其添加到 EC2 puppet 代理上的 Facter。這似乎是錯誤的,因為 EC2 節點正在向 puppet 報告另一台機器。
  • 使用 puppet master 上的 EC2 API 檢查 VPC 中的 RDS 節點並找到正確的節點(也許通過標籤?)但我不確定如何讓 Puppet 呼叫 EC2 API 並將其中的值插入到模板

如果您可以創建一個腳本(在 Puppet Master 上)來列印名稱(可能通過呼叫 AWS CLI),您可以使用generate 函式在您的 Puppet 清單和模板中使用該名稱。

您可以將此呼叫添加到您的site.pp文件中。

$rds_internal_name = generate('/usr/local/sbin/get-rds-internal-name')

引用自:https://serverfault.com/questions/630885