「IaC」- 配置管理 | Configuration-Management | Infrastructure as Code

该分类下保存了「配置管理」相关的内容。主要是涉及「配置分发」、「运维自动化」等等内容。虽然这些工具还有其他的用途,但是在这里(我的工作)这些工作主要用途还是用作「配置管理」和「运维自动化」方面的内容。既然是配置管理,这里肯定会包含一些「配置管理」的方法;

认识

在早期时

我们会借助 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

MetricsChefPuppetAnsibleSaltstack
1Availability
2Ease of SetupNot very easyNot very easyEasyNot very easy
3ManagementNot very easyNot very easyEasyEasy
4ScalabilityHighly ScalableHighly ScalableHighly ScalableHighly Scalable
5Configuration languageDSL(Ruby)DSL(PuppetDSL)YAML(Python)YAML(Python)
6InteroperabilityHighHighHighHigh
7Pricing (upto 100 nodes)$13700$11200-$19900$10,000$15,000(approx.)

Ansible

Chef

Puppet

SaltStack

官方手册

参考

Wikipedia/Comparison of open-source configuration management software