设为首页 收藏本站
查看: 836|回复: 0

[经验分享] CentOS 6 + Puppet 2.7 + mCollective + Foreman + RabbitMQ + Apache + Passenger Tu

[复制链接]

尚未签到

发表于 2018-8-3 09:07:15 | 显示全部楼层 |阅读模式
  So perhaps less than a ‘blog post’ this is more of a bash code-dump  from my Veewee definition + postinstall.sh for this deployment. For  anyone who needs a quick stack (especially if you are still on older >  If nothing else, hopefully someone finds this useful to fix a bug  they may have been having in their own deployment. Note that I’ve taken  out some Veewee/Vagrant/Virtual Box specific pieces of the original  postinstall.sh. Cheers.
  原文出处:http://www.uncompiled.com/centos-6-puppet-27-mcollective-foreman-rabbit
  


  • # Configuration Parameters
  • MYSQL_PASSWORD="puppetized"
  • RABBIT_USER="mcollective"
  • RABBIT_PASSWORD="rabbitMCrabbit"
  • MCOLLECTIVE_PSK="mcollectivePSKmcollective"
  • FOREMAN_EMAIL="root@test.local"
  • DOMAIN="test.local"

  • # Initial CentOS system clean-up + upgrades
  • yum -y erase wireless-tools gtk2 libX11 hicolor-icon-theme avahi freetype bitstream-vera-fonts
  • yum -y upgrade
  • yum -y clean all

  • # Configure hostname
  • echo -e "127.0.0.1 puppet.${DOMAIN} puppet foreman.${DOMAIN} foreman localhost" > /etc/hosts
  • echo -e "NETWORKING=yes\nHOSTNAME=puppet.${DOMAIN}" > /etc/sysconfig/network
  • hostname puppet.${DOMAIN}

  • # Puppet Labs repository
  • cat > /etc/yum.repos.d/puppetlabs.repo < < &quot;EOF&quot;
  • [puppetlabs]
  • name=Puppet Labs Packages
  • baseurl=http://yum.puppetlabs.com/
  • gpgcheck=0
  • enabled=1
  • EOF

  • # Foreman repository
  • cat > /etc/yum.repos.d/foreman.repo < < &quot;EOF&quot;
  • [foreman]
  • name=Foreman Repo
  • baseurl=http://yum.theforeman.org/stable
  • gpgcheck=0
  • enabled=1
  • EOF

  • # Installation of majority of stack packages
  • yum -y install rubygems ruby-devel rubygem-stomp
  • yum -y install httpd httpd-devel mod_ssl
  • yum -y install mysql mysql-server mysql-devel
  • yum -y install libcurl-devel openssl-devel openssl098e tcl tk unixODBC unixODBC-devel augeas

  • rpm -ivh http://download.fedora.redhat.com/pub/epel/6/x86_64/rubygem-rest-client-1.6.1-2.el6.noarch.rpm
  • rpm -ivh http://download.fedora.redhat.com/pub/epel/6/x86_64/rubygem-json-1.4.3-3.el6.x86_64.rpm
  • rpm -ivh http://download.fedora.redhat.com/pub/epel/6/x86_64/rubygem-mime-types-1.16-3.el6.noarch.rpm

  • # Installation of stack gems
  • gem install --no-rdoc --no-ri puppet passenger rack mysql net-ping
  • gem install --no-rdoc --no-ri -v 3.0.10 rails activerecord

  • # Deploy required Puppet user, files, and directories
  • adduser puppet

  • mkdir -p /etc/puppet/{manifests,modules}
  • mkdir -p /usr/share/puppet/rack/puppetmasterd/{public,tmp}

  • mkdir -p /var/lib/puppet/{bucket,yaml,rrd,server_data,reports}
  • chown puppet:puppet /var/lib/puppet/{bucket,yaml,rrd,server_data,reports}

  • cp /usr/lib/ruby/gems/1.8/gems/puppet-2.7.3/ext/rack/files/config.ru /usr/share/puppet/rack/puppetmasterd/config.ru
  • chown puppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru

  • # Install Foreman
  • rpm -ivh http://yum.theforeman.org/stable/RPMS/foreman-0.3-1.noarch.rpm --nodeps

  • # mCollective & Plugins
  • yum -y install mcollective mcollective-common mcollective-client

  • cd /usr/libexec/mcollective/mcollective/application
  • for i in filemgr nettest package puppetd service; do
  • wget https://raw.github.com/puppetlabs/mcollective-plugins/master/agent/$i/application/$i.rb
  • done
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/etcfacts/application/etcfacts.rb
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/shellcmd/application/shellcmd.rb
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/yum/application/yum.rb

  • cd /usr/libexec/mcollective/mcollective/agent
  • for i in nettest filemgr puppetd puppetral puppetca; do
  • wget https://raw.github.com/puppetlabs/mcollective-plugins/master/agent/$i/agent/$i.rb
  • wget https://raw.github.com/puppetlabs/mcollective-plugins/master/agent/$i/agent/$i.ddl
  • done

  • wget -O package.rb https://raw.github.com/puppetlabs/mcollective-plugins/master/agent/package/agent/puppet-package.rb
  • wget https://raw.github.com/puppetlabs/mcollective-plugins/master/agent/package/agent/package.ddl
  • wget -O service.rb https://raw.github.com/puppetlabs/mcollective-plugins/master/agent/service/agent/puppet-service.rb
  • wget https://raw.github.com/puppetlabs/mcollective-plugins/master/agent/service/agent/service.ddl
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/etcfacts/etc_facts.rb
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/etcfacts/etc_facts.ddl
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/shellcmd/shellcmd.rb
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/shellcmd/shellcmd.ddl
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/yum/yum.rb
  • wget https://raw.github.com/phobos182/mcollective-plugins/master/agent/yum/yum.ddl

  • cd /usr/libexec/mcollective/mcollective/facts/
  • wget https://raw.github.com/puppetlabs/mcollective-plugins/master/facts/facter/facter_facts.rb

  • # Fix ODBC requirement for Erlang
  • ln -s /usr/lib64/libodbc.so.2 /usr/lib64/libodbc.so.1

  • # Install Erlang
  • rpm -ivh http://yum.puppetlabs.com/prosvc/5/x86_64/erlang-R12B-5.10.el5.x86_64.rpm --nodeps

  • # Install RabbitMQ & Plugins
  • rpm -ivh http://www.rabbitmq.com/releases/rabbitmq-server/v2.5.1/rabbitmq-server-2.5.1-1.noarch.rpm

  • cd /usr/lib/rabbitmq/lib/rabbitmq_server-2.5.1/plugins
  • wget http://www.rabbitmq.com/releases/plugins/v2.5.1/amqp_client-2.5.1.ez
  • wget http://www.rabbitmq.com/releases/plugins/v2.5.1/rabbitmq_stomp-2.5.1.ez

  • chkconfig rabbitmq-server on
  • service rabbitmq-server start

  • # Configure RabbitMQ user/privileges
  • rabbitmqctl add_user ${RABBIT_USER} ${RABBIT_PASSWORD}
  • rabbitmqctl set_permissions ${RABBIT_USER} &quot;.*&quot; &quot;.*&quot; &quot;.*&quot;
  • rabbitmqctl delete_user guest

  • # Install Apache Passenger module
  • passenger-install-apache2-module -a

  • # Configuration files for mCollective
  • cat > /etc/mcollective/server.cfg < < &quot;EOF&quot;
  • topicprefix = /topic/
  • main_collective = mcollective
  • collectives = mcollective
  • libdir = /usr/libexec/mcollective
  • logfile = /var/log/mcollective.log
  • loglevel = info
  • daemonize = 1

  • securityprovider = psk
  • plugin.psk = MCOLLECTIVE_PSK_PH

  • connector = stomp
  • plugin.stomp.host = localhost
  • plugin.stomp.port = 61613
  • plugin.stomp.user = RABBIT_USER_PH
  • plugin.stomp.password = RABBIT_PASSWORD_PH

  • factsource = facter
  • EOF

  • cat > /etc/mcollective/client.cfg < < &quot;EOF&quot;
  • topicprefix = /topic/
  • main_collective = mcollective
  • collectives = mcollective
  • libdir = /usr/libexec/mcollective
  • logfile = /dev/null
  • loglevel = info

  • securityprovider = psk
  • plugin.psk = MCOLLECTIVE_PSK_PH

  • connector = stomp
  • plugin.stomp.host = localhost
  • plugin.stomp.port = 61613
  • plugin.stomp.user = RABBIT_USER_PH
  • plugin.stomp.password = RABBIT_PASSWORD_PH

  • factsource = facter
  • EOF

  • # Configure MySQL
  • chkconfig mysqld on && service mysqld start
  • mysql -u root -e &quot;CREATE DATABASE puppet;&quot;
  • mysql -u root -e &quot;GRANT ALL PRIVILEGES ON puppet.* TO puppet@localhost IDENTIFIED BY '${MYSQL_PASSWORD}';&quot;

  • # Puppet configuration
  • cat > /etc/puppet/puppet.conf < < &quot;EOF&quot;
  • [main]
  • logdir = /var/log/puppet
  • rundir = /var/run/puppet
  • ssldir = $vardir/ssl
  • factpath = $vardir/lib/facter
  • templatedir = $confdir/templates
  • pluginsync = true
  • classfile = $vardir/classes.txt
  • localconfig = $vardir/localconfig
  • reportdir = /var/lib/puppet/reports

  • [agent]
  • report = true
  • ignorecache = true

  • [master]
  • reports = http,store,log,foreman
  • ssl_client_header = SSL_CLIENT_S_DN
  • ssl_client_verify_header = SSL_CLIENT_VERIFY
  • storeconfigs = true
  • dbadapter = mysql
  • dbuser = puppet
  • dbpassword = MYSQL_PASSWORD_PH
  • dbname = puppet
  • dbserver = localhost
  • dbsocket = /var/lib/mysql/mysql.sock
  • EOF

  • # Foreman configuration files
  • cat > /usr/share/foreman/config/database.yml < < &quot;EOF&quot;
  • production:
  • adapter: mysql
  • database: puppet
  • username: puppet
  • password: MYSQL_PASSWORD_PH
  • host: localhost
  • socket: &quot;/var/lib/mysql/mysql.sock&quot;
  • EOF

  • cat > /usr/share/foreman/config/settings.yaml < < &quot;EOF&quot;
  • ---
  • :modulepath: /etc/puppet/modules/
  • :tftppath: tftp/
  • :ldap: false
  • :puppet_server: puppet
  • :unattended: false
  • :puppet_interval: 30
  • :document_root: /usr/share/foreman/public
  • :administrator: FOREMAN_EMAIL_PH
  • :foreman_url: foreman.DOMAIN_PH
  • EOF

  • cat > /usr/share/foreman/config/email.yaml < < &quot;EOF&quot;
  • production:
  • delivery_method: :smtp
  • smtp_settings:
  • address: localhost
  • port: 25
  • domain: DOMAIN_PH
  • authentication: :none
  • EOF

  • # Foreman report for Puppet
  • cat > /usr/lib/ruby/gems/1.8/gems/puppet-2.7.3/lib/puppet/reports/foreman.rb < < &quot;EOF&quot;
  • $foreman_url=&quot;https://foreman.DOMAIN_PH:443&quot;

  • require 'puppet'
  • require 'net/http'
  • require 'uri'

  • Puppet::Reports.register_report(:foreman) do
  • Puppet.settings.use(:reporting)
  • desc &quot;Sends reports directly to Foreman&quot;

  • def process
  • begin
  • uri = URI.parse($foreman_url)
  • http = Net::HTTP.new(uri.host, uri.port)
  • if uri.scheme == 'https' then
  • http.use_ssl = true
  • http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  • end
  • req = Net::HTTP::Post.new(&quot;/reports/create?format=yml&quot;)
  • req.set_form_data({'report' => to_yaml})
  • response = http.request(req)
  • rescue Exception => e
  • raise Puppet::Error, &quot;Could not send report to Foreman at #{$foreman_url}/reports/create?format=yml: #{e}&quot;
  • end
  • end
  • end
  • EOF

  • # Apache configuration files
  • cat > /etc/httpd/conf.d/puppet.conf < < &quot;EOF&quot;
  • Listen 8140

  • SSLEngine on
  • SSLCipherSuite SSLv2:-LOW:-EXPORT:RC4+RSA
  • SSLCertificateFile /var/lib/puppet/ssl/certs/puppet.DOMAIN_PH.pem
  • SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppet.DOMAIN_PH.pem
  • SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
  • SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem
  • SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem
  • SSLVerifyClient optional
  • SSLVerifyDepth 1
  • SSLOptions +StdEnvVars

  • RackAutoDetect On
  • DocumentRoot /usr/share/puppet/rack/puppetmasterd/public/

  • Options None
  • AllowOverride None
  • Order allow,deny
  • allow from all

  • EOF

  • cat > /etc/httpd/conf.d/passenger.conf < < &quot;EOF&quot;
  • LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.8/ext/apache2/mod_passenger.so
  • PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.8
  • PassengerRuby /usr/bin/ruby
  • EOF

  • cat > /etc/httpd/conf.d/foreman.conf < < &quot;EOF&quot;
  • Listen 443
  • NameVirtualHost *:443
  • LoadModule ssl_module modules/mod_ssl.so
  • AddType application/x-x509-ca-cert .crt
  • AddType application/x-pkcs7-crl .crl


  • ServerName foreman.DOMAIN_PH

  • RailsAutoDetect On
  • DocumentRoot /usr/share/foreman/public


  • Options FollowSymLinks
  • DirectoryIndex index.html
  • AllowOverride None
  • Order allow,deny
  • allow from all

  • SSLEngine On
  • SSLCertificateFile /var/lib/puppet/ssl/certs/puppet.DOMAIN_PH.pem
  • SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppet.DOMAIN_PH.pem

  • EOF

  • # Remove stock Apache configuration files
  • rm -f /etc/httpd/conf.d/ssl.conf
  • rm -f /etc/httpd/conf.d/welcome.conf

  • # IPTables configuration
  • cat > /etc/sysconfig/iptables < < &quot;EOF&quot;
  • # Firewall configuration written by system-config-firewall
  • # Manual customization of this file is not recommended.
  • *filter
  • :INPUT ACCEPT [0:0]
  • :FORWARD ACCEPT [0:0]
  • :OUTPUT ACCEPT [0:0]
  • -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  • -A INPUT -p icmp -j ACCEPT
  • -A INPUT -i lo -j ACCEPT
  • -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
  • -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
  • -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
  • -A INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT
  • -A INPUT -m state --state NEW -m tcp -p tcp --dport 61613 -j ACCEPT
  • -A INPUT -j REJECT --reject-with icmp-host-prohibited
  • -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  • COMMIT
  • EOF

  • # Enable IPTables ruleset
  • service iptables restart

  • # Replace placeholder values for configuration
  • sed -i &quot;s/MYSQL_PASSWORD_PH/${MYSQL_PASSWORD}/g&quot; /etc/puppet/puppet.conf /usr/share/foreman/config/database.yml
  • sed -i &quot;s/MCOLLECTIVE_PSK_PH/${MCOLLECTIVE_PSK}/g&quot; /etc/mcollective/server.cfg /etc/mcollective/client.cfg
  • sed -i &quot;s/RABBIT_USER_PH/${RABBIT_USER}/g&quot; /etc/mcollective/server.cfg /etc/mcollective/client.cfg
  • sed -i &quot;s/RABBIT_PASSWORD_PH/${RABBIT_PASSWORD}/g&quot; /etc/mcollective/server.cfg /etc/mcollective/client.cfg
  • sed -i &quot;s/FOREMAN_EMAIL_PH/${FOREMAN_EMAIL}/g&quot; /usr/share/foreman/config/settings.yaml
  • sed -i &quot;s/DOMAIN_PH/${DOMAIN}/g&quot; /etc/httpd/conf.d/puppet.conf
  • sed -i &quot;s/DOMAIN_PH/${DOMAIN}/g&quot; /etc/httpd/conf.d/foreman.conf
  • sed -i &quot;s/DOMAIN_PH/${DOMAIN}/g&quot; /usr/lib/ruby/gems/1.8/gems/puppet-2.7.3/lib/puppet/reports/foreman.rb
  • sed -i &quot;s/DOMAIN_PH/${DOMAIN}/g&quot; /usr/share/foreman/config/email.yaml
  • sed -i &quot;s/DOMAIN_PH/${DOMAIN}/g&quot;/usr/share/foreman/config/settings.yaml

  • # Set Foreman symlinks
  • ln -sf /usr/share/foreman/config/database.yml /etc/foreman/database.yml
  • ln -sf /usr/share/foreman/config/settings.yaml /etc/foreman/settings.yaml
  • ln -sf /usr/share/foreman/config/email.yaml /etc/foreman/email.yaml

  • # Enable mCollective
  • chkconfig mcollective on
  • service mcollective start

  • # Generate Puppet master CA
  • puppet cert --generate puppet.${DOMAIN}

  • # Enable Apache
  • chkconfig httpd on
  • service httpd start

  • # Rake Foreman
  • cd /usr/share/foreman
  • RAILS_ENV=production rake db:migrate

  • # Execute Puppet agent
  • puppet agent -t

  • # Finished
  • exit

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545665-1-1.html 上篇帖子: puppet-dashboard 安装(草稿) 下篇帖子: Puppet 部署安装puppet server,client
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表