Я изучаю Salt Stack для развертывания моего приложения Python на различных этапах производства на AWS. Прямо сейчас у меня есть весь исходный код и состояния солей в одном большом репозитории.
Есть ли какие-либо практические соображения или соображения безопасности при хранении файлов состояния миньонов с моим источником? Или мне их разделить и почему?
Если я перенесу свои файлы состояний в отдельное хранилище солевых состояний, где я должен хранить свои master
и minion
файлы конфигурации, или они не входят в систему контроля версий?
Пит,
Так что есть некоторые вещи, о которых следует помнить, когда ваши конфигурации и код объединены. Допустим, вы развертываете с помощью git, это означает, что весь ваш код и файлы конфигурации отправляются на каждый сервер. Если ваш git не настроен только для чтения, то кто-то, кто попадает на одну из ваших машин, может редактировать конфиги с помощью небольшого эксплойта, который поможет им получить доступ ко всем вашим машинам.
Я знаю людей, которые помещают туда ssh-ключи, репозиторий развертывания, чтобы они могли легко развернуть новый солевой сервер или марионетку, или что-либо еще, что они используют. Опять же, проблема с развертыванием как вашего приложения, так и конфигураций на каждом сервере будет означать, что вы снова дали ключи от королевства, это зависит от того, что вы делаете это на всех ваших серверах, и ключ ssh также присутствует.
У меня есть системы развертывания, в которых я использую пользователя git только для чтения для развертывания кода и держу свои конфигурации подальше от всех моих серверов, предоставляя каждому серверу только необходимые ему файлы конфигурации. У каждого сервера есть закрытый ключ к учетной записи git только для чтения. Я также был в настройке, в которой при каждом развертывании я автоматически перемещал открытый ключ всех своих серверов.