2016-03-07 16 views
7

Làm cách nào chúng ta có thể cấu trúc cây trạng thái muối để có thể chạy highstate cho một virtualenv ra khỏi một số lớn chạy trên máy chủ?Muối: quản lý 100+ virtualenv trên một máy chủ

Chúng tôi chạy virtualenvs để phát triển và sản xuất, sử dụng vải. Chúng tôi muốn chuyển từ vải thành muối. Mọi thứ đều hoạt động tốt, ngoại trừ việc highstate mất quá nhiều thời gian. Chúng tôi có hơn 100 virtualenv trên một máy chủ, và caling highstate sẽ cập nhật hơn 100 virtualenv.

+0

bạn có thể cho biết phải mất bao lâu? – dahrens

+0

@ dahrens xin lỗi, tôi không có số điện thoại vào lúc này. Nhưng tốc độ chỉ là một mối quan tâm. Khác là: Địa chỉ. Tôi muốn có thể cập nhật một virtualenv cụ thể mà không cần chạm vào các virtualenv khác. – guettli

Trả lời

6

salt '*' state.highstate

luôn áp dụng tất cả các bang để minion của bạn. Nó phụ thuộc vào trạng thái của bạn tại sao phải mất một thời gian khá lâu cho đến khi trở về cao nguyên.

Có thể tổ chức triển khai bằng cách sử dụng các trạng thái riêng biệt cho từng venv. từng tiểu bang có thể được áp dụng như thế:

salt '*' state.sls venv1

Một cây muối đơn giản có thể trông như thế này.

. 
    +-- salt 
    | +-- _prereq.sls 
    | +-- venv1.sls 
    | +-- venv2.sls 
    | +-- top.sls 

Nếu bạn cần công cụ để được thực hiện như điều kiện tiên quyết đối với từng venv trong cùng một cách bạn có thể sử dụng một cái gì đó như thế:

_prereq.sls

install_something: 
    pkg.installed: 
    pkgs: ['foo', 'bar'] 

venv1.sls

include: 
    - _prereq 

myvenv_state: 
    virtualenv.managed: 
    - system_site_packages: False 
    - requirements: salt://requirements.txt 
    - require: 
     - sls: _prereq 

Tôi thích để có thể highstate tay sai của tôi mà không cần suy nghĩ về nó, vì vậy tôi cố gắng tránh các địa chỉ địa chỉ. Nhưng nó có thể phù hợp với nhu cầu của bạn.

Bạn cũng có thể muốn xem salt.states.virtualenv

+0

Tôi đoán 'salt' * 'state.sls venv1' thay vì highstate nên hoạt động. Nếu venv1 và venv2 chia sẻ một tập hợp các yêu cầu chung, làm thế nào để viết điều này (không cần sao chép mã)? – guettli

+0

bạn có thể tạo một trạng thái khác với các yêu cầu và bao gồm trạng thái đó trong mỗi venv như [được giải thích trong tài liệu muối] (https://docs.saltstack.com/en/latest/ref/states/requisites.html#require-an- toàn bộ-sls-file) – dahrens

+0

hãy nhớ rằng bạn muốn để có thể highstate tay sai của bạn đúng cách. bao lâu nó thực sự đưa đến highstate họ? – dahrens

Các vấn đề liên quan