【问题标题】:Configuring local laptop as puppet server and aws ec2 instance as puppet agent将本地笔记本电脑配置为 puppet 服务器,将 aws ec2 实例配置为 puppet 代理
【发布时间】:2020-12-04 15:29:04
【问题描述】:

我正在尝试配置 puppet 服务器和代理,使我的本地笔记本电脑使用 ubuntu 18.04 作为 puppet 服务器和 aws ec2 实例作为 puppet 代理。尝试这样做时,我面临与在 /etc/hosts 文件中添加主机名有关的问题,以及是否使用公共 IP 或私有 IP 地址以及如何进行最终配置并使其工作。

我已使用系统的公共 ip 和公共 dns 在 /etc/hosts 文件中指定,但是当尝试从代理运行 puppet 代理 --test 时,由于名称解析和连接暂时失败而出现错误到 https://puppet:8140 失败。我将它用于一个项目,我的设置需要保持这样。

【问题讨论】:

  • 在不知道您的笔记本电脑的网络配置(无论是在您的家庭路由器还是公司 LAN 后面)的情况下,很难发表评论。在任何一种情况下,来自外部的流量都无法到达您的笔记本电脑。尝试将您的笔记本电脑作为代理,将 EC2 实例作为服务器,如果您正确调整安全组,这应该可以工作。
  • 你可以查看我使用SSH隧道的答案,这样你就可以在笔记本电脑上运行puppet服务器,也可以避免配置任何安全组的麻烦:)

标签: amazon-web-services amazon-ec2 dns devops puppet


【解决方案1】:

连接是从 Puppet 代理启动到 PE 服务器的,因此代理将寻找您的笔记本电脑,即使您的主机文件中有笔记本电脑的详细信息,它也可能无法返回您的笔记本电脑因为您的笔记本电脑的 IP 可能是由您家中的路由器提供的。

为什么不在一个 ec2 实例上构建您的 Puppet master 并将其全部保存在同一个网络上,在您的笔记本电脑上编辑代码,推送到 github/gitlab,然后使用代码管理器将代码从那里部署到您的 PE 服务器。

或者,您也可以使用 VPN 将您的笔记本电脑直接连接到 AWS VPC,在这种情况下,它将显示为网络上的另一个节点,并且一切正常。

【讨论】:

  • Puppet 占用大量资源,如果 ec2 实例不够大,则通常无法在其上运行 puppet。 +1 VPN 解决方案。
【解决方案2】:

这里的问题是,puppet 服务器需要一个公共 IP 或一个与您的 ec2 实例在同一网络中的 IP,您的 puppet 代理可以连接到该 IP。但是,有一种不使用 VPN 的解决方案,尽管它不是永久性的。您可以将本地端口隧道连接到 ec2 实例

ssh -i <pemfile-location> -R 8140:localhost:8140 username@ec2_ip -> 这会将您的 ec2 实例上的端口 8140 连接到本地主机中的端口 8140。

然后在您的 ec2 实例中,您可以修改您的 /etc/hosts 文件以添加以下内容:

127.0.0.1    puppet 

现在在您的 ec2 实例上运行 puppet 代理,一切都应该按预期工作。另请注意,如果您关闭上面创建的 ssh 连接,则 ssh 隧道将停止工作。

如果您想让 ssh 隧道更可靠地打开,那么这个答案可能会有所帮助:https://superuser.com/questions/37738/how-to-reliably-keep-an-ssh-tunnel-open

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多