Có một phần mềm quản lý cấu hình distro-agnellect?


7

Tôi không muốn gắn nhãn cho các mô-đun quản lý cấu hình cụ thể như aptmô-đun hoặc mô-đun của Ansible yum.

Có một phần mềm quản lý cấu hình distro-agnellect, hoặc ít nhất một phần mềm có mã distro-agnellect để cài đặt các gói sau cho Arch Linux không?

Tôi hỏi điều này bởi vì tôi đã không tìm thấy vai trò thiên hà Ansible phù hợp để cài đặt LAMP trên Arch Linux và tập lệnh Bash sau cho Debian không phù hợp với Arch:

#!/bin/bash

apt update -y
apt upgrade ufw sshguard unattended-upgrades wget curl git zip unzip tree -y

ufw --force enable
ufw allow 22,25,80,443

apt upgrade lamp-server^ ssmtp  -y
apt upgrade python-certbot-apache  -y
apt upgrade php-{cli,curl,mbstring,mcrypt,gd} phpmyadmin  -y

Câu trả lời:


11

Về mặt kỹ thuật, Ansible là thế; bởi vì nó ít tác nhân; Tôi đã sử dụng nó để quản lý bộ định tuyến, chuyển mạch, máy chủ, v.v.

Những gì có vẻ như bạn đang yêu cầu là nếu packagemô-đun hỗ trợ Arch Linux? Tôi quá lười để kiểm tra nếu điều đó hỗ trợ Arch; nhưng nếu nó không luôn có pacmanmô-đun ... Và nếu nó không hoạt động ... Luôn có mô-đun riêng của bạn.

Những gì bạn đang nói mặc dù là một vấn đề lớn hơn với việc chạy nhiều bản phân phối khác nhau trong môi trường sản xuất . Nó trở nên đau đớn để quản lý lâu dài. Đây là lý do tại sao không nên chạy nhiều bản phân phối trong sản xuất, vì từ góc độ quản lý (hoàn toàn từ mã), đó là rất nhiều công việc. Cách rõ ràng nhất để giải quyết vấn đề này là sử dụng Ansible whenkết hợp với os_family:

    apt:
      name: apache2
    when: ansible_facts['os_family'] == "Debian"

    pacman:
      name: nginx
    when: ansible_facts['os_family'] == "Archlinux"

Tôi đã ở trong tình huống phải quản lý máy chủ Debian và máy chủ CentOS trong sản xuất; cuối cùng tôi đã lựa chọn sử dụng Debian thuần túy bởi vì:

  • Cơ sở mã cho CM đã bị cắt làm đôi (tất cả logic cho các quirks cụ thể của distro đã bị xóa).
  • Việc kiểm tra trở nên ít đau đớn hơn (nếu bạn không kiểm tra mã CM, thì bạn đã làm sai).

Bạn cũng sẽ gặp phải những khác biệt lớn; ví dụ:

  • Một số gói được đặt tên khác nhau; httpd(RHEL) so với apache2(Debian).
  • Các thư mục cấu hình "mặc định" khác nhau; /etc/default(Debian) so với /etc/sysconfig(RHEL).
  • Hệ thống init khác nhau; mặc dù systemdphần lớn đã tiếp quản
  • Không có SSH; ví dụ WinRM cho Windows.

Hệ thống quản lý cấu hình là một cách trừu tượng hóa môi trường thành mã; và họ cung cấp cho bạn logic / điều kiện để làm điều đó cho mình .


1
Các packagemô-đun chỉ gọi các module được định nghĩa trong ansible_pkg_mgrthực tế cho hệ thống đó. Vì vậy, bất kỳ hệ thống đóng gói mà Ansible hỗ trợ sẽ làm việc.
Michael Hampton

6

Việc duy trì một trình quản lý gói meta dường như là một nhiệm vụ của Sisyphean, vì ai đó sẽ phải duy trì một loại "apache2" nào đó trong lượt thích Debian là "httpd" trong Rosetta Stone (et cetera) Rosetta Stone.

Tuy nhiên, có một mô-đun pacman cho Ansible, được tạo ra nhằm mục đích sử dụng Ansible (công cụ quản lý bất khả tri mà bạn đang tìm kiếm) để quản lý các gói trên các hệ thống giống như Arch. Từ phần Ví dụ trong tài liệu của mô-đun được liên kết:

- name: Install package foo
  pacman:
    name: foo
    state: present

- name: Upgrade package foo
  pacman:
    name: foo
    state: latest
    update_cache: yes

- name: Remove packages foo and bar
  pacman:
    name: foo,bar
    state: absent

- name: Recursively remove package baz
  pacman:
    name: baz
    state: absent
    recurse: yes

2

gói là Ansible "Trình quản lý gói hệ điều hành chung".

Một tùy chọn sẽ bao gồm list_of_packages dành riêng cho hệ điều hành

- include_vars: "{{ item }}"
   with_first_found:
     - files:
         - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml"
         - "{{ ansible_distribution }}.yml"
         - "{{ ansible_os_family }}.yml"
         - "default.yml"
       paths: "{{ role_path }}/vars"

và cài đặt các gói

- package:
    state: present
    name: "{{ item }}"
  loop: "{{ list_of_packages }}"

2

Nix là một trình quản lý gói độc lập không liên kết chặt chẽ với bất kỳ os nào. Tôi sử dụng nó trên MacOS và Ubuntu https://nixos.org/nix/

Saltstack (Ansible compatitor) có tính trừu tượng đẹp hơn với pkg.installed và bạn không cần quan tâm hệ thống cơ bản là apt hoặc rpm hoặc arch ... (vẫn không đặt tên diff pkg nếu chúng khác trên hệ thống, ví dụ httpd hoặc apache2)

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.