Điểm:0

Làm cách nào tôi có thể định cấu hình cụm etcd để hoạt động với chủ ngăn xếp muối?

lá cờ cn

Tài liệu chính thức ( https://docs.saltproject.io/en/latest/ref/cache/all/salt.cache.etcd_cache.html#module-salt.cache.etcd_cache ) hiển thị cấu hình ví dụ này:

vvd.host: 127.0.0.1
vvd.port: 2379
etcd.protocol: http
etcd.allow_reconnect: Đúng
etcd.allow_redirect: Sai
etcd.srv_domain: Không có
vvd.read_timeout: 60
etcd.username: Không có
etcd.password: Không có
etcd.cert: Không có
etcd.ca_cert: Không có

Trong trường hợp cụ thể của tôi, tôi có một cụm etcd với xác thực PKI (dựa trên chứng chỉ TLS). Tài liệu mô-đun muối không nói bất kỳ điều gì cụ thể về trường hợp sử dụng đó. Nó chỉ nói thế này:

Có thể tìm thấy các tài liệu liên quan trong tài liệu python-etcd.

"Tài liệu liên quan" trên thực tế rất mơ hồ ở đây https://python-etcd.readthedocs.io/en/latest/#create-a-client-object - nó không phải là một tài liệu thực sự, chỉ là một danh sách các ví dụ tầm thường:

nhập vvd

client = etcd.Client() # điều này sẽ tạo một máy khách chống lại máy chủ etcd chạy trên máy chủ cục bộ trên cổng 4001
khách hàng = etcd.Client (cổng = 4002)
máy khách = etcd.Client(máy chủ='127.0.0.1', cổng=4003)
client = etcd.Client(host='127.0.0.1', port=4003, allow_redirect=False) # sẽ không cho phép bạn chạy các lệnh nhạy cảm trên các máy không phải máy chủ, mặc định là đúng
khách hàng = etcd.Client (
             máy chủ = '127.0.0.1',
             cổng = 4003,
             allow_reconnect=True,
             giao thức = 'https',)

Tất nhiên không cái nào trong số này sẽ hoạt động với một cụm etcd thích hợp. Tuy nhiên, mã nguồn tiết lộ rằng có thể đưa ra danh sách các máy chủ:

https://github.com/jplana/python-etcd/blob/master/src/etcd/client.py#L74

        Khởi tạo máy khách.
        lập luận:
            máy chủ (hỗn hợp):
                           Nếu là một chuỗi, IP để kết nối.
                           Nếu một bộ ((máy chủ, cổng), (máy chủ, cổng), ...)

Nhưng tôi không biết làm thế nào để đặt một bộ dữ liệu vào tệp cấu hình chính của muối. Đây là những gì tôi đã thử:

bộ đệm: vvd
etcd.host: [('salt1.lacinet', 2739), ('salt2.lacinet', 2739)]
etcd.protocol: https
etcd.allow_reconnect: Đúng
etcd.allow_redirect: Sai
etcd.srv_domain: Không có
vvd.read_timeout: 60
etcd.tên người dùng: root
etcd.password: Không có
etcd.cert: ('/etc/salt/etcd/root.key.pem', '/etc/salt/etcd/root.cert.pem')
etcd.ca_cert: '/etc/salt/etcd/ca.cert.pem'

Nhưng nó dẫn đến một lỗi:

[LỖI ] Không thể khám phá các máy chủ etcd từ Không có: Không có tên truy vấn DNS nào tồn tại: _etcd._tcp.None., _etcd._tcp.None.lacinet.
[LỖI ] Không thể lấy danh sách máy từ https://['salt1.lacinet', 'salt2.lacinet']:2379/v2: LocationParseError("Không thể phân tích cú pháp: https://['salt1.lacinet', 'salt2.lacinet']:2379/v2/machines")
[ERROR ] Lỗi trong chức năng _pillar:
Traceback (cuộc gọi gần đây nhất cuối cùng):
  Tệp "/usr/lib/python3/dist-packages/etcd/client.py", dòng 296, trong máy
    phản hồi = self.http.request(
  Tệp "/usr/lib/python3/dist-packages/urllib3/request.py", dòng 75, theo yêu cầu
    tự trả về.request_encode_url(
  Tệp "/usr/lib/python3/dist-packages/urllib3/request.py", dòng 97, trong request_encode_url
    trả về self.urlopen(phương thức, url, **extra_kw)
  Tệp "/usr/lib/python3/dist-packages/urllib3/poolmanager.py", dòng 318, trong urlopen
    u = parse_url(url)
  Tệp "/usr/lib/python3/dist-packages/urllib3/util/url.py", dòng 392, trong parse_url
    trả về six.raise_from(LocationParseError(source_url), Không có)
  Tệp "<string>", dòng 3, trong raise_from
urllib3.Exceptions.LocationParseError: Không thể phân tích cú pháp: https://["('salt1.lacinet'", '2739)', "('salt1.lacinet'", '2739)']:2379/v2/machines

Bản thân lỗi này rất đáng ngờ:

Không thể phân tích cú pháp: https://["('salt1.lacinet'", '2739)', "('salt1.lacinet'", '2739)']:2379/v2/machines

Tôi nghi ngờ rằng danh sách Máy chủ lưu trữ không được nhận dạng dưới dạng danh sách hoặc bộ, mà dưới dạng chuỗi.

Do lỗi này, thậm chí có thể bộ nhớ cache minion của salt-master không hỗ trợ nhiều máy chủ etcd? Nhưng điều đó sẽ rất "thú vị", vì lý do chính của việc cài đặt etcd là cung cấp kho lưu trữ khóa-giá trị HA cho nhiều bậc thầy muối. Vấn đề là gì nếu nó chỉ có thể sử dụng một máy chủ etcd duy nhất?

Tôi cũng có thể gặp sự cố với xác thực dựa trên chứng chỉ TLS, bởi vì nó cũng sử dụng một bộ (hoặc nó nên, như được đưa ra trong https://github.com/jplana/python-etcd/blob/master/src/etcd/client.py#L90 ):


            chứng chỉ (hỗn hợp): Nếu là một chuỗi, toàn bộ chứng chỉ ứng dụng khách ssl;
                            nếu là một tuple, tên tệp chứng chỉ và khóa.
            ca_cert(str): Chứng chỉ ca. Nếu pressent nó sẽ kích hoạt
                           Thẩm định.

Không rõ cách chỉ định một bộ tên tệp trong cấu hình. Cũng không rõ liệu cấu hình ca_cert là đường dẫn của tệp chứng chỉ hay chính chuỗi chứng chỉ PEM. Không ai trong số này được ghi lại ở bất cứ đâu (hoặc chỉ là tôi không thể tìm thấy nó).

Ai đó có thể vui lòng cho tôi biết cách sử dụng cụm v.v. TLS-auth thích hợp với salt-master làm bộ đệm minion không? Có thể ở tất cả?

lá cờ cn
không có kinh nghiệm với điều này, nhưng đối với một số máy chủ, nó phải là (( máy chủ, cổng) ( máy chủ, cổng)) thay vì [( máy chủ, cổng) (máy chủ, cổng)] (https://github.com/jplana/python -etcd/blob/b227f496c038b2b856c4d76c9525b3547e5c8dc4/src/etcd/client.py#L76)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.