Foreman 企业级配置管理解决方案
构建运维体系
本文是构建运维体系的其中一个关键环节.
什么是 foreman
Foreman 是一个集成的 数据中心生命周期管理工具 ,提供了服务开通,配置管理以及报告功能,和 Puppet Dahboard 一样,Foreman也是一个 Ruby on Rails 程序. Foreman 和 Dashboard 不同的地方是在于,Foreman 更多的关注服务开通和管理数据中心的能力,例如和引导工具,PXE启动服务器,DHCP服务器及服务 器开通工具进行集成.
Foreman 机器统一管理平台:
- Foreman与puppet集成使用,作为puppet的前端使用
- Foreman可以作为外部节点分类器
- Foreman可以通过facter组件显示系统信息,并且可以收集puppet报告
- Foreman可以管理大规模节点,实现配置版本的回溯
1.foreman的架构
- foreman本身只是一个框架,通过smart-proxy代理各种应用程序完成各项功能。
- foreman通过代理DNS、DHCP、TFTP完成了kickstart、cobbler、jumpstart等各种自动化安装系统工具的图形统一管理窗口,实现的结果是只需要在foreman上定制各种模板(pxe、ks),不同的模板还可以嵌套各种片段(snippet)达到统一、简化的目的。完成之后,便可以添加节点,关联定义的各种模板生成各种的pxe和ks文件实现自动化安装。
- foreman通过代理puppet、puppet CA完成对puppet自动签名、puppet环境、class、变量、facter的管理。
- foreman通过ENC和静态组管理class和node之间的关联。
- foreman通过puppet plugin,可以在UI上完成对节点puppet命令的触发动作,触发的方法可以借助puppetkick(已经被遗弃)、mcollective(借助sudo)、puppetssh(借助sshkey)、salt、customrun等各种工具实现。
- foreman可以收集所有节点运行puppet���报告、执行情况。
- foreman还提供了各种搜索、报表等功能,能够更好的展现节点的运行状况。
- foreman除了管理裸机外还可以管理各种虚拟化软件,比如RHEV-M、EC2、VMWware和OpenStack等。
- foreman还可以和LDAP以及AD集成。
- foreman还提供了强大了用户、权限管理入口,可以建立多个用户、多个用户组、还可以对权限进行角色的定义等。不同的权限用户在UI上所看到的功能以及主机是不一样的。
- foreman还提供了所有在UI上操作的Audits(审计)功能,这样可以保障所有用户的操作都有据可查。
2.foreman发展线路图
安装Foreman
本文所有操作基于centos 6.2环境
系统要求
1.支持平台
以下系统支持installer.并经过官方测试
- Red Hat Enterprise Linux 6 or 7
- CentOS or Scientific Linux 6 or 7
- Fedora 19
- Debian 7 (Wheezy)
- Ubuntu 14.04 (Trusty)
- Ubuntu 12.04 (Precise)
2.puppet兼容性
Puppet version | Foreman installer | Smart proxy | Report/fact processors | External node classifier |
---|---|---|---|---|
0.25.x | Not supported | Untested | Untested | Supported * |
2.6.0 - 2.6.5 | Not supported | Untested | Untested | Supported * |
2.6.5+ | Not supported | Supported | Supported | Supported |
2.7.x | Supported | Supported | Supported | Supported |
3.0.x | Limited support | 1.1 or higher | Supported | Supported |
3.1.x - 3.4.x | 1.1 or higher | 1.1 or higher | Supported | Supported |
3.5.x | 1.4.3 or higher | 1.4.2 or higher | Supported | Supported |
3.6.0+ | 1.4.3 or higher | 1.5.1 or higher | Supported | Supported |
4.x | Not supported | Not supported | Untested | Untested |
3.Facter兼容性
- Foreman 兼容 Facter 1.x 版本
- Facter 2.x版本需要Foreman installer和Foreman 1.4.2以上版本才支持
3.防火墙配置
端口 | 协议 | Required For |
---|---|---|
53 | TCP,UDP | DNS Server |
67, 68 | UDP | DHCP Server |
69 | UDP * | TFTP Server |
80, 443 | TCP |
|
3000 | TCP | HTTP access to Foreman web UI - using standalone WEBrick service |
3306 | TCP | Separate MySQL database |
5910 - 5930 | TCP | VNC控制器 |
5432 | TCP | PostgreSQL数据库 |
8140 | TCP |
|
8443 | TCP | Smart Proxy, open only to Foreman |
Foreman Installer
Foreman installer 是Foreman简化的安装程序,包含了一整套foreman的puppet模块,通过rpm包和添加必要的配置的来完成foreman的安装。包含必要组件:Foreman web UI, Smart Proxy, Passenger,和可选组件 TFTP, DNS and DHCP servers.
官方强烈建议使用installer安装.而不是只用安装包.这样能大量减少手工配置.
默认配置:
- Apache HTTP with SSL (使用puppet的证书)
- Foreman running under mod_passenge
- Smart Proxy configured for Puppet, TFTP and SSL
- Puppet master running under mod_passenger
- Puppet agent configured
- TFTP server (under xinetd on Red Hat platforms)
可选配置:
- ISC DHCP server
- BIND DNS server
1.实验安装
all in one 模式安装, 指在让初学者了解更多foreman组件,达到快速应用.
安装foreman-installer,通过foreman-installer部署foreman支持两种方式:
foreman-installer -i
交互式安装foreman-installer
–help 说明-v展现详细的过程,–noop模拟不实际操作.参数安装
配置源及安装foreman-installer
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm yum -y install epel-release http://yum.theforeman.org/releases/1.7/el6/x86_64/foreman-release.rpm yum -y install foreman-installer
配置主机名
sed -i 's/HOSTNAME=.*$/HOSTNAME=gz-nb-cwh-poreman-192.168.137.2.yw.cwh.com/' /etc/sysconfig/network
hostname -f#foreman ip 192.168.137.2
hostname gz-nb-cwh-poreman-192.168.137.2.yw.cwh.com
echo "192.168.137.2 gz-nb-cwh-poreman-192.168.137.2.yw.cwh.com full" >>/etc/hosts
禁用selinux
setenforce 0
sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config
安装foreman-proxy,puppet,foreman,dns,fstp
foreman-installer \
--verbose \ --foreman-admin-username=admin \ --foreman-admin-password="Yi7YCjy2xEsU9YVc" \ --enable-foreman \ --enable-foreman-cli \ --enable-foreman-plugin-bootdisk \ --enable-foreman-plugin-setup \ --enable-foreman-proxy \ --enable-puppet \ --foreman-db-adapter=mysql2 \ --foreman-db-type=mysql \ --foreman-environment=production \ --foreman-version=present \ --foreman-proxy-dns=true \ --foreman-proxy-dns-forwarders=8.8.8.8 \ --foreman-proxy-dns-forwarders=223.6.6.6 \ --foreman-configure-epel-repo=false \ --foreman-proxy-dns-zone=yw.cwh.com
测试puppet
puppet agent -vt
安装puppet客户端(puppet ip 192.168.137.3)
echo '192.168.137.2 gz-nb-cwh-poreman-192.168.137.2.yw.cwh.com' >> /etc/hosts
hostname gz-nb-cwh-test.yw.cwh.com
sed -i 's/HOSTNAME=.*$/HOSTNAME=gz-nb-cwh-test.yw.cwh.com/' /etc/sysconfig/network
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
yum -y install puppet
puppet agent -vt
/etc/puppet/puppet.conf
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[agent]
classfile = $vardir/classes.txt
olocalconfig = $vardir/localconfig
server = gz-nb-cwh-poreman-192.168.137.2.yw.cwh.com
certname = gz-nb-cwh-test.yw.cwh.com
report = true
pluginsync = true
masterport = 8140
environment = production
listen = false
splay = false
splaylimit = 1800
runinterval = 1800
noop = false
configtimeout = 120
usecacheonfailure = true
测试puppet
puppet agent -vt
2.集成mcollective
mcollective是一个类似salt的基于消息队列的并行工作执行系统框架.它使用发布订阅中间件(Publish Subscribe Middleware)这样的现代化工具和通过目标数据(meta data)而不是主机名(hostnames)来实时发现网络资源这样的现代化理念。提供了一个可扩展的而且迅速的并行执行环境。服务器端是被管理端,客户端是分发远程命令的管理端
puppet与MCollective结合,首先MCollective可以用来调度puppet,解决puppet定时执行的问题,其次MCollective可以使用puppet的facts作为过滤器. 最后MCollective能够很好应对多数据中心的生产环境.
安装 rabbitmq-server
yum install rabbitmq-server -y
mkdir -p /var/run/rabbitmq
chmod 775 /var/run/rabbitmq/ -R
/etc/init.d/rabbitmq-server start
加载插件并设置监听61613端口
ln -s /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-env /usr/sbin/rabbitmq-env
ln -s /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-plugins /usr/sbin/rabbitmq-plugins
rabbitmq-plugins enable rabbitmq_stomp
rabbitmq-plugins enable rabbitmq_management
echo '[{rabbitmq_stomp, [{tcp_listeners, [{"0.0.0.0",61613}]}]}].' > /etc/rabbitmq/rabbitmq.config
/etc/init.d/rabbitmq-server restart
netstat -ntlp|grep beam
删除默认账号创建账号密码
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl delete_user guest
rabbitmqctl add_user cwh 123456
rabbitmqctl add_user admin 123456
rabbitmqctl add_user web_admin 123456
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" cwh ".*" ".*" ".*"
rabbitmqctl set_permissions -p "/" web_admin ".*" ".*" ".*"
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
rabbitmqctl list_users
rabbitmqctl list_permissions -p "/"
登陆http://192.168.137.2:15672/#/exchanges
添加mcollective_broadcast = topic,mcollective_directed = direct
mcollective安装客户端(ip:192.168.137.2)
yum install mcollective-* -y
/etc/mcollective/client.cfg
main_collective = mcollective
collectives = mcollective
libdir = /usr/libexec/mcollective
logger_type = console
#loglevel = debug
loglevel = warn
# Plugins
securityprovider = psk
plugin.psk = a36cd839414370e10fd281b8a38a4f41
direct_addressing = 1
plugin.rabbitmq.initial_reconnect_delay = 0.01
plugin.rabbitmq.max_reconnect_delay = 30.0
plugin.rabbitmq.use_exponential_back_off = true
plugin.rabbitmq.back_off_multiplier = 2
plugin.rabbitmq.max_reconnect_attempts = 0
plugin.rabbitmq.randomize = false
connector = rabbitmq
plugin.rabbitmq.vhost = /
plugin.rabbitmq.pool.size = 1
plugin.rabbitmq.pool.1.host = 192.168.137.2
plugin.rabbitmq.pool.1.port = 61613
plugin.rabbitmq.pool.1.user = cwh
plugin.rabbitmq.pool.1.password = 123456
plugin.rabbitmq.pool.1.ssl = false
# Facts
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
mcollective安装服务器端(ip:192.168.137.3)
yum install mcollective mcollective-* -y
/etc/mcollective/server.cfg
main_collective = mcollective
collectives = mcollective
libdir = /usr/libexec/mcollective
logfile = /var/log/puppet/mcollective.log
loglevel = debug
daemonize = 1
# --rabbitmq Plugins--
securityprovider = psk
plugin.psk = a36cd839414370e10fd281b8a38a4f41
direct_addressing = 1
connector = rabbitmq
plugin.rabbitmq.initial_reconnect_delay = 0.01
plugin.rabbitmq.max_reconnect_delay = 30.0
plugin.rabbitmq.use_exponential_back_off = true
plugin.rabbitmq.back_off_multiplier = 2
plugin.rabbitmq.max_reconnect_attempts = 0
plugin.rabbitmq.randomize = false
plugin.rabbitmq.timeout = -1
plugin.rabbitmq.pool.size = 1
plugin.rabbitmq.vhost = /
plugin.rabbitmq.pool.1.host = 192.168.137.2
plugin.rabbitmq.pool.1.port = 61613
plugin.rabbitmq.pool.1.user = cwh
plugin.rabbitmq.pool.1.password = 123456
plugin.rabbitmq.pool.1.ssl = false
# --Puppet provider specific options--
plugin.service.provider = puppet
plugin.service.puppet.hasstatus = true
plugin.service.puppet.hasrestart = true
plugin.puppet.command = puppet agent
plugin.puppet.splay = true
plugin.puppet.splaylimit = 30
plugin.puppet.config = /etc/puppet/puppet.conf
# --Facts--
#factsource = yaml
factsource = facter
plugin.yaml = /etc/mcollective/facts.yaml
启动服务端
/etc/init.d/mcollective start
chkconfig mcollective on
在客户端测试mco命令
mco ping -v
mco puppet -v runonce
配置foreman和foreman-proxy
管理"->"设置"->"puppet"-> puppetrun:true
vim /etc/foreman-proxy/settings.d/puppet.yml
:puppet_provider: customrun
:customrun_cmd: /usr/bin/mco
:customrun_args: puppet runonce -I
/etc/init.d/foreman-proxy restart
#最后在foreman页面上点击"运行puppet"进行测试#"
foreman 配置
foreman web界面
待补充
配置管理
1.环境
这里的环境对应Puppet environments, puppet的环境配置,主要的作用是用来做灰度发布.一般使用production和development区分生产环境和非生产环境.只有在非生产环境,经过充分测试的代码,才允许发布到生产环境中.foreman提供的环境管理功能如下:
- 从现有的puppet环境中导入配置.
配置
-环境
-从gz-nb-cwh-poreman-192.168.137.2.yw.cwh.com导入
.- 可以手动创建环境.
配置
-环境
-新建puppet环境
- 指定主机的应用环境
- 与主机组绑定相应的环境
默认配置下,导入四中环境common
,development
,example_env
,production
.
环境只能绑定主机和组,主机的优先级高于组
2.puppet类
foreman的puppet类, 相当于puppet的模块. 模块一般指实现单一功能配置. 比如配置mysql,dns,ntp. foreman对puppet模块有较高的要求,为了现可复用性. init.pp必须包含足够需要的变量定义.通过变量覆盖,实现配置的差异化.在传统的puppet部署中,要把一个模块应用到一个客户端,需要实例化这个类.然而在foreman中,只要把类绑定组或主机.就相当于实例化.
把master上/etc/puppet/modules/导入到foreman 配置
->puppet类
-> 从gz-nb-cwh-poreman-192.168.137.2.yw.cwh.com导入
单个模块里面,一般包含很多子类. 如果从页面导入, 会把子类一起导入.在foreman上,子类是可以不导入的, 为了轻便管理类.可以通过配置,过滤掉子类.
/usr/share/foreman/config/ignored_environments.yml
:filters:
- !ruby/regexp '/params$/' - !ruby/regexp '/base$/' - !ruby/regexp '/install$/' - !ruby/regexp '/service$/' - !ruby/regexp '/config$/'
puppet有大量 写好的而且很优秀的第三方模块.可以访问https://forge.puppetlabs.com 查看需要的模块.同时建议初学者阅读这些模块代码.
这里安装dns和ntp模块,然后导入到foreman中.导入的时候可以选择导入的环境.这一步是实现灰度发布的关键.
puppet module install ghoneycutt-dnsclient
puppet module install puppetlabs-ntp
puppet模块的规范,详细查看深入puppet
,这里不再深入
/etc/puppet/modules/ntp/
├── file
├── lib
│ └── puppet
│ └── parser
│ └── functions
│ └── ntp_dirname.rb
├── manifests
│ ├── init.pp
├── templates
│ └── ntp.conf.erb
发现dns和ntp的默认服务器ip地址 并不是我们需要的. 同时dns,ntp服务器的配置,也可能由于机房不同发生变化,很明显的一个例子就是腾讯的服务器,配置的是内网的dns服务器.这里需要用到foreman一个关键的功能代理参数
配置
->puppet类
->dnsclient
->智能代理参数
nameserver
-> 勾选覆盖,同时修改默认值,然后提交
["121.10.118.123","114.114.114.114","223.5.5.5","223.6.6.6","112.124.47.27","202.96.128.143","202.96.128.166","202.96.128.86"]
同理,修改ntp类的servers
默认值为
['time.nist.gov', '0.asia.pool.ntp.org','1.asia.pool.ntp.org','2.asia.pool.ntp.org','3.asia.pool.ntp.org','time-a.nist.gov', 'time.windows.com','ntp.fudan.edu.cn','61.129.42.44', '43.119.133.233']
3.配置组
配置组的作用是把几个类组合在一起. 以比较便捷的方式,让主机或主机组匹配多个类.
比如dns和ntp属于系统级别配置可以组合成centos_system 配置组,而mysql,php可以组合成centos_lnmp 配置组.
配置
->配置组
->新建配置组
name
-> centos_system
添加 dnsclient
,ntp
4.主机组
顾名思义,就是把有共同特征的主机组成一个组. 从puppet的角度上可以分为.测试组和线上生产环境组. 从项目差异化的角度看,可以按照项目的不同和地理位置的差异来区分.组是可以继承的,
组的规划相对复杂,需要考虑线上线下服务器的实际情况. 这里新建一个开发组
,并关联centos_system
配置组,用来测试puppet的ntp和dns模块.
配置
-> 主机组
->新建主机组
名称
-> 开发组
puppet类
->可用配置组
->centos_system
->add
主机组
的关注点:
网络
->域名
配置正确的域名是实现域名自动解析的关键.操作系统
主机组规定系统架构,主要应用于自动重装系统方面.主机组
->puppet CA
,主puppet服务器
这里是实现跨网络,分布式架构的关键puppet类
应用不同的puppet模块,实现配置的主要手段参数
实现机器配置差异化
5.主机
主机
->所有主机
主机
是管理的最小单元,所有的配置,优先级别最高的单元.
从规模化管理的角度,劲量避免编辑主机配置,造成的特例差异化.因为特例差异化,往往会提高维护成本.
6.变量
变量的优先级顺序,从低到高
- 全局变量
配置
->全局变量
对所有主机生效- 设置选项
管理
->设置
- 域名级别
架构
->域名
->参数
- 操作系统级别
主机
->操作系统
->参数
- 主机组级别
配置
->主机组
->参数
- 主机级别
所有主机
->编辑
->参数
看到这里,完成了上述步骤,试试在foreman web 上勾选gz-nb-cwh-test.yw.cwh.com
主机 点击运行puppet
puppet模块设计
首先,明确puppet的应用场景,一般分为一次性初始化配置和长久配置.
- 一次性初始化配置 常用于软件环境的构建 比如 foreman-installer
- 长久配置是实现系统环境和服务的统一.包含服务的自动恢复,减少人工处理
系统配置涉及众多方面的内容比如dns 日志切割 ssh配置等,是一项长期优化的过程.建议使用xmind思维导图,先规划好配置的具体项目,然后逐个跟进实现puppet模块.
为了实现跨平台和更好的兼容性,一些系统常见的配置可以使用第三方模块,而不用自己编写
第三方模块的使用原则
- 优先使用puppetlabs模块
- 不使用复杂度过高的第三方模块(包含细化管理的类)
- 不使用不兼容多个linux系统的第三方模块(实际情况需要兼容centos和suse)
- 避免修改第三方模块,方便日后升级
- 通过foreman的puppet类定义生产环境比较通用的默认参数
1.产品生命周期
- 建立git版本控制,master为production,建立developpment,testing分支
- 配置puppet agent和foreman环境,本地开发属于developpment,内网属于testing
这里,我使用github
作为仓库,首先访问https://github.com ,并创建仓库.
yum install git -y
cd /etc/puppet/environments/production
touch README.md
git init
git add README.md
git commit -m "first commit"
git config --global user.name "caiwenhao"
git config --global user.email "caiwenhao186@gmail.com"
git config --global credential.helper 'cache --timeout 3600'
git remote add origin https://github.com/caiwenhao/foreman.git
git push -u origin master
卸载掉之前安装的puppet modules
,重新安装到/etc/puppet/environments/production/modules
puppet module uninstall puppetlabs-ntp
puppet module uninstall ghoneycutt-dnsclient --ignore-changes
puppet module uninstall puppetlabs-stdlib
puppet module install -i /etc/puppet/environments/production/modules ghoneycutt-dnsclient
puppet module install -i /etc/puppet/environments/production/modules puppetlabs-ntp
ghoneycutt-dnsclient,puppetlabs-ntp是不用修改源码可用的模块,直接提交到master分支
git add manifests/ modules/
git commit -m "install modules ghoneycutt-dnsclient puppetlabs-ntp"
git push -u origin master
创建一个development
分支
cd /etc/puppet/environments/
git clone https://caiwenhao@github.com/caiwenhao/foreman.git development
cd development
git checkout -b development
git push origin development:development
git branch --set-upstream development origin/development
创建一个testing
分支
cd /etc/puppet/environments/
git clone https://caiwenhao@github.com/caiwenhao/foreman.git testing
git push origin testing:testing
git branch --set-upstream testing origin/testing
development
分支,添加saz-timezone
模块
cd /etc/puppet/environments/development/
puppet module install -i /etc/puppet/environments/development/modules saz-timezone
git add *
git commit -m "add modules saz-timezone"
git push
- 同步环境:foreman导入
development
,testing
,production
删掉多余的环境,配置
->puppet环境
->从xxx导入
- 同步puppet模块:
配置
->puppet类
->从xxx导入
- 修改默认参数:设置
timezone
类的覆盖参数Asia/Shanghai
- 添加到配置组:
配置
->配置组
->centos_system
->timezone
- 修改
开发机
�����为development
环境 - 修改主机环境属性:去掉
环境
配置,从主机组
继承 -
设置
->puppet
:update_environment_from_facts
= false
至此集合git分支管理的多环境配置,已经初步搞定. 后续通过入development
->testing
->production
的灰度发布模式,管理foreman.
把github仓库迁移至公司仓库
mkdir /data/git
git init
git clone --bare https://github.com/caiwenhao/foreman.git
cd foreman.git/
git remote add git-mingchao http://caiwenhao@git.mingchao.com/git/caiwenhao/foreman.git
git push git-mingchao master
git push --mirror git-mingchao
2.RubyMine
比较推荐使用IDE查看和编写puppet模块,工具提升效率. 这里推荐RubyMine
是目前比较好的支持puppet语法,支持通过sftp方式同步代码,支持git管理,支持远程命令. 一切都是为了开发更加本地化.
访问 http://www.jetbrains.com/ruby/ 下载 RubyMine 7
name:syn
===== LICENSE BEGIN =====
43740-12042010
00001nNPIOrzPwvJjS"Y8Nafc6RELU
nlmUzXskacwerrfwQvstArii0nTYef
ZX"QYSGu6yLR8pJECxe6TyjYB9V1OQ
===== LICENSE END =====
- 创建新项目
foreman
- 添加
foreman
sftp服务器tools
->deployment
->configuration
->+
本地代码 实时同步到远程/etc/puppet/environments/development/
mapping
选择跟目录
- 配置
ctrl+s
同步到远程tools
->deployment
->options
->ctrl+s
- 下载远程代码
tools
->deployment
->browse remote host
->右键
->download from here
构建rpm生态系统
1.创建第三方软件仓库
- 大部分rpm可以通过yumdownloader从第三方源下载
- 小部分定制版本的rpm则需要通过rpmbuild或fpm制作
配置第三方源,方便下载已有rpm包
wget http://www.atomicorp.com/installers/atomic
sh atomic
yum install rpmforge-release.x86_64
rpm -ivh http://ftp.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
安装createrepo工具并创建目录
yum install yum-fastestmirror createrepo -y
yum clean all
yum makecache
yum check-update mkdir /data/web/yum/centos/6.2/{i386,x86_64,noarch,updates,SRPMS} -p
cd /data/web/yum/centos/6.2/
ls|xargs -i createrepo {}
安装yumdownloader工具,从第三方源下载需要的rpm包
yum -y install yum-utils
cd /data/web/yum/centos/6.2/
yumdownloader --resolve curl bzip2 lsof
cd /data/web/yum/centos/6.2/
ls | xargs -i createrepo --update {}
/etc/yum.repos.d/mcyw.repo
[mcyw]
baseurl=http://192.168.137.2:8080/centos/6.5/x86_64
gpgcheck=0
enabled=1
name=mcyw centos
priority=1
/etc/httpd/conf.d/yum.conf
Listen :8080
<VirtualHost 192.168.137.2:8080>
DocumentRoot /data/web/yum/
ServerName xxx
ErrorLog /var/log/httpd/yum_error.log
CustomLog /var/log/httpd/yum_access.log combined
</VirtualHost>
2.制作rpm之rpmbuild
配置rpm编译环境
yum -y install gcc rpm-build pcre-devel
mkdir -p /data/rpm
cd /data/rpm
rpm --showrc|grep _topdir|awk -F/ '{print $2}'|xargs mkdir
echo %_topdir /data/rpm > ~/.rpmmacros
3.制作rpm之fpm
安装fpm
yum -y install ruby rubygems ruby-devel
gem sources -a http://ruby.taobao.org/
gem sources --remove http://rubygems.org/
gem install fpm
4.加速yum的几种方法
foreman问题集锦
常见错误
1.证书错误
实验环境的终极处理办法
#master:192.168.137.2 处理
puppet cert clean -all
/bin/mv /var/lib/puppet/ssl /data/backup/tmp/
mkdir -p /var/lib/puppet/ssl
/etc/init.d/foreman-proxy
/etc/init.d/puppetmaster start
puppet agent -vt
ruby /etc/puppet/node.rb gz-nb-cwh-poreman-192.168.137.2.yw.cwh.com
/etc/init.d/puppetmaster stop
/etc/init.d/foreman-proxy start
#agent:192.168.137.3 处理
find /var/lib/puppet/ssl -name gz-nb-cwh-test.yw.cwh.com.pem -delete
puppet agent -vt