IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

puppet手册之建立软件安装源

MySQLOPS 数据库与运维自动化技术分享 2012-02-01 17:29:32 累计浏览 2,668 次
本机暂存
ex4 alt2">require => Package["apache2-mpm-worker"],
notify => Service["apache2"],
}
file { "/etc/apache2/sites-enabled/gemrepo":
ensure => symlink,
target => "/etc/apache2/sites-available/gemrepo",
require => File["/etc/apache2/sites-available/gemrepo"],
notify => Service["apache2"],
}
file { "/var/gemrepo":
ensure => directory,
}
}

2.创建/etc/puppet/modules/repo/files/gemrepo.conf 文件,内容如下:

1
2
3
4
5
6
7
8
9
10
<VirtualHost *:80>
ServerAdmin john@bitfieldconsulting.com
ServerName gems.bitfieldconsulting.com
ErrorLog logs/gems.bitfieldconsulting.com-error_log
CustomLog logs/gems.bitfieldconsulting.com-access_log common
Alias / /var/gemrepo/
<Location />
Options Indexes
</Location>
</VirtualHost>

3.添加下面代码到你的节点:

1
2
3
node cookbook {
include repo::gem-server
}

4.运行Puppet:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# puppet agent --test
info: Retrieving plugin
info: Caching catalog for cookbook.bitfieldconsulting.com
info: Applying configuration version '1304949279'
notice: /Stage[main]/Repo::Gem-server/File[/etc/apache2/sites-
available/gemrepo]/ensure: defined content as '{md5}ae1fd948098f14
503de02441d02a825d'
info: /Stage[main]/Repo::Gem-server/File[/etc/apache2/sites-
available/gemrepo]: Scheduling refresh of Service[apache2]
notice: /Stage[main]/Repo::Gem-server/File[/etc/apache2/sites-
enabled/gemrepo]/ensure: created
info: /Stage[main]/Repo::Gem-server/File[/etc/apache2/sites-
enabled/gemrepo]: Scheduling refresh of Service[apache2]
notice: /Stage[main]/Apache/Service[apache2]: Triggered 'refresh'from 2 events
notice: /Stage[main]/Repo::Gem-server/File[/var/gemrepo]/ensure:created
notice: Finished catalog run in 6.52 seconds

它是如何工作的….
极其像APT 源,并遵循相同的原则,我们定义了一个gem仓库的目录,并定义了一个虚拟
主机,确保它能响应gems.bitfieldconsulting.com请求.

还有更多…
同样的,你如果把某些东西放到gem仓库也是非常有用的,下面会演示如何去做,
以及如何配置节点能访问gem 仓库.

添加gems

增加一个新的gems到你的仓库非常简单.把gem 放到 /var/gemrepo/gems ,并在
/var/gemrepo目录运行gem generate_index命令.

1
# gem generate_index

使用gem 仓库

和APT 仓库一样,确保节点知道gems 源主机的主机名bitfieldconsulting.com,
,它通常使用Puppet来部署主机条目,或者配置DNS.
然后,你可以在Puppet指定一个软件包,如下所示:

1
2
3
4
package { "json":
provider => "gem",
}

顺便说一句,由于在天朝,rubygems.org无法正常使用,你懂的,需要拨vpn才可以,推荐大家使用

taobao的镜像作为源.地址为:http://ruby.taobao.org/


[总结]

puppet cookbook系列未完待续,下一小节,就介绍最后两小节的,在puppet中如何使用源文件

来自动构建软件包,以及在puppet中如何比较软件包的版本,因为我们在运维工作中,经常

会遇到软件包要统一版本管理,我们可以在puppet使用versioncmp来比较app版本,进而

让我们明确是否需要更新app版本.详情,期待下文.

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Git log diff config高级进阶 (累计阅读 24,844)
  2. nginx的配置文件 (累计阅读 9,884)
  3. Zookeeper研究和应用 (累计阅读 9,484)
  4. 使用Apache 和Passenger来运行puppetmaster (累计阅读 8,317)
  5. 如何让ssh登录更加安全 (累计阅读 5,713)
  6. 共享会话的ssh连接配置 (累计阅读 4,819)
  7. 自动化运维之企业实际案例分析 (累计阅读 4,725)
  8. 调整 QQ for Linux 的小技巧 (累计阅读 4,481)
  9. puppet使用rsync来同步文件教程 (累计阅读 4,214)
  10. 有关 SVN、Cygwin 和 Notepad++ (累计阅读 4,058)