例如让我们尝试让 Puppet install the opengeo-suite .
做类似的事情
wget -qO- http://apt.opengeo.org/gpg.key | apt-key add -
echo "deb http://apt.opengeo.org/suite/v3/ubuntu lucid main" >> /etc/apt/sources.list
我们可以使用
exec {'getKey':
command => "wget -qO- http://apt.opengeo.org/gpg.key | apt-key add -",
}
exec {'addRepo':
command => "echo "deb http://apt.opengeo.org/suite/v3/ubuntu lucid main" >> /etc/apt/sources.list",
}
问题#1:如果我们再次运行 puppet 脚本,wget 和 echo 不会运行两次吗?我们将在 /etc/apt/sources.d
中得到重复的 repo。运行 package { "opengeo-suite": }
两次不会尝试安装包两次,它只是确保已安装。
问题 #2:执行 apt-get install opengeo-suite
时,有几个用户输入提示。使用 Package{"opengeo-suite":}
时,Puppet 会以某种方式知道要使用的默认输入,还是会崩溃?
最佳答案
首先,已经有 puppet 特有的方法可以做到这一点:
https://serverfault.com/questions/111766/adding-a-yum-repo-to-puppet-before-doing-anything-else
Q1:是的,一切都会一次又一次地运行。通常你必须保护你的 exec 说“只有当这个文件不存在时”,或者“检查网站并在不同时更新”或“强制文件包含这些内容”。
此外,通常您可以创建/etc/apt/sources.list.d/myrepo.conf,而不是附加到/etc/apt/sources.list。
Q2:Puppet 可能会挂起。您可以使用“apt-get install -y package”。但最好使用专为安装包而设计的 Puppet 资源来安装包。
关于linux - 使用 Puppet 管理 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16125641/