Как выполнить php должностное лицо для вложенных сценариев на удаленных машинах?

Я первоначально задал этот вопрос stackEx и понял, что это было намного лучшее соответствие здесь.

Я пытаюсь автоматизировать развертывание сервисов на кластер хостов от веб-сервера. Я вызвал php исполнительную функцию ранее для запущения простых скриптов, и это не было проблемой; однако кажется, что сложность моей текущей задачи требует дальнейшей конфигурации.

Я подкачал ssh ключи между хостами и веб-сервером. Это - сценарий, набросился на php должностное лицо как на кнопку:

  # store free memory text as variable


a="/root/pl3bs/a.txt"
b="/root/pl3bs/b.txt"
c="/root/pl3bs/c.txt"

amem=$(cat "$a")
bmem=$(cat "$b")
cmem=$(cat "$c")

# run script on host which has most free memory

if   [ "$cmem" -gt "$amem" ] && [ "$cmem" -gt "$bmem" ]

  then
        ssh 'pl3bs@<ip_redacted>' 'bash -s' < /home/deploy.sh

elif [ "$amem" -gt "$bmem" ] && [ "$amem" -gt "$cmem" ]

  then
        ssh 'pl3bs@<ip2_redacted>' 'bash -s' < /home/deploy.sh

else [ "$bmem" -gt "$amem" ] && [ "$bmem" -gt "$cmem" ]

        ssh 'pl3bs@<ip3_redacted>' 'bash -s' < /home/deploy.sh


fi

Таким образом, я знаю, что это выполняется от www-пользователя-данных, и я знаю, что существуют проблемы с полномочиями и угрозы безопасности при поднимании с этим пользователем для запущения скриптов. Я пытаюсь сделать это правильно. Я скопировал/root/.ssh каталог в/var/www/.ssh каталог, который я создал, показанный его www-данным, поместите 700 полномочий на папку, и 600 для authorized_keys файла. Это все еще не запускает мой скрипт от php кнопки.

Если я выполняю это в оболочке с:

sudo -u www-data ./instance.sh

Это просит пароль. Я подкачал ключи с хостов на веб-сервер, и наоборот прежде, чем скопировать тех в/root/.ssh к/var/www/.ssh, итак, почему это будет все еще происходить? Я знаю, что www-пользователь-данных особенно ограничивается по причине, так думаю это, что-то еще должно быть сделано? Как я заставляю этот сценарий работать, не вызывая дыру в системе безопасности?

Я был зациклен на этом в течение почти 24 часов теперь и нуждаюсь в решении. Даже если Вы говорите мне запускаться с нуля и идти он иначе, выручите меня.

Спасибо.

0
задан 13 April 2015 в 05:31
1 ответ

Мое теоретическое решение было успешным. У меня есть папка, в которой будут храниться текстовые файлы с пользовательского ввода. У меня есть папка для скриптов в другом месте сервера, к которой имеет доступ только root, и которая запускается через cronjob каждую минуту. Она проверяет наличие текстовых файлов в первой директории. Если они существуют, он запускает другой скрипт для развертывания экземпляров, затем удаляет любые текстовые файлы в этой директории, в противном случае заканчивается.

Я запустил простые тесты, и это реальный обходной путь. Теперь мне нужно просто применить выученные биты и развернуть его до тех пор, пока проект не будет завершен.

0
ответ дан 5 December 2019 в 12:52

Теги

Похожие вопросы