如何升级由Ubuntu/Debian或CentOS Linux驱动的LXD VM
时间:2020-01-09 10:39:49 来源:igfitidea点击:
在CentOS Linux 7和Debian/Ubuntu Linux上有几十个虚拟机。
如何使用Ansible工具自动或按需升级所有这些虚拟机VM?
有两种方法可以升级LXD(Linux容器)VM。
两种方法都取决于使用/usr/bin/lxc命令。
方法1:使用shell脚本更新
语法非常简单:
/usr/bin/lxc exec vmNameHere -- command /usr/bin/lxc exec vmNameHere -- /usr/bin/apt-get -y upgrade /usr/bin/lxc exec vmNameHere -- /usr/bin/apt-get -y upgrade /usr/bin/lxc exec vmNameHere -- /usr/bin/yum -y update
接下来,您可以创建如下的shell脚本:
#!/bin/bash
# Purpose: Run given command inside the LXD vm
# Note: Must be run from host. Only tested on Ubuntu 16.04 LTS
# Author: { https://www.theitroad.local } under GPL v2.x+
# ----------------------------------------------------------------
cmd="$@"
for i in vm1 vm2 vm3 vm10
do
echo "[*** $i ***]"
/usr/bin/lxc exec $i -- $cmd
done
现在您要做的就是为基于Debian或Ubuntu Linux的vm运行命令,即传递apt-get命令/apt命令来更新VM:
$ ~/bin/script-name /usr/bin/apt-get update $ ~/bin/script-name /usr/bin/apt-get -y upgrade
如果您使用的是基于CentOS 7的VM,请通过yum命令:
$ ~/bin/script-name /usr/bin/apt-get /usr/bin/yum -y update
方法2使用Ansible devops/sysadmin自动化工具更新LXD VM
您可以按以下方式创建一个lxd-update.yml ansible剧本(Playbook)文件:
#
# Update host running on Debian/Ubuntu
#
- name: Updating host using apt
apt:
update_cache: yes
upgrade: dist
#
# Now update VMs powered by Debian/Ubuntu Linux
#
- name: Run lxc to update debian/ubuntu vms repo
command: /usr/bin/lxc exec {{ item }} -- /usr/bin/apt-get -y update
with_items:
- ubuntuvm1
- debianvm2
- ubuntuvm3
- name: Run lxc to upgrade debian/ubuntu vms pacakges
command: /usr/bin/lxc exec {{ item }} -- /usr/bin/apt-get -y upgrade
with_items:
- ubuntuvm1
- debianvm2
- ubuntuvm3
#
# Now update VMs powered by CentOS 7 Linux
#
- name: Run lxc to upgrade centos vms
command: /usr/bin/lxc exec {{ item }} -- /usr/bin/yum -y update
with_items:
- centosvm4
- centosvm5
- centosvm6
您可以使用ansible-playbook命令如下运行它:
$ ansible-playbook -i my-hosts lxd-update.yml
最后一种方法易于使用且易于扩展。
因此,我建议您使用Ansible手册来更新LXD驱动的VM。

