「Configuration Management」- 配置管理

问题描述

该分类下保存了「配置管理」相关的内容。主要是涉及「配置分发」、「运维自动化」等等内容。

虽然这些工具还有其他的用途,但是在这里(我的工作)这些工作主要用途还是用作「配置管理」和「运维自动化」方面的内容。

既然是配置管理,这里肯定会包含一些「配置管理」的方法。

解决方案

在早期时(原始时期)

我们会借助 Shell 脚本来完成批量主机管理:

#!/bin/sh

IP_ADDRESSES=(10.10.50.172 10.10.50.171 10.10.50.170)
NEW_IP_ADDRESSES=(10.10.50.217 10.10.50.218 10.10.50.219)
HOSTNAME_LIST=(esclus-01 esclus-02 esclus-03)

for i in "${!IP_ADDRESSES[@]}"
do
    echo "############################# ${IP_ADDRESSES[$i]}"

    # 复制公钥
    sshpass -p "your-password" ssh-copy-id root@"${IP_ADDRESSES[$i]}"

    # 修改主机名
    ssh root@"${IP_ADDRESSES[$i]}" hostnamectl set-hostname "${HOSTNAME_LIST[$i]}"
    ssh root@"${IP_ADDRESSES[$i]}" "echo >> /etc/hosts; echo 127.0.0.1 ${HOSTNAME_LIST[$i]} >> /etc/hosts"

    ssh root@"${IP_ADDRESSES[$i]}" \
        nmcli connection add connection.id ens33 \
            connection.type 802-3-ethernet ipv4.addresses "${NEW_IP_ADDRESSES[$i]}/24" \
            ipv4.dns "'10.10.50.7 10.10.50.6'" ipv4.gateway "10.10.50.1" \
            ipv4.method manual \
            ifname ens33
    ssh -oServerAliveInterval=2 -oServerAliveCountMax=2 root@"${IP_ADDRESSES[$i]}" nmcli connection up ens33
done

Chef vs Puppet vs Ansible vs Saltstack

Ansible vs. Puppet: The Key Differences to Know
Chef vs Puppet vs Ansible vs Saltstack: Which One to Choose | Edureka

Metrics Chef Puppet Ansible Saltstack
1 Availability
2 Ease of Setup Not very easy Not very easy Easy Not very easy
3 Management Not very easy Not very easy Easy Easy
4 Scalability Highly Scalable Highly Scalable Highly Scalable Highly Scalable
5 Configuration language DSL(Ruby) DSL(PuppetDSL) YAML(Python) YAML(Python)
6 Interoperability High High High High
7 Pricing (upto 100 nodes) $13700 $11200-$19900 $10,000 $15,000(approx.)

Ansible

Chef

Puppet

SaltStack

官方手册

参考文献

Wikipedia/Comparison of open-source configuration management software