
ubuntu22搭建Ansible环境
1.KVM虚拟化安装
1.1 安装所需依赖包
sudo apt update
# 安装KVM虚拟机及管理工具
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils libguestfs-tools virt-viewer virt-manager virtinst
# 安装python API
sudo apt install python3-libvirt
安装包说明
qemu-kvm:即qemu+kvm,kvm负责cpu和内存的虚拟化,而qemu负责IO设备,如网卡和磁盘等的虚拟化。
libvirt-daemon-system:KVM管理工具,为不同的虚拟机监视器提供了统一的接口。
libvirt-clients: 包含了一组用于与 libvirt 库交互的命令行工具,包括virsh、virt-install,virt-clone
virsh: 用于虚拟机的创建,启动,停止,迁移,克隆,配置文件管理等操作。
virt-install:用于GuestOS安装
virt-clone:用于虚拟机克隆
bridge-utils:配置网桥
libguestfs-tools:虚拟机镜像管理工具,包括virt-cat、virt-edit、virt-ls、virt-rescue
virt-viewer:用于虚拟机控制台
virt-manager:图形界面管理KVM虚拟化
virtinst: 命令行工具,包括virt-install、virt-clone、virt-manager等。
python3-libvirt:libvirt库的Python 绑定,在Python中使用 libvirt 的功能,包括对虚拟机、存储池、网络等资源的管理,以及对虚拟化宿主机的监控和控制。
1.2 启动 libvirtd 服务,并设置为开机自启
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo systemctl status libvirtd
1.3 打开virtual machine manager界面,创建一台2核2G的模版机
创建完毕后需要修改网络,禁用cloud-init网络配置
sudo bash -c 'echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg'
进入 cd /etc/netplan/ 目录,删除默认网络配置文件
cd /etc/netplan/
rm -rf 50-cloud-init.yaml
创建新的配置文件 vim 01-network-manager-all.yaml。servera地址为100,serverb..f 依次递增
# 创建新的配置文件 01-network-manager-all.yaml,内容如下
network:
ethernets:
enp1s0:
dhcp4: false
addresses: [192.168.122.100/24]
gateway4: 192.168.122.1
nameservers:
addresses: [223.5.5.5,8.8.8.8]
version: 2
netplan apply 应用生效,然后将servera关机,再clone五台机器,分别修改其主机名和地址。
在宿主机上修改hosts文件,方便后续通过域名访问六台虚拟机。
root@servera:~# cat /etc/hosts
127.0.0.1 localhost
192.168.122.1 wxySer
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.122.100 servera servera.youdu.xin
192.168.122.101 serverb serverb.youdu.xin
192.168.122.102 serverc serverc.youdu.xin
192.168.122.103 serverd serverd.youdu.xin
192.168.122.104 servere servere.youdu.xin
192.168.122.105 serverf serverf.youdu.xin
配置宿主机对六台服务器的 ssh 免密登陆,并测试,确保宿主机能免密登陆到所有服务器上
# 在本地创建密ssh密钥对
ssh-keygen
# 选择默认,一直回车即可
# 查看 生成的 id_rsa id_rsa.pub 私钥和公钥
ls .ssh/
# 将公钥上传到需要免密登陆的服务器
ssh-copy-id root@servera
# 输入服务器的root密码
# ssh免密配置完毕
2.安装Ansible
sudo apt install -y ansible
# 查看版本
ansible --version
2.1 创建demo测试环境
mkdir demo
cd demo
# 创建主机清单文件
root@wxy-ser:~/demo# cat inventory
[myser]
servera
serverb
serverc
serverd
servere
serverf
# 配置此demo的ansible配置文件
root@wxy-ser:~/demo# cat ansible.cfg
[defaults]
inventory = ./inventory
remote_user = root
# host_key_checking = False
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
测试主机连通性(需要确保所有服务器ssh免密配置成功),若出现了如下图SUCCESS的回应,则OK
ansible all -m 'ping'
编写ansible脚本,统一下发宿主机的hosts配置文件到所有服务器
root@wxy-ser:~/demo# cat hosts.yaml
---
- name: Deploy customized /etc/hosts
hosts: all
become: yes
tasks:
- name: Generate /etc/hosts from template
template:
src: /etc/hosts
dest: /etc/hosts
mode: '0644'
运行该剧本,如下图,recap都为ok即可。ssh到任意一台虚拟机查看 /etc/hosts文件确认。
ansible-playbook hosts.yaml
环境搭建完毕,后续再做一些样例演示。
- 感谢你赐予我前进的力量