linux - 使用 Puppet 管理 shell 命令

标签 linux ubuntu deployment puppet vagrant

例如让我们尝试让 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/

相关文章:

ruby - 简化的 Ruby 代码部署

python - 使用 git 部署

linux - Fedora 中的 OpenSceneGraph

linux 内核参数 'rootwait' 被忽略

php - 我正在经历一个 php 后台进程问题

apache - htaccess 和 htpasswd 问题

linux - 对于以点开头的不存在的命令,Bash 不会打印任何错误消息

java - 在Ubuntu 12.04上安装Hadoop 2.6.0

python - 在 Ubuntu 上使用 Flask 运行 uwsgi 时出错

reactjs - 使用代理时,React 应用程序正在不同位置查找静态文件