检测-v开关的puppet代码添加到要运行的命令

时间:2017-02-23 10:41:24

标签: puppet

首先,我是傀儡的新手,我继承了一些代码,老实说,我认为这实际上并没有起作用。我已经尽力调试并理解它,但实际上可以提供一些帮助。

在modules \ hieradata \ server_environment_class \ pre_production.yaml我有以下代码......

##### MongoDB Vars #####
eikonappmongodb::primary_node: 'c784smseatg01.int.xxxxxxx.com'
eikonappmongodb::arbiter_node: 'betamongodb05.amers3.xxxxxx'
eikonappmongodb::voter_node:
  - c425cpaeatg02.int.xxxxxx.com
  - c687ucweatg03.int.xxxxxx.com

在modules \ appmongodb \ manifests \ init.pp中,我有以下代码。

$is_arbiter = $::fqdn ? {
  $arbiter_node => true,
  default       => false,
}

if is_string($voter_node) {
  if inline_template('<%= @voter_node.any?{ |node| node.casecmp(@fqdn)==0 } %>') {
    $is_voter = true
  } else {
    $is_voter = false
  }
} else {
  $is_voter = false
}

if $is_arbiter {
  exec { 'addArbiterToReplicaSet':
    command => "/n01/mongodb/bin/rsAddMe.sh -s ${primary_node} -r ${replSetName} -p ${adm_pwd} -a ${::fqdn}",
    unless  => "/n01/mongodb/bin/mongo --host localhost --norc --quiet --eval 'rs.status().code' | wc -l | grep 0",
    require => File['/n01/mongodb/bin/rsAddMe.sh'],
  }
} else {
  if is_string($voter_node) {
    $voter_param = ' -v '
  } else {
    $voter_param = ' '
  }

  exec { 'addDataToReplicaSet':
    command => "/n01/mongodb/bin/rsAddMe.sh -s ${primary_node} -r ${replSetName} -p ${adm_pwd} ${voter_param} ${::fqdn}",
    unless  => "/n01/mongodb/bin/mongo --host localhost -u admin -p ${adm_pwd} --authenticationDatabase admin --norc --quiet --eval 'rs.status().code'",
    require => File['/n01/mongodb/bin/rsAddMe.sh'],
  }
}

因此,从我迄今为止在服务器c425cpaeatg02上运行的内容开始,它正确地被确定为一个很棒的仲裁器。

我遇到的问题是从command => "/n01/mongodb/bin/rsAddMe.sh -s ${primary_node} -r ${replSetName} -p ${adm_pwd} ${voter_param} ${::fqdn}"运行addDataToReplicaSet时。 $voter_param未被填充为–v,它应该打破命令。 所以这里的代码......

if is_string($voter_node) {
  $voter_param = ' -v '
} else {
  $voter_param = ' '
}

似乎无法正常工作。

0 个答案:

没有答案