CentOS6.9安装Foreman1.10+Puppet
安装puppet yum源:
yum -y install http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
安装EPEL与Foreman yum源:
yum -y install epel-release http://yum.theforeman.org/releases/1.10/el6/x86_64/foreman-release.rpm
安装foreman-installer
yum –y install foreman-installer
提示确实rubygem-mine-types包,原因是el6的EPEL yum源中把这个包给去掉了,el7的EPEL yum源中有,但是用不了(垃圾)。到https://apps.fedoraproject.org/packages/ 里找
下载fedora24的能用。
下载后安装
以后EPEL yum源上没有的包都从这个网站下载fedora24的(还有几个没有的包,万恶的EPEL源)
修改hostname,默认的localhost.localdomain不行
vi /etc/sysconfig/network
使用foreman-installer安装foreman
foreman-installer --verbose --foreman-admin-username=admin --foreman-admin-password="12345678" --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-tftp=false --foreman-configure-epel-repo=true --foreman-proxy-register-in-foreman=true
安装时间较长,半小时或更长。
安装完成后有如下报错
解决方法:
gem install sinatra
这个错误没找到原因,但不影响使用。
登录foreman
添加foreman-proxy
使用Puppet run推送,配置方法(有bug官网已经放弃puppet run)
在puppet客户端中设置vi /etc/puppet/puppet.conf
在[agent]下配置listen = true
重启puppet客户端 service puppet restart
用netstat –lntp查看系统是否在监听8139端口
如果没有监听8139端口查看puppet.conf配置文件中是否有port = 8140标注或删除掉,重启puppet服务后再用netstat –lntp查看。
修改vi /etc/sysconfig/puppet中
PUPPET_SERVER=你对应的puppetmaster主机名,并删除标注。
在/etc/puppet目录中创建或修改namespaceauth.conf文件,在文件中添加内容
[puppetrunner]
allow *
修改/etc/puppet/auth.conf
在最下方
path /
auth any
的上方(注意位置)
添加
#puppetrun
path /run
method save
allow *
重启puppet服务
service puppet restart
在puppetmaster的foreman右上角的管理->设置->puppet中修改puppetrun为true
修改puppetmaster服务器端
vi /etc/foreman-proxy/settings.d/puppet.yml
:puppet_provider: puppetrun
取消标注
重启foreman-proxy
service foreman-proxy restart
使用foreman主机中的“运行puppet”对puppet客户端进行推送。(这里有BUG只能推送两次,第三次就报错,需要重启客户端puppet服务后才能使用,两次后问题依旧)
日志在/var/log/messages中。
Foreman结合mcollective+rabbitMQ完成puppet push(推动作,强烈推荐,比puppetrun好用)。
在安装前,先安装好puppet与epel yum源
安装rubbitMQ
yum install rabbitmq-server erlang
service rabbitmq-server start
如出现启动不了报错,需要查看日志
cat /var/log/rabbitmq/startup_log
出现这个错误需要修改/etc/hosts
把hostname的第一个“.”前的名称(不是全域名)加到hosts中的127.0.0.1下
再启动rabbitMQ-server
service rabbitmq-server start
启动后,用netstat –lntp查看tcp5672端口处于监听状态
创建软链接
ln -s /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-plugins /usr/sbin/rabbitmq-plugins
ln -s /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/rabbitmq-env /usr/sbin/rabbitmq-env
开启rabbitmq rabbitmq_stomp与rabbitmq_management插件
rabbitmq-plugins enable rabbitmq_stomp rabbitmq_management
创建rabbitmq.config配置文件,修改监听stomp端口为61613,注意格式
vi
/etc/rabbitmq/rabbitmq.config
[
{rabbitmq_stomp,[ {tcp_listeners, [61613]} ]}
].
重启 rabbitmq-server
service rabbitmq-server restart
启动后,用netstat –lntp查看tcp61613端口处于监听状态
配置rabbitmq-server:
删除guest用户
rabbitmqctl delete_user guest
本地下载rabbitmqadmin
wget -P /usr/local/bin http://localhost:15672/cli/rabbitmqadmin
给rabbitmqadmin赋予可执行权限
chmod 755 /usr/local/bin/rabbitmqadmin
创建虚拟主机
rabbitmqctl
add_vhost /mcollective 或者
rabbitmqadmin declare vhost name=/mcollective
创建rabbitmq用户并授权
rabbitmqadmin declare user name=mcollective password=12345678 tags=
rabbitmqadmin declare user name=admin password=12345678 tags=administrator
rabbitmqadmin declare permission vhost=/mcollective user=mcollective configure=‘.*’ write=‘.*’ read=‘.*’(注意,复制粘贴命令时引号重新打,你懂的,要不然到后面的授权过不去)
rabbitmqadmin declare permission vhost=/mcollective user=admin configure=‘.*’ write=‘.*’ read=‘.*’ (注意,复制粘贴命令时引号重新打,你懂的,要不然到后面的授权过不去)
查看权限命令
rabbitmqctl list_permissions -p "/mcollective"
rabbitmqadmin declare exchange --user=admin --password=12345678 --vhost=/mcollective name=mcollective_broadcast type=topic
rabbitmqadmin declare exchange --user=admin --password=12345678 --vhost=/mcollective name=mcollective_directed type=direct
查看exchanges命令
rabbitmqctl list_exchanges -p "/mcollective"
配置rabbitmq-server开机自动启动
chkconfig --level 2345 rabbitmq-server on
安装mcollective
安装mcollective客户端作为控制端(注意,在puppetmaster主机上安装的是client客户端,puppet agent主机上安装的是server服务器端,与别的主机正好相反,有点别扭)。
yum install mcollective-common mcollective-client
修改mcollective
客户端配置文件
vi /
etc/mcollective/client.cfg
main_collective = mcollective
collectives = mcollective
libdir = /usr/libexec/mcollective
logger_type = console
loglevel = warn
# Plugins
securityprovider = psk
plugin.psk = 12345678
# Rabbitmq Plugins
direct_addressing = 1
connector = rabbitmq
plugin.rabbitmq.vhost = /mcollective
plugin.rabbitmq.pool.size = 1
plugin.rabbitmq.pool.1.host = 10.0.0.4 #
本机的ip地址
plugin.rabbitmq.pool.1.port = 61613
plugin.rabbitmq.pool.1.user = mcollectiv #
与前面rabbitmq设置的帐号对应
plugin.rabbitmq.pool.1.password = 12345678 #
与前面rabbitmq设置的密码对应
# Facts
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
安装mcollectiv server
端(在所有的puppet agent主机上安装mcollectiv server端)。
yum install mcollective mcollective-common
修改mcollective
服务器端配置文件
vi /etc/mcollective/server.cfg
main_collective = mcollective
collectives = mcollective
libdir = /usr/libexec/mcollective
logfile = /var/log/mcollective.log
loglevel = info
daemonize = 1
# Plugins
securityprovider = psk
plugin.psk = 12345678
direct_addressing = 1
connector = rabbitmq
plugin.rabbitmq.vhost = /mcollective
plugin.rabbitmq.pool.size = 1
plugin.rabbitmq.pool.1.host = 10.0.0.4 #puppetmaster
端的ip地址
plugin.rabbitmq.pool.1.port = 61613
plugin.rabbitmq.pool.1.user = mcollective #
与前面rabbitmq设置的帐号对应
plugin.rabbitmq.pool.1.password = 12345678 #
与前面rabbitmq设置的密码对应
# Facts
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
启动mcollective服务
service mcollective start
在所有的puppet agent主机上配置mcollective开机自动启动
chkconfig --level 2345 mcollective on
连通性测试
在puppetmaster主机上使用mco ping命令测试
获取节点信息测试
mco inventory 节点域名
在puppetmaster主机上安装mcollective
puppet插件
yum install mcollective-puppet-client mcollective-puppet-common
在所有puppet agent主机上安装mcollective
puppet插件
yum
install mcollective-puppet-agent mcollective-puppet-common
/etc/init.d/mcollective
reload-agents
在puppetmaster主机上查看mcollectiv puppet插件是否生效
mco
使用mco查看puppet状态
开启foreman中的puppet run
在puppetmaster的foreman右上角的管理->设置->puppet中修改puppetrun为true
在puppetmaster主机中配置foreman-proxy中的puppet_provider为mcollective,并去掉puppet_provider前面的标注
vi /etc/foreman-proxy/settings.d/puppet.yml
在puppetmaster主机中配置sudoer,添加mco命令
chmod 660 /etc/sudoers.d/foreman-proxy
vi /etc/sudoers.d/foreman-proxy
foreman-proxy ALL = NOPASSWD : /usr/bin/puppet cert *, /usr/bin/mco puppet runonce *
chmod 440 /etc/sudoers.d/foreman-proxy
重启foreman-proxy服务
service foreman-proxy restart
在foreman主机管理中使用“运行puppet”进行puppet推送