首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Packer shell provisioner报告成功运行,但没有做任何事情

Packer shell provisioner报告成功运行,但没有做任何事情
EN

Stack Overflow用户
提问于 2018-06-21 23:20:14
回答 1查看 1.3K关注 0票数 0

我试图使用packer简单地启动一个VM,运行一个shell脚本,然后存储一个新的映像。我使用Azure,当我运行packer时,它似乎成功地完成了,但是当我从新映像生成VM时,脚本似乎没有效果。该脚本仅用于测试,应该在主目录中创建一个文件,但当我登录时,没有任何内容。

下面是我的packer配置文件:

代码语言:javascript
复制
 {
   "builders": [
     {
       "type": "azure-arm",

       "client_id": "...",
       "client_secret": "...",
       "subscription_id": "...",
       "tenant_id": "...",

       "os_type": "Linux",
       "image_publisher": "Canonical",
       "image_offer": "UbuntuServer",
       "image_sku": "16.04-LTS",

       "ssh_pty" : "true",

       "capture_container_name": "container",
       "capture_name_prefix": "prefix",
       "resource_group_name": "rg",
       "storage_account": "sa",

       "location": "West US"
     }
   ],
   "provisioners": [
     {
       "type": "shell",
       "script": "test.sh"
     }
   ]
 }

下面是我的脚本(test.sh):

代码语言:javascript
复制
#!/bin/bash -e
echo "This is only a test!" >> ~/test_script_output.txt

这是构建的输出:

代码语言:javascript
复制
azure-arm output will be in this color.

==> azure-arm: Running builder ...
    azure-arm: Creating Azure Resource Manager (ARM) client ...
==> azure-arm: Creating resource group ...
==> azure-arm:  -> ResourceGroupName : 'packer-Resource-Group-4zt0csjrzl'
==> azure-arm:  -> Location          : 'West US'
==> azure-arm:  -> Tags              :
==> azure-arm: Validating deployment template ...
==> azure-arm:  -> ResourceGroupName : 'packer-Resource-Group-4zt0csjrzl'
==> azure-arm:  -> DeploymentName    : 'pkrdp4zt0csjrzl'
==> azure-arm: Deploying deployment template ...
==> azure-arm:  -> ResourceGroupName : 'packer-Resource-Group-4zt0csjrzl'
==> azure-arm:  -> DeploymentName    : 'pkrdp4zt0csjrzl'
==> azure-arm: Getting the VM's IP address ...
==> azure-arm:  -> ResourceGroupName   : 'packer-Resource-Group-4zt0csjrzl'
==> azure-arm:  -> PublicIPAddressName : 'packerPublicIP'
==> azure-arm:  -> NicName             : 'packerNic'
==> azure-arm:  -> Network Connection  : 'PublicEndpoint'
==> azure-arm:  -> IP Address          : '000.000.000.000' <redacted>
==> azure-arm: Waiting for SSH to become available...
==> azure-arm: Connected to SSH!
==> azure-arm: Provisioning with shell script: test.sh
==> azure-arm: Querying the machine's properties ...
==> azure-arm:  -> ResourceGroupName : 'packer-Resource-Group-4zt0csjrzl'
==> azure-arm:  -> ComputeName       : 'pkrvm4zt0csjrzl'
==> azure-arm:  -> OS Disk           : 'https://sa.blob.core.windows.net/images/pkros4zt0csjrzl.vhd'
==> azure-arm: Powering off machine ...
==> azure-arm:  -> ResourceGroupName : 'packer-Resource-Group-4zt0csjrzl'
==> azure-arm:  -> ComputeName       : 'pkrvm4zt0csjrzl'
==> azure-arm: Capturing image ...
==> azure-arm:  -> ResourceGroupName : 'packer-Resource-Group-4zt0csjrzl'
==> azure-arm:  -> ComputeName       : 'pkrvm4zt0csjrzl'
==> azure-arm: Deleting resource group ...
==> azure-arm:  -> ResourceGroupName : 'packer-Resource-Group-4zt0csjrzl'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 17:59:50

好吧,我有两件事是任务。

第一,我必须用waagent解除,这样VM才能正确启动。显然,这是天蓝色臂型的要求。。第二:现在用户帐户被删除了,我不得不更改脚本以影响主目录之外的内容。所以我让它在驱动器根目录上创建一个新文件。

这是我的新的供应科:

代码语言:javascript
复制
"provisioners": [
  {
    "type": "shell",
    "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo '{{ .Path }}'",
    "script": "test.sh",
    "skip_clean": "true"
  },
  {
    "type": "shell",
    "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
    "inline_shebang": "/bin/sh -x",
    "inline": [
      "/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync"
    ],
    "skip_clean": "true"
  }
]

这是我的新剧本:

代码语言:javascript
复制
#!/bin/bash -e
echo "This is only a test!" >> /test_script_output.txt

附带注意:我不得不在每个提供程序中添加"skip_clean“,因为它每次都不会删除脚本。我还不知道为什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50978682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档