如何在晚上关闭Microsoft Azure VM

时间:2015-03-01 06:39:27

标签: azure virtual-machine

有一段时间(我认为超过一年)我从一个人那里听说有可能在某个时刻自动将你的VM在微软天蓝色中转动,并在某个时刻也开启它。所以我想,我可以使用这种机制来关闭我的Owncloud服务器,因为我不使用它,它可以减少计费。但是现在当我在Microsoft Azure面板中时,我无法在任何地方找到此选项...有人可以指出一些有关此功能的信息吗?我真的会帮助你。

4 个答案:

答案 0 :(得分:0)

可能,但它需要Azure cmdlet脚本作业。

请查看有关分步介绍的链接:http://clemmblog.azurewebsites.net/using-azure-automation-start-und-stop-virtual-machines-schedule/

作为一种解决方法,如果您的任务不需要位于VM中,则可以将Azure Scheduler视为简单的工作。它非常可靠。 https://msdn.microsoft.com/en-us/library/azure/dn495651.aspx

答案 1 :(得分:0)

您可以按照以下步骤实现:

  • 登录Azure管理门户
  • 创建新的Runbook:添加 - >应用服务 - >自动化 - > Runbook - >来自Gallery。查找并选择模板" Azure自动化工作流以计划停止所有Azure虚拟机"
  • 输入一些数据。在被要求
  • 时创建一个新的自动化帐户
  • 基于具有coadministrator privileges
  • 的现有用户创建新的Windows PowerShell凭据
  • 创建Runbook编辑凭据名称和Azure订阅名称
  • 测试&发布Runbook
  • 添加新计划并根据您的需要进行配置

与我们使用它自动关闭VM的方式相同,我们可以将其打开。打开/关闭它的详细步骤描述为here

答案 2 :(得分:0)

有几种选择:

  1. 编写一个简单的azure power shell脚本并自动运行它以在指定时间运行。
  2. 如果您只需要在需要远程会话时运行虚拟机,请尝试http://usevm.com 1 。它是一个允许您轻松管理Azure中的VM的网站,包括将其关闭。 应用程序还不支持自动切换,但有一些计划。
  3. 1。我在usevm.com工作

答案 3 :(得分:0)

我也遇到了自动关闭 Linux 虚拟机的问题:我不希望它按计划进行,而是希望虚拟机在我不使用它时解除分配。为了实现这一点,我写了一个脚本,它将为我做。该脚本位于下方,I also wrote a blog about setting it up and using it

该脚本实质上检查VM是否已经启动至少10分钟,以及最后一次SSH连接是否至少在15分钟前关闭(尽管您可以调整时间)。如果满足这些条件,它将取消分配VM。该脚本要求它可以访问Azure服务主体以管理Azure中的Resource Manager VM,并且应该配置为每分钟左右在cron作业中运行。

#!/bin/bash

### SCRIPT CONFIGURATION PARAMETERS
SPNAME="<spNameGUID>"
TENANT="<tenantGUID>"
PASSWORD=`cat pass.txt`

VMNAME=`cat /etc/hostname`
RESOURCEGROUP="${VMNAME}"

SSHTIMEOUT=15
MINSYSUPTIMEMS=600000
TEMPDIR=/tmp/autoshutdown
TEMPFILE="${TEMPDIR}/timetest"
### END SCRIPT CONFIGURATION PARAMETERS

UPTIME=`awk '{print $1*1000}' /proc/uptime`
NUMSSHCONNS=`ps auxwww | grep sshd: | grep -v grep | wc -l`

function dologin {
    azure login -u "${SPNAME}" -p `cat pass.txt` --service-principal --tenant "$TENANT"
}

function dodeallocate {
    echo "Deallocating VM..."
    dologin
    azure vm deallocate $RESOURCEGROUP $VMNAME
    exit
}

while test $# -gt 0
do
    case "$1" in
        --test)
            echo "Testing azure login..."
            dologin
            exit $?
            ;;
        --force)
            echo "Shutting down vm without testing parameters..."
            dodeallocate
            exit $?
            ;;
    esac
    shift
done

# If there are SSH connections, write the tempfile and exit
if [ $NUMSSHCONNS -gt 0 ]; then
    mkdir -p $TEMPDIR
    touch $TEMPFILE
    exit 0
fi

# Check the system uptime, and the time of the last SSH connection
if [ $UPTIME -gt $MINSYSUPTIMEMS ] && test `find ${TEMPFILE} -mmin +${SSHTIMEOUT}`; then
    dodeallocate
    exit $?
fi