标签: puppet

使用 pm2 在同一节点上运行多个节点实例

我想使用 pm2 在单个服务器上运行 2 个 node.js 应用程序,这些应用程序需要通过 puppet 进行部署。请您告知这是否可能。

问候,巴拉

puppet node.js pm2

5
推荐指数
1
解决办法
2万
查看次数

Python中的Eyaml字符串加密

我正在用 Python 生成 puppet hieradata yml 文件。

我想用 Python 实现以下 Ruby 代码...

public_key_pem = File.read(puppet_key_file)
@public_key_x509 = OpenSSL::X509::Certificate.new( public_key_pem )
@cipher = OpenSSL::Cipher::AES.new(256, :CBC)


ciphertext = OpenSSL::PKCS7::encrypt([@public_key_x509],
  plaintext,
  @cipher,
  OpenSSL::PKCS7::BINARY
).to_der
"ENC[PKCS7,#{Base64.encode64(ciphertext).gsub("\n", '')}]"
Run Code Online (Sandbox Code Playgroud)

在另一个模块中,我正在使用 PyOpenssl 处理证书签名和密钥生成,但我注意到加密方法没有实现......


M2Crypto 的潜在解决方案...

from M2Crypto import SMIME, X509, BIO
def encrypt(self, plaintext):
        """
        Encrypt a string using the previously generated public key AES-256-CBC, SMIME PKCS7 envelop

        :param plaintext: The text to encrypt
        :type plaintext: str
        :returns: The encrypted text
        :rtype: str
        """
        buf = BIO.MemoryBuffer(plaintext) …
Run Code Online (Sandbox Code Playgroud)

python encryption puppet

5
推荐指数
1
解决办法
1071
查看次数

使用SRV记录时puppetserver ca命令无法连接到https://puppet:8140解决方案

我在我的木偶架构中使用 SRV 解决方案。当尝试设置新的 puppet master 和 CA 并查看我的证书时,我收到此错误:

puppetserver ca list --all
Fatal error when running action 'list'
  Error: Failed connecting to https://puppet:8140/puppet-ca/v1/certificate_statuses/any_key
  Root cause: Failed to open TCP connection to puppet:8140 (getaddrinfo: No address associated with hostname)
Run Code Online (Sandbox Code Playgroud)

我的 puppet.conf 文件具有以下配置:

   use_srv_records = true
   srv_domain = mypuppetrecord.com
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

ca puppet srv

5
推荐指数
1
解决办法
9954
查看次数

Puppet无法找到模板的变量

刚刚开始使用Puppet,我的第一个模板出现问题.它应该很容易,但我无法弄清楚.

我有一个模块"基地"

/etc/puppet/modules/base/
    ./manifests
    ./manifests/service.pp
    ./manifests/init.pp
    ./manifests/params.pp
    ./manifests/config.pp
    ./manifests/install.pp
    ./templates
    ./templates/puppet.conf.erb
Run Code Online (Sandbox Code Playgroud)

还有其他的东西,但没有必要.

碱/舱单/ init.pp:

class base {
  include base::install, base::service, base::config, base::params
}
Run Code Online (Sandbox Code Playgroud)

碱/舱单/ config.pp

class base::config {
  include base::params

  File {
    require => Class["base::install"],
    ensure => present,
    owner => root,
    group => root,
  }

