В течение многих лет я мог выполнять сборку с использованием системы непрерывной сборки, такой как Jenkins, а затем удаленно приложения на различные серверы Unix. Я могу использовать команды ssh
и scp
для выполнения своих приказов.
Теперь у меня есть сборка .NET, которую я делаю. Я выполнил сборку с помощью Jenkins и теперь хотел бы выполнить развертывание на удаленном сервере .NET. Мне нужно закрыть приложение, скопировать файлы и перезапустить приложение. Мне нужно иметь возможность делать это удаленно и с помощью инструментов командной строки (без инструментов с графическим интерфейсом). Я нахожусь на нескольких машинах, которые заблокированы, и не могу волей-неволей развертывать что-то, особенно на производственных машинах.
Есть ли механизм, который позволит мне удаленно выключить сервер, развернуть новый набор файлов и перезапустить приложение?
БОНУСНЫЙ ВОПРОС
Я понимаю, что файл *.cab
чем-то похож на файл Java *.jar
. То есть вы можете развернуть один файл *.cab
на сервере, и сервер будет обращаться с ним так, как будто это набор файлов в каталоге.
- Это правильно? Если это так, я хотел бы развернуть что-то с помощью CAB-файла.
- В моей сборке есть файл
webapp.config
, который отличается для каждого сервера. Я бы предпочел создать CAB-файл, который не содержит файлаwebapp.config
, таким образом, CAB-файл, который у меня есть, можно развернуть на каждой машине без его изменения (необходимо изменить только файл webapp.config).
Спасибо
Приложение
Я просто не могу победить...
У меня есть сборка на машине 02, и мне нужно развернуть ее на машине 06. Machine06 находится в DMZ, поэтому я не могу добавить на него пользователя домена. Я могу создавать только локальные учетные записи.
С помощью sc
я могу получить доступ к удаленным системам, но учетная запись, из которой я запускаю sc
, также должна существовать в удаленной системе. Поскольку я не могу создать учетную запись домена на машине 06 и не могу добавить локальную учетную запись компьютера в другую систему Windows (т. е. сделать машину 06\пользователя администратором и на машине 02), я не могу использовать sc
.
Я попробовал команды lp от Sysinternals. Это позволяет мне указать имя пользователя и пароль (которые, как я полагаю, предназначены для другой системы. Однако я получаю следующую ошибку:
C:\Windows\system32>pslist \\machine02 -user remuser02 -password Swordfish
pslist v1.29 - Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals
Cannot connect to remote registry on MACHINE02:
Access is denied.
Failed to take process snapshot on MACHINE02.
Make sure that the Remote Registry service is running on the remote system,
that you havefirewall ports allow RPC access, and your account has read
access the following key on the remote system:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Perflib
C:\Windows\system32>
Поскольку этот пользователь является администратором на машине 02, я уверен, что у него есть доступ для чтения к разделу реестра Windows, и я проверил, включен ли удаленный доступ к реестру. Я подозреваю, что маршрутизатор блокирует вызовы RPC.
Итак, sc
отсутствует, так как я не могу указать учетную запись для использования. Инструменты Sysinternals PS отсутствуют. Я не могу добавить sshd
на сервер.