如何升级由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。