我知道木偶如何帮助设置服务器等,但你会使用木偶的东西:
apt-get update && apt-get upgrade
我感觉答案是否定的,如果是这样的话,你会build议做什么样的自动化过程来完成这些任务?
所以说我正在build立一个新的实例(代理)连接到木偶,我怎么能包装在服务器上运行的多个命令只是为了准备连接到木偶主机之前呢? 我希望我可以只写出一个文件中的所有命令,然后以某种方式运行此文件。
对于像:
那么,对于APT尤其是,您可以configuration许多日常工作,如更新。 只要看一下/etc/cron.daily/apt就可以configuration一个variables列表,并查看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
至于升级系统,请使用软件包unattended-upgrades 。
说了这么多,我更喜欢使用Puppet来控制必须ensure => latest哪些软件包ensure => latest ensure => version ,或ensure => version ,以及控制各种源列表和软件包的引脚编号。
而且,我想, 可以使用这样的configuration:
cron { 'upgrade': command => 'apt-get update && apt-get upgrade' }
现在,你提到打电话给木偶代理之前做的东西。 你是指在第一次运行木偶代理之前? 如果是这样,那么像Foreman这样的解决scheme可能会为你做诡计。
在这里,我通过Ganetipipe理自己的虚拟主机,我们通过Ganeti的实例debootstrap安装了木偶。 我们也有一个小脚本,用于在较旧的服务器上安装puppet。
最后,除非已经安装了自动化解决scheme,否则不可能使用自动化解决scheme在现有服务器上安装Puppet。 我们自己的select是首先安装木偶,然后通过它分发任何东西。
我一直使用cron-apt进行无人值守的自动更新。 configuration有点笨重,但一旦安装就可以正常工作。 如果您将其与sSMTP配对,您可以通过电子邮件获得自动更新和/或通知。
在你的情况下,你可以使用Puppet来控制cron-apt,sSMTP和crontabconfiguration文件。
这是我的标准设置…适当调整。
Puppet使用一种声明性语言,在这种语言中,你可以根据你所需要的configuration来指定事物的方式 ,而且你可以使用这个方法来达到傀儡理解的目的。 因此,它不是非常适合时常运行任意命令。
要求puppet确保安装包是很容易的,但对于定期更新,我build议你有puppet在root的cron中添加一行来定期执行$ apt-get update && apt-get upgrade 。 如果你想精确地控制哪些包被应用,那么你可以考虑运行你自己的apt库。