我接pipe了20个左右的Linux环境的pipe理职责。 试图使用Puppet来整合configurationpipe理。 大多数是直截了当的,但是我偶然发现了防火墙规则。 以前的pipe理员依靠一个自定义的脚本,为通用模板中的每个框创build了iptables规则。 模板规则如下所示: hostname: Action Interface Source Protocol destPort 一些例子: ALL: Accept eth0 any tcp 80 server4: Accept All xxxx/24 tcp/udp 111 node5: Deny All yyyy 所有规则适用于所有的框。 其余的参数被用来填充iptables规则。 模板中约有250条规则。 是否有可能通过puppet重新使用这个通用模板,并为每个节点构buildiptables规则集? 这种文字是否可以用傀儡破坏?
我一直在学习Puppet(最近24小时),并且已经拿出了下面的模块来安装Tomcat。 它工作的很好,但我不禁觉得这不是最好的方式来做到这一点 – 特别是在name[1-4]部分和步骤/依赖关系。 如果一个“ 木偶大师 ”:)可以看看我在做什么,并提出改进build议,我会非常感激。 class tomcat { #### # Tomcat # Variables $tomcatVersionedDir="/usr/local/apache-tomcat-6.0.29" $tomcatDir="/usr/local/tomcat" $tomcatBinDir="${tomcatDir}/bin" $tomcatDaemonSrcDir="${tomcatBinDir}/commons-daemon-1.0.2-native-src" # 1) Get the package file { "/root/tomcat6.tgz": ensure => "file", source => "puppet://puppet/tomcat/tomcat6.tgz", } # 2) Untar the package define tomcat_expand() { exec { "/bin/tar xzf /root/tomcat6.tgz": cwd => "/usr/local", creates => $tomcatVersionedDir, } } […]
我有一个现有的httpd.conf文件,我应该去运行Ubuntu的Vagrant实例,我正在使用Puppet来提供。 我遇到的问题是模块名称。 httpd.conf指定了一堆模块,如下所示: LoadModule access_compat_module modules/mod_access_compat.so LoadModule actions_module modules/mod_actions.so LoadModule alias_module modules/mod_alias.so LoadModule allowmethods_module modules/mod_allowmethods.so LoadModule asis_module modules/mod_asis.so LoadModule auth_basic_module modules/mod_auth_basic.so 为了设置所有这些模块,我需要告诉我正在使用的Puppet Apache模块(通过Example42 )我想要安装和启用的模块名称。 问题是模块名称与httpd.conf行不是 1:1匹配。 换句话说,模块名称不能总是从文件中推断出来。 例如,这里是我,试图启用文件的第一行( mod_access_compat.so ): vagrant@lucid64:~$ sudo a2enmod access_compat ERROR: Module access_compat does not exist! vagrant@lucid64:~$ sudo a2enmod access_compat_module ERROR: Module access_compat_module does not exist! vagrant@lucid64:~$ sudo a2enmod accesscompat ERROR: […]
我使用Supervisord运行我的Java应用程序,这需要一些环境variables的configuration。 我在/ etc / environment中设置了环境variables export MANAGER_URL="http://192.xxx.xxx.xxx:8080/manager/" export MANAGER_URL2="http://192.xxx.xxx.yyy:8081/manager/" 我的主pipe/ conf.d / myjavaapp.conf如下所示: [supervisord] nodaemon=false logfile_maxbytes=100MB logfile_backups=0 [program:java-app] command=/usr/bin/java -jar /home/pi/deploy/java-app.jar stdout_logfile_maxbytes=200MB stdout_logfile_backups=2 stderr_logfile_maxbytes=100MB stderr_logfile_backups=0 autostart=true 我知道我可以设置[java-app]部分的环境variables为: environment=MANAGER_URL="url1",MANAGER_URL2="url2" 但是这对我不起作用,因为我需要使用Puppet清单来更新variables值,Puppet清单可以更新bash环境variables,而不是更新supervisor子stream程环境variables。 我尝试使用以下命令访问shell环境variables: environment=MANAGER_URL=%(MANAGER_URL)s,MANAGER_URL2=%(MANAGER_URL2)s 但是这导致了一个错误,说明string不能被扩展。 有没有我可以读取我的supervisor.conf中的bash环境variables? 额外信息: 我正在使用raspbian Supervisord是在systemd启动时使用/etc/init.d/中的脚本运行的 Puppet代理也由Supervisor运行,因此无法重新启动Supervisor服务
我一直在努力在我的木偶集群上设置MCollective。 不pipe我做什么,我似乎都无法连接到MCollective服务器。 MCollective服务器主要运行在Ubnutu Xenial上。 ActiveMQ代理(5.14.3)在Debian Stretch上运行。 我在所有节点上运行木偶4.x。 我已经使用了每个传输连接器,如果它们都无法连接。 让我转储一些日志文件给你。 在mcollective.log我得到Connection reset by peer : I, [2017-01-27T15:43:59.869501 #18729] INFO — : activemq.rb:139:in `on_ssl_connecting' Establishing SSL session with stomp+ssl://[email protected]:61614 E, [2017-01-27T15:44:00.070995 #18729] ERROR — : activemq.rb:149:in `on_ssl_connectfail' SSL session creation with stomp+ssl://[email protected]:61614 failed: Connection reset by peer – SSL_connect I, [2017-01-27T15:44:00.071371 #18729] INFO — : activemq.rb:129:in `on_connectfail' […]
对于stream浪汉来说,我相当陌生,有人对这个(和傀儡)有更多的了解,能够解释一下stream浪testing机器如何处理与实际生产机器相同的节点定义时,stream浪者如何处理ssl证书? 我以主人/客户模式运行木偶,我希望启动我的木偶制作节点的stream浪版本,主要是为了testing新的木偶代码。 如果我的生产机器,比如说sql.domain.com,我启动一个stream浪的机器,比如说sql.vagrant.domain.com。 然后在vagrant文件中使用puppet_server提供程序,并给puppet.puppet_node条目“sql.domain.com”以获取相同的puppet节点定义。 在puppet服务器上,我在该节点条目上使用类似于/*.sql.domain.com/的正则expression式,这样stream浪机器和真实的机器都可以在puppet服务器上获得该节点条目。 最后,我在puppet的autosign.conf中为* .vagrant.domain.com启用了自动签名,所以stream浪机器得到了签名。 到现在为止还挺好… 但是,如果我的networking上的一台机器获得了root权限,比如unimportant.domain.com,那么怎样才能阻止攻击者将该机器上的主机名更改为sql.vagrant.domain.com,删除旧的puppet ssl cert,然后使用给定的节点名称sql.domain.com重新运行木偶? 新的ssl证书将由puppet自动签名,匹配节点名正则expression式,然后这个被黑客入侵的节点将得到所有准备用于sql机器的多汁信息?! 我能想到的一个解决scheme是避免自动签名,并将真正的生产机器的已知puppet ssl证书放入vagrant共享目录,然后有一个stream浪ssh作业将其移动到位。 这样做的缺点是我最终得到了每个生产机器上的所有ssl证书,这些证书都坐在一个git repo(我的stream浪回购)中,从而在每个开发人员的机器上 – 这可能是也可能不是问题,但听起来不像正确的做法。 tl; dr :其他人如何处理stream浪汉和傀儡ssl证书用于开发或testing生产机器的克隆?
我花了一段时间尝试configurationPuppet,以便它将设置Cinder使用GlusterFS作为后端,而不是LVMISCSI后端,但我没有任何运气。 版本: 木偶3.7.3 Cinder 1.0.8 Gluster 3.4.2 Ubuntu 14.10服务器 puppetlabs-openstack 4.2.0 CONFIGS: 除了Puppet Openstackconfiguration,这工作得很好,我有我的存储节点清单以下: class { 'cinder::backends': enabled_backends => ['glusterfs'] } class { 'cinder::volume::glusterfs': glusterfs_shares => ['192.168.2.5:/cinder-volumes'], glusterfs_mount_point_base => '/var/lib/cinder/mnt' } 导致我的存储节点上的cinder.conf如下所示: [DEFAULT] rootwrap_config = /etc/cinder/rootwrap.conf api_paste_confg = /etc/cinder/api-paste.ini iscsi_helper = tgtadm volume_name_template = volume-%s volume_group = cinder-volumes verbose = no auth_strategy = keystone state_path […]
我试图通过木偶拉git(github)回购。 我已经使用了官方的vcsrepo文档,并从Fiesta 博客中获得了以下configuration: vcsrepo { "/tmp/": ensure => latest, provider => git, source => '[email protected]:tedder/helloworld.git', revision => 'master', # eventually: # revision => 'branchname' require => [ Package["git"], Sshkey["github.com"] ], identity => '/home/ubuntu/.ssh/id_rsa', } 问题是,当我运行这个,我得到以下输出。 我已经砍掉了与Package和Sshkey有关的大部分日志,因为它们看起来很好: $ sudo puppet apply –debug –verbose /etc/puppet/modules/github-deploy/manifests/init.pp [snip lots of output] debug: Puppet::Type::Package::ProviderApt: Executing '/usr/bin/dpkg-query -W –showformat '${Status} ${Package} […]
我正在试图编写的模块,如果目录存在,否则它不应该做任何事情,它创build文件。 class puppetmodule{ exec { 'chk_dir_exists': command => 'test -d /usr/dir1', path => ["/usr/bin","/usr/sbin", "/bin"], } -> file {'usr/dir1/test.txt': ensure => 'file', owner => 'root', group => 'root', mode => '0750', } } 下面是它正在抛出的错误。 请在这方面给我build议。 错误:testing-d / usr / dir1返回1而不是[0]之一
当我在机器上运行puppet客户端(非守护进程)时,我经常但随机地得到以下错误消息: 错误:无法创build:参数path失败:文件path必须完全限定 警告:在失败的目录上不使用caching 警告:configuration无法实例化:参数path失败:文件path必须是完全限定的 这似乎是适度清楚的意思 – 我没有一个完全合格的参数path。 但是,它不告诉我在哪里可以find这个修复它,甚至哪个参数是错误的:( (如果我使用debugging选项,它会一直工作,所以它似乎是一个清单caching的问题…这将是很好的摆脱这个生产使用,仍然) 注意:我不能一直这样做 :/