IT技术博客大学习 共学习 共进步

puppet手册之建立软件安装源

MySQLOPS 数据库与运维自动化技术分享 2012-02-01 17:29:32 浏览 2,562 次
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. 使用Apache 和Passenger来运行puppetmaster (阅读 8,163)
  2. 自动化运维之企业实际案例分析 (阅读 4,621)
  3. puppet使用rsync来同步文件教程 (阅读 4,080)
  4. DevOps之Puppet (阅读 3,821)
  5. 如何有效运行puppet cron任务以及如何触发运行puppet (阅读 3,761)
  6. puppet vagrant 管理VirtualBox 虚拟机 (阅读 3,441)
  7. puppet运维之使用自定义函数 (阅读 3,300)
  8. puppet extlookup 和puppet hiera使用 (阅读 3,041)
  9. puppetmaster集群解决方案之puppet客户端共享一张证书 (阅读 2,780)
  10. puppet 手册检查puppet配置文件和使用puppet tags (阅读 2,481)