Ansible có thành phần nào giống với PuppetDB không?


7

Tôi biết Puppet từ (có giới hạn) kinh nghiệm và nhận thấy rằng trong quản lý cấu hình hiện có xu hướng mạnh mẽ đối với Ansible.

Một mặt, tôi hiểu rằng Ansible không yêu cầu một tác nhân, bởi vì nó sử dụng thông minh ssh.

Mặt khác, đây là những tính năng đã được yêu thích về Puppet:

  • truy cập vào trạng thái và lịch sử cấu hình trên toàn hệ thống (PuppetDB) thông qua API REST
  • khả năng giữ bản sao lưu của các tập tin bị ghi đè (filebuckets)
  • khả năng mã hóa một phần cấu hình Hiera ( .eyaml)

Trong số này, PuppetDB đối với tôi có vẻ quan trọng và hữu ích nhất (ví dụ như để tích hợp với các công cụ khác). Do đó, câu hỏi của tôi là: Ansible có gì đó giống với PuppetDB, tức là một thành phần cung cấp API, nơi nó có thể được hỏi "Gói nào được cài đặt trên máy chủ x ?" hoặc "Trên máy chủ nào được cài đặt gói y ?"

(Câu hỏi này đã được di chuyển từ StackOverflow ).

CẬP NHẬT Nhược điểm đáng kể của Puppet cho đến nay trải nghiệm của tôi: Không quá nhiều thực tế là nó đòi hỏi phải có một tác nhân (từ những gì tôi đã thấy, việc sử dụng Python của Ansible cũng giới thiệu một tác nhân thuộc dạng trình thông dịch Python ;-), nhưng rằng nó muốn đại lý của mình hoạt động như là rootduy nhất và luôn luôn.


Tò mò: làm thế nào bạn mong muốn một công cụ như Puppet (hoặc Chef hoặc CFEngine) có thể làm những gì nó làm mà không cần chạy như rootthế nào? Nó thay thế nhu cầu SA để đăng nhập và thực hiện mọi thứ thủ công, do đó nó phải có khả năng làm bất cứ điều gì SA có thể làm.
Gaius

@Gaius Vì một điều, tôi biết một người không có rootquyền truy cập trên cụm máy chủ, nhưng vẫn có thể sử dụng Ansible để quản lý một ứng dụng web lớn ở đó. Bên cạnh đó, có những SA không đăng nhập như root, nhưng sử dụng sudoít hơn thay vào đó.
Drux

Họ vẫn cần chạy các lệnh như root rồi. Nếu tác nhân đang chạy là một công cụ giải quyết cho bạn, thì bạn đang áp dụng sai công cụ
Gaius

Câu trả lời:


5

Câu trả lời trực tiếp là "không".

Ansible không có bất kỳ cơ sở dữ liệu nào, vì nó được điều hành bởi các nhà khai thác khác nhau từ các máy tính khác nhau và mục đích của nó là đảm bảo rằng các hệ thống đích ở trạng thái chính xác, như được chỉ định trong playbook.

Có một tùy chọn để đính kèm các phụ trợ bộ nhớ cache bên ngoài vào Ansible. Vì vậy, bạn có thể thiết lập redis làm bộ đệm của mình, Ansible sẽ điền nó với các sự kiện được thu thập trong quá trình chạy playbook và sau đó bạn có thể truy vấn redis cho chúng. Nhưng đó là giải pháp rất hạn chế, vì không có quá nhiều sự kiện được Ansible thu thập, ví dụ như không có thông tin nào về các gói đã cài đặt - bạn sẽ phải tự thu thập chúng một cách sử dụng set_factvới cacheabletùy chọn để đưa chúng vào bộ đệm ngoài.


1
Cám ơn. Tôi không hiểu "bởi vì" trong đoạn 2 của bạn: Con rối sẽ IMO cũng tuyên bố rằng "nó được điều hành bởi các nhà khai thác khác nhau từ các máy tính khác nhau và mục đích của nó là đảm bảo rằng các hệ thống đích ở trạng thái chính xác" ( chỉ có điều nó sẽ nói về các bảng kê khai thay vì các sách vở), nhưng nó sử dụng một cơ sở dữ liệu.
Drux

Tôi có nghĩa là "không có bất kỳ thành phần trung tâm / chia sẻ". Vì vậy, trong Ansible bạn không có bất kỳ thành phần trạng thái nào ngoại trừ hệ thống đích.
Konstantin Suvorov

Tôi thấy, điều đó có ý nghĩa.
Drux
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.