Puppet 用于配置管理,软件更新等呢?

Bla*_*man 6 ubuntu puppet amazon-ec2

我了解 puppet 如何帮助设置服务器等,但是您会使用 puppet 来执行以下操作:

apt-get update && apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

我觉得答案是否定的,如果是这样的话,你会建议什么样的自动化流程来完成这些任务?

所以说我正在设置一个新实例(代理)来连接到 puppet,我怎么能把我想在服务器上运行的多个命令包装在一起,以便在连接到 puppet master 之前准备它?我希望我可以在一个文件中写出所有命令,然后以某种方式运行这个文件。

对于这样的事情:

  1. apt-get 更新 && apt-get 升级
  2. 安装 ruby​​,其他库
  3. 基本的服务器锁定等。

Dan*_*ral 6

好吧,特别是对于 APT,您可以配置许多日常作业,例如更新。只需查看/etc/cron.daily/apt您可以配置的变量列表,并查看手册页apt.conf了解如何配置。您最感兴趣的是这些:

#  APT::Periodic::Update-Package-Lists "0";
#  - Do "apt-get update" automatically every n-days (0=disable)
#    
#  APT::Periodic::Download-Upgradeable-Packages "0";
#  - Do "apt-get upgrade --download-only" every n-days (0=disable)
#
#  APT::Periodic::Download-Upgradeable-Packages-Debdelta "1";
#  - Use debdelta-upgrade to download updates if available (0=disable)
#
#  APT::Periodic::Unattended-Upgrade "0";
#  - Run the "unattended-upgrade" security upgrade script 
#    every n-days (0=disabled)
#    Requires the package "unattended-upgrades" and will write
#    a log in /var/log/unattended-upgrades
Run Code Online (Sandbox Code Playgroud)

至于升级系统,请使用软件包unattended-upgrades

说了这么多,我更喜欢使用 Puppet 来控制哪些包必须保留在ensure => latest, 或ensure => version,以及控制各种源列表和包的引脚编号。

而且,我想,人们可以使用这样的配置:

cron { 'upgrade': command => 'apt-get update && apt-get upgrade' }
Run Code Online (Sandbox Code Playgroud)

现在,你提到调用傀儡代理之前做一些事情。你的意思是在第一次运行 puppet agent 之前?如果是这样,那么Foreman 之类的解决方案可能会为您解决问题。

在这里,我通过 Ganeti 管理我的虚拟主机,我们通过 Ganeti 的 instance-debootstrap 安装了 puppet。我们还有一个小脚本,用于在旧服务器上安装 puppet。

最后,除非已经安装了自动化解决方案,否则不可能使用自动化解决方案在现有服务器上安装 Puppet。我们自己的偏好是先安装 puppet,然后通过它分发其他任何东西。