  file { "/etc/puppet/puppet.conf":
    mode => 0644,
    content => template("base/puppet.conf.erb"),
    require => Class["base::install"],
    nofity => Service["puppet"],
  }
...
Run Code Online (Sandbox Code Playgroud)

碱/舱单/ params.pp

class base::params {
  $puppetserver = "pup01.sdirect.lab"
}
Run Code Online (Sandbox Code Playgroud)

最后是base/templates/puppet.conf.erb中模板的有趣部分

...
server=<% puppetserver %>
Run Code Online (Sandbox Code Playgroud)

错误消息:

错误:无法解析模板base/puppet.conf.erb:无法在节点上的/etc/puppet/modules/base/manifests/config.pp:13找到'puppetserver'的值...

我不知道问题是什么.我直接从Pro Puppet书中复制了这部分内容. …

puppet

4
推荐指数
2
解决办法
2万
查看次数

流浪汉和ec2之间的木偶条件检查

我已经查看了puppet变量的文档,似乎无法理解如何将其应用于以下情况:

if vagrant (local machine)

phpfpm::nginx::vhost { 'vhost_name':
    server_name => 'dev.demo.com',
    root        => '/vagrant/public',
}

else if aws ec2 (remote machine)

phpfpm::nginx::vhost { 'vhost_name':
    server_name => 'demo.com',
    root        => '/home/ubuntu/demo.com/public',
}
Run Code Online (Sandbox Code Playgroud)

谢谢

puppet amazon-ec2 vagrant

4
推荐指数
2
解决办法
792
查看次数

如何测试将木偶模板应用于给定测试参数的结果

我有以下puppet模板文件solr.json.erb:

{
  "servers" : [ {
    "port" : "<%= jmx_port %>",
    "host" : "localhost",

    "queries" : [
      <% @markets.each do |market| -%>
    {
      "outputWriters" : [ {
        "@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter",
      } ],
      "obj" : "solr/market_<%= market %>:type=queryResultCache,id=org.apache.solr.search.LRUCache",
      "attr" : [ "hits","hitratio"]
    },
    <% end -%>
    ],
    "numQueryThreads" : 2
  } ]
}
Run Code Online (Sandbox Code Playgroud)

我想在puppet中执行此测试之前测试将模板应用于某些测试参数的结果.

我怎样才能做到这一点?

之前,我试过像这样的脚本,my_script.ruby

require 'erb'
require 'ostruct'
namespace = OpenStruct.new(:jmx_port => 9200, :markets=> ['CH', 'FR'])
template = File.open("solr.json.erb", "rb").read;
puts ERB.new(template).result(namespace.instance_eval { binding })
Run Code Online (Sandbox Code Playgroud)

但它没有成功,因为OpenStruct没有instance variables,所以我无法使用 …

ruby erb puppet

4
推荐指数
2
解决办法
4203
查看次数

卸载领班

我按照此处的说明在Ubuntu Server 12.04上安装了The Foreman:

http://theforeman.org/manuals/1.2/quickstart_guide.html#Installation

我现在已经决定它不适合我 - 但我找不到有关如何卸载的任何说明.宝石卸载工头等各种命令失败,因为它似乎是作为宝石安装的.

任何帮助将不胜感激.谢谢,克里斯蒂亚诺

ruby puppet theforeman

4
推荐指数
1
解决办法
1万
查看次数

让puppet有条件地执行多个命令

我有一个工作的puppet配置来帮助在机器上安装mysql实例.我的环境设置为在同一台机器上运行多个实例(具有不同的配置/端口/等).

我在清单中的基本设置看起来像

File{
    owner => $owner,
    group => $group,
    before => Exec["mysql_install_db-${name}"],
}

exec{"mysql_install_db-${name}":
    creates => "/var/lib/mysql/${name}/mysql",
    command => "/usr/local/percona/mysql-${version}/usr/bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql/${name} --basedir=/usr/local/percona/mysql-${version}/usr",
    logoutput => true,
}
Run Code Online (Sandbox Code Playgroud)

这非常好用,但是现在我想修改这个安装过程来运行一些后续命令,用一些内部存储过程来引导全新安装,并为新安装做一些其他的"准备工作".

命令基本上就像

mysql -u user < /path/to/bootstrap1.sql
mysql -u user < /path/to/bootstrap2.sql
mysql -u user < /path/to/bootstrap3.sql
Run Code Online (Sandbox Code Playgroud)

我只希望这些运行一次,在mysql_install_db命令之后,但有点在同一"创建"后卫.

我发现了一些只是将数组传递给命令参数的引用,但该引用的形式是错误报告并不总是一致地工作.

什么是首选的方法来完成这样的事情,并确保命令以确定的顺序执行,并且只有在运行mysql_install_db之后?

mysql puppet

4
推荐指数
1
解决办法
9000
查看次数

如何自动化Puppet的模块安装

我正在将系统一键部署到Ubuntu机器上.刚刚开始使用Puppet.看来,为了让我使用外部模块,我必须使用类似的东西预先安装它们

puppet module install foo
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 我是否总是需要预先安装模块才能使用它们?
  2. 如何自动安装Puppet模块?

这是一个独立的木偶设置(所以不是主从的木偶).我将不得不为不同的客户多次重复这一点.因此,有一个按钮为我完成所有工作将是很好的.在后期阶段,有一个主从设置的地方.但它必须对每个客户都是独立的.

deployment ubuntu puppet continuous-delivery

4
推荐指数
1
解决办法
1916
查看次数

除非目录存在于puppet中,否则exec命令

如果puppet文件中不存在目录,如何执行命令?

exec { "my_exec_task":
  command => "tar zxf /home/user/tmp/test.tar.gz",
  unless => "test -d /home/user/tmp/new_directory",
  path    => "/usr/local/bin/:/bin/",
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:"无法评估:无法找到命令'test'".这也是检查目录是否不存在的最佳做法?

ruby puppet

4
推荐指数
1
解决办法
5223
查看次数