7 arch-linux debian shell-script stability ansible
我不想将自己标记为特定的配置管理器模块,例如 Ansible 的apt模块或yum模块。
是否有与发行版无关的配置管理软件,或者至少有一个与发行版无关的代码来为Arch Linux安装以下软件包?
我问这个是因为我没有找到合适的 Ansible 星系角色来在 Arch Linux 上安装 LAMP,并且以下适用于 Debian 的 Bash 脚本不适合 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
Run Code Online (Sandbox Code Playgroud)
小智 11
从技术上讲,Ansible 就是这样;因为它是无代理的;我用它来管理路由器、交换机、服务器等。
您似乎要求的是该package模块是否支持 Arch Linux?我懒得测试它是否支持 Arch;但如果它不存在,则总是有pacman模块......如果这不起作用......总是有编写你自己的模块。
你所说的是在生产环境中运行多个不同的发行版的一个更大的问题。长期管理会变得很痛苦。这就是为什么最好不要在生产中运行多个发行版的原因,因为从管理的角度(纯粹从代码)来看,需要做很多工作。解决此问题的最明显方法是将 Ansiblewhen与os_family以下结合使用:
apt:
name: apache2
when: ansible_facts['os_family'] == "Debian"
pacman:
name: nginx
when: ansible_facts['os_family'] == "Archlinux"
Run Code Online (Sandbox Code Playgroud)
我曾经遇到过必须在生产环境中管理 Debian 服务器和 CentOS 服务器的情况;最终我选择使用纯 Debian,因为:
无论如何,您也会遇到重大差异;例如:
httpd(RHEL) 与apache2(Debian)。/etc/default(Debian) 与/etc/sysconfig(RHEL)。systemd已经在很大程度上接管了。配置管理系统是一种将环境抽象为代码的方式;他们给你逻辑/条件来做你自己。
维护元包管理器在我看来是一项 Sisyphean 任务,因为有人必须在 Debian-likes 中维护某种“apache2”是 RHEL-likes(等)Rosetta Stone 中的“httpd”。
但是,Ansible有一个pacman模块,它专门用于使用 Ansible(您正在寻找的与 disto 无关的管理工具)来管理类似 Arch 的系统上的包。来自链接模块文档的示例部分:
- 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
Run Code Online (Sandbox Code Playgroud)