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