Получить экземпляр публичного IP с рецептом от шеф-повара - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь получить IP-адрес экземпляра и создать свою работу cron:

command "curl --silent \"http://#{instance['public_ip']}/module.php/cron/cron.php?key=TPUmg16HBBZ8G2LgyySulHHuC2fGdIjf&tag=hourly\" > /dev/null 2>&1"

Но когда экземпляр остановился и когда я перечислил задание cron, я обнаружил, что {instance ['public_ip']} = неверный IP-адрес. Кто-нибудь может мне помочь ? это правильно, почему получить IP @

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Если у машины несколько IP-адресов, Chef иногда может вернуть тот IP-адрес, который мы не ожидаем.Чтобы найти требуемый IP-адрес, служба поддержки Chef предложила переопределить Ohai, и это сработало для нас.

Создайте атрибут для регулярного выражения, соответствующий ожидаемому IP-адресу:

default['ohai']['override']['ip_matcher'] = '/^10\.\d+\.\d+\.4\d+/'

Затем мы должны буквально переопределить Ohai, написав файл с именем Z, чтобы он сохранил IP-адрес, который нам нужен последний.

# dynamically grab the path name
ohai_path = ::File.join(Ohai.config[:plugin_path][0], '/windows')

template "#{ohai_path}/zeta.rb" do
  # keep this template named zeta so it runs last.
  source 'zeta.rb.erb'
  variables(
    ip_matcher: node['ohai']['override']['ip_matcher']
  )
end

Файл шаблона выглядит следующим образом (и предоставлен поддержкой Chef):

Ohai.plugin(:Zeta) do
  provides 'ipaddress'
  depends 'ipaddress', 'network/interfaces'

  collect_data do
    network['interfaces'].each do | interf |
      network['interfaces']["#{interf[0]}"]['addresses'].each do | ip |
        if ip[0] =~ <%= @ip_matcher %>
          ipaddress ip[0]
        end
      end
    end
  end
end

Надеюсь, это поможет!

0 голосов
/ 04 мая 2019

обычно, когда chef-клиент выполняется в экземпляре ec2, ohai будет собирать метаданные ec2 экземпляра , чтобы вы могли получить публичный IP-адрес своего экземпляра, открывавто атрибуты:

node['ec2']['public_ipv4']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...