Проблемы запуска Mongodb - PullRequest
       52

Проблемы запуска Mongodb

0 голосов
/ 23 февраля 2020

У меня проблемы с запуском mongodb. У меня есть код ниже в моем репозитории шеф-повара:

cookbook_file "/etc/yum.repos.d/mongodb-org-4.2.repo" do
  source 'mongodb-org-4.2.repo'
  owner 'root'
  group 'root'
  mode 00644
end

yum_package 'mongodb-org' do
  action :install
  version '4.2.3-1.amzn2'
end

unless node['env']['is_dev']
  execute 'open mongo port' do
    command 'semanage port -a -t mongod_port_t -p tcp 27017'
    action :run
  end
end

Mongodb терпит неудачу с ошибкой ниже:

================================================================================
    Error executing action `run` on resource 'execute[open mongo port]'
    ================================================================================
    Mixlib::ShellOut::ShellCommandFailed
    ------------------------------------
    Expected process to exit with [0], but received '1'
    ---- Begin output of semanage port -a -t mongod_port_t -p tcp 27017 ----
    STDOUT: 
    STDERR: ValueError: Port tcp/27017 already defined
    ---- End output of semanage port -a -t mongod_port_t -p tcp 27017 ----
    Ran semanage port -a -t mongod_port_t -p tcp 27017 returned 1
    Resource Declaration:
    ---------------------
    # In /var/chef/local-mode-cache/cache/cookbooks/spinnaker-edda/recipes/install.rb
     51:   execute 'open mongo port' do
     52:     command 'semanage port -a -t mongod_port_t -p tcp 27017'
     53:     action :run
     54:   end
     55: end

Может кто-нибудь помочь мне понять, что здесь происходит не так? Я прочитал из документации, что порт mongodb по умолчанию - 27017. Но я не знаю, почему он жалуется. Я также попытался использовать -m вместо -a, но проблема остается той же. Буду признателен за любую оказанную помощь.

1 Ответ

0 голосов
/ 24 февраля 2020

Старайтесь избегать, если строго не требуется, ручного выполнения команд оболочки над целью, но всегда сначала ищите доступную действующую поваренную книгу, которая обеспечивает требуемые функциональные возможности в рамках комплексного изучения различных случаев. Для вашего сценария вы можете использовать поваренную книгу selinux_policy (см. https://github.com/sous-chefs/selinux_policy).

Используя эту поваренную книгу, вы можете открыть порт mon go следующим образом:

selinux_policy_permissive 27017 do
   action :add
end

О вашей проблеме написано Port tcp/27017 already defined, поэтому проблема в том, что ваша инструкция не идемпотентна, если порт alrady определен в se linux. Поэтому, используя мою предлагаемую кулинарную книгу, вы должны решить, что, вероятно, она идемпотентна в этом сценарии.

...