首先,我是傀儡的新手,我继承了一些代码,老实说,我认为这实际上并没有起作用。我已经尽力调试并理解它,但实际上可以提供一些帮助。
在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 = ' '
}
似乎无法正常工作。