Git Product home page Git Product logo

azure-linux-extensions's Introduction

Linux extensions for Microsoft Azure IaaS

This project provides the source code of Linux extensions for Microsoft Azure IaaS.

VM Extensions are injected components authored by Microsoft and Partners into Linux VM (IaaS) to enable software and configuration automation.

You can read the document about virtual machine extensions and features.

Extension List

Name Lastest Version Description
Custom Script 1.5 Allow the owner of the Azure Virtual Machines to run customized scripts in the VM
DSC 2.71 Allow the owner of the Azure Virtual Machines to configure the VM using Windows PowerShell Desired State Configuration (DSC) for Linux
OS Patching 2.0 Allow the owner of the Azure VM to configure the Linux VM patching schedule cycle
VM Access 1.5 Provide several ways to allow owner of the VM to get the SSH access back
OMS Agent 1.0 Allow the owner of the Azure VM to install the omsagent and attach it to an OMS workspace
Diagnostic 3.0.129 Allow the owner of the Azure Virtual Machines to obtain diagnostic data for a Linux virtual machine
Backup 1.0.9124.0 Provide application consistent backup of the virtual machine(Needs to be used in conjunction with Azure Backup)

Contributing

Please refer to the Contribution Guide.

Known Issues

  1. When you run the PowerShell command "Set-AzureVMExtension" on Linux VM, you may hit following error: "Provision Guest Agent must be enabled on the VM object before setting IaaS VM Access Extension".
  • Root Cause: When you create the Linux VM via portal, the value of provision guest agent on the VM is not always set to "True". If your VM is created using PowerShell or using the Azure new portal, you will not see this issue.

  • Resolution: Add the following PowerShell command to set the ProvisionGuestAgent to "True".

$vm = Get-AzureVM -ServiceName 'MyServiceName' -Name 'MyVMName'
$vm.GetInstance().ProvisionGuestAgent = $true

Support

The extensions in this repository are tested against Python 2.7 and higher. The extensions in this repository use OpenSSL 1.0 and higher.


This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

azure-linux-extensions's People

Contributors

aaronrm avatar abenbachir avatar andyliuliming avatar arisettisanjana avatar aswatt avatar bingosummer avatar boumenot avatar bpramod avatar canfikret avatar diastro avatar ejarvi avatar hestolz avatar jamvar avatar jasonzio avatar lagalbra avatar lizzha avatar mearvind avatar narinem avatar nidhanda avatar peizhen-w avatar prambms avatar shkhisti avatar shpimpal avatar simathih avatar soumyapattnaik avatar thperapp avatar vermashi avatar vityagi avatar vrdmr avatar yuezh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

azure-linux-extensions's Issues

DSCForLinux on AzureStack unknown exit code 127

This extension did not ship with Azure Stack but I went ahead and tried it out by downloading the repo here. I'm getting pretty far as the extension is actually running in the VM but exiting with code 127.
dscforlinuxerror

azure-linux-extensions / VMAccess / does not work

I am trying to follow section 2.2.2 @ https://github.com/Azure/azure-linux-extensions/tree/master/VMAccess

However, I keep encountering the below error:

2016/03/08 10:31:03 ERROR: File "/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-1.4.0.0/./vmaccess.py", line 96, in enable
2016/03/08 10:31:03 ERROR: _set_user_account_pub_key(protect_settings, hutil)
2016/03/08 10:31:03 ERROR: File "/var/lib/waagent/Microsoft.OSTCExtensions.VMAccessForLinux-1.4.0.0/./vmaccess.py", line 174, in _set_user_account_pub_key
2016/03/08 10:31:03 ERROR: if cert_txt and cert_txt.strip().lower().startswith("ssh-rsa"):
2016/03/08 10:31:03 ERROR:AttributeError: 'list' object has no attribute 'strip'
2016/03/08 10:31:03 ERROR:

My PEM file contents look like below.

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20160308"
AAAAB3NzaC1yc2EAAAABJQAAAQEAtHsEdGFL+CrgYH7ADFZMf262Vpnu8v4VUBZ1
qShdgD0cj1aAoNA/mqZ9aYMta8attiEiqnqDQ9FodYYs9QnySD7ik90NKj5Hoa2Q+l5Ra
wPq3+zzgyp6nQJkMPgI9JxzXdQYaIoW9jWm9x0ofEZiNhA8hpAYDlh0vYWzmPiHi
JilaZ7OHTyhVvWARelN5zkQAQ0eH5WJtEx6v2XZglXcdGBvT8Q==
---- END SSH2 PUBLIC KEY ----

Please advise.

LAD shouldn't always kill mdsd process by 'kill -9'

LAD uses mdsd for its monitoring. mdsd is designed such that when it receives signals like SIGTERM, it will handle the signal, clean itself up, and exit.

However, the current LAD design is: when it wants to stop the mdsd process (like disable/uninstall time), it always send signal 9 to mdsd, which kills the process immediately, without giving time for mdsd to clean itself up.

Expected: LAD should do something similar to what "start-stop-daemon --stop --retry=TERM/30/KILL/15 mdsd" does. please check the manual page of 'start-stop-daemon'. Basically: it will send SIGTERM to mdsd, poll until either mdsd exits or timeout in 30s; if mdsd is still running, send SIGKILL to mdsd, poll until mdsd exits or timeout in 15s.

DSCForLinux - version reported doesn't work when installing

Maybe this should be listed at Azure CLI?

azure vm extension-image list-versions westus Microsoft.OSTCExtensions DSCForLinux

reports version 2.0.0.0. When you try to install it:

azure vm extension set -o 2.0.0.0, it says typeHandlerVersion is invalid.

You have to use 2.0 as the version. How should the average user figure this out?

[docs] azure vm extension set: best practice

we should always tell users to use autoUpgradeMinor version (or 1.* syntax) in our documentation.

it looks like many READMEs in this repo are not doing that. I know we started to fix ARM quickstart templates gallery. we should fix this repo as well.

CustomScriptForLinux - Support setting environment variables within inline scripts

When trying to set an environment variable through inline script. Example:

    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2015-06-15",
      ...
      "properties": {
        "publisher": "Microsoft.OSTCExtensions",
        "type": "CustomScriptForLinux",
        "typeHandlerVersion": "1.3",
        "settings": {
          "commandToExecute": "[concat('export ENV_VARIABLE=', parameters('SOME-VALUE'))]"
        }
      }
    }

You get this error:

2015/11/24 20:24:23 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Failed to launch script with error: [Errno 2] No such file or directory,stacktrace: Traceback (most recent call last):
2015/11/24 20:24:23 ERROR:  File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.3.0.1/customscript.py", line 320, in run_script
2015/11/24 20:24:23 ERROR:    stderr=err_out)
2015/11/24 20:24:23 ERROR:  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
2015/11/24 20:24:23 ERROR:    errread, errwrite)
2015/11/24 20:24:23 ERROR:  File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
2015/11/24 20:24:23 ERROR:    raise child_exception
2015/11/24 20:24:23 ERROR:OSError: [Errno 2] No such file or directory
2015/11/24 20:24:23 ERROR:
2015/11/24 20:24:23 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Enable,failed,1,Lanch script failed: [Errno 2] No such file or directory

And this is because, custom scripts are executed via:

         child = subprocess.Popen(args,
                                 cwd = download_dir,
                                 stdout=std_out,
                                 stderr=err_out)

(from https://github.com/Azure/azure-linux-extensions/blob/master/CustomScript/customscript.py - line 315)

Cause the scripts are executed in the context of Popen. You can't execute any shell commands such as export envvar=value.

Suggested workarounds:

  • Enable shell commands by setting shell=True argument on Popen
  • Update inline scripts to bash -c 'export ENV_VARABLE=VALUE'
  • At the very minimum, update documentation

Also, please fix the typo in the error message: Lanch script failed

[CustomScript] Extension Does Not Support Hot Storage

v1.5.2.0.

The extension failed to fetch a script from hot storage, and failed with "The value for one of the HTTP headers is not in the correct format."

The contract when communicating with blob storage should be consistent when communicating between the various flavors, but there appears to be a break down with hot storage. It's unclear where the error is, and more investigation is needed.

SELinux and DSC

Hi

I am noticing errors in the cron log for what seems to be the consistencyinvoker script with SELinux, which would make sense why I am not seeing the regular consistency checks show up via Azure Automation. I am using RHEL 7.2

Apr  4 18:39:01 localhost crond[4736]: (*system*) RELOAD (/etc/crontab)
Apr  4 18:39:01 localhost crond[4736]: ((null)) Unauthorized SELinux context=system_u:system_r:system_cronjob_t:s0-s0:c0.c1023 file_context=system_u:object_r:etc_t:s0 (/etc/crontab)
Apr  4 18:39:01 localhost crond[4736]: (root) FAILED (loading cron table)
Apr  4 18:40:01 localhost crond[4736]: (*system*) RELOAD (/etc/crontab)
Apr  4 18:40:01 localhost crond[4736]: ((null)) Unauthorized SELinux context=system_u:system_r:system_cronjob_t:s0-s0:c0.c1023 file_context=system_u:object_r:etc_t:s0 (/etc/crontab)
Apr  4 18:40:01 localhost crond[4736]: (root) FAILED (loading cron table)


[root@shorroshvm cron.d]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

*/30 * * * * root /opt/omi/bin/ConsistencyInvoker

I have installed the DSC linux via the register mode on the extension, is there some extra configuration required to get selinux and DSC to play properly? I was hoping that this would be built in to the extension script.

Thanks
Matt

incorrect padding

Hello,
I'm running a test sh script on my linux vm on azure but I keep getting an "incorrect padding" error. Not sure where to look to fix this. Could this be an error in the command I'm using ?
I'm using cmd:
azure vm extension set fennec CustomScriptForLinux Microsoft.OSTCExtensions 1.3 -i '{"fileUris":["http://blobaddress/scripts/script.sh"],"commandToExecute":"sh script.sh"}' -t '{"storageAccountName":"$AZURE_STORAGE_ACCOUNT","storageAccountKey":"$AZURE_STORAGE_ACCESS_KEY"}'

My script does get imported to my VM and the Portal also sees it being executed..but I get the following error status:
[{"status": {"status": "failed", "formattedMessage": {"lang": "en-US", "message": "Enable failed: Incorrect padding"}, "operation": "Enable", "code": "0", "name": "Microsoft.OSTCExtensions.CustomScriptForLinux"}, "version": "1.0", "timestampUTC": "2015-07-15T09:10:37Z"}]

Error msg on Azure Portal: "Enable failed: Incorrect padding"

Any tips on that ? It feels I'm missing a basic step or something..

Thx!

Problem on extension of custom script

mrseq is created before the execution of custom script extension. If VM fails to download the script, the custom script will not be executed since mrseq is created and has sequence number 0. Please refer to the logs.

2015/01/27 05:50:33 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]sequence number is 0
2015/01/27 05:50:33 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]setting file path is/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.1/config/0.settings
2015/01/27 05:50:33 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]JSON config: {"runtimeSettings":[{"handlerSettings":{"publicSettings":{"fileUris":["https://raw.githubusercontent.com/rlwu607/docs/master/mystart.py"], "commandToExecute": "python mystart.py" }}}]}
2015/01/27 05:50:33 ERROR:Reading from file mrseq Exception is [Errno 2] No such file or directory: 'mrseq'
2015/01/27 05:50:33 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]set most recent sequence number to 0
2015/01/27 05:50:33 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Downloading scripts from external links...
2015/01/27 05:52:41 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Failed to download external file with uri:https://raw.githubusercontent.com/rlwu607/docs/master/mystart.pywith error:<urlopen error [Errno 110] Connection timed out>
2015/01/27 05:52:41 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Failed to enable the extension with error: <urlopen error [Errno 110] Connection timed out>, stack trace: Traceback (most recent call last):
2015/01/27 05:52:41 ERROR: File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.1/installer/handle.py", line 102, in enable
2015/01/27 05:52:41 ERROR: download_external_files(blob_uris, hutil._context._seq_no, cmd, hutil)
2015/01/27 05:52:41 ERROR: File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.1/installer/handle.py", line 193, in download_external_files
2015/01/27 05:52:41 ERROR: download_external_file(uri, seqNo, command, hutil)
2015/01/27 05:52:41 ERROR: File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.1/installer/handle.py", line 201, in download_external_file
2015/01/27 05:52:41 ERROR: download_and_save_file(uri, file_path)
2015/01/27 05:52:41 ERROR: File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.1/installer/handle.py", line 209, in download_and_save_file
2015/01/27 05:52:41 ERROR: src = urllib2.urlopen(uri)
2015/01/27 05:52:41 ERROR: File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
2015/01/27 05:52:41 ERROR: return _opener.open(url, data, timeout)
2015/01/27 05:52:41 ERROR: File "/usr/lib/python2.7/urllib2.py", line 404, in open
2015/01/27 05:52:41 ERROR: response = self._open(req, data)
2015/01/27 05:52:41 ERROR: File "/usr/lib/python2.7/urllib2.py", line 422, in _open
2015/01/27 05:52:41 ERROR: '_open', req)
2015/01/27 05:52:41 ERROR: File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
2015/01/27 05:52:41 ERROR: result = func(*args)
2015/01/27 05:52:41 ERROR: File "/usr/lib/python2.7/urllib2.py", line 1222, in https_open
2015/01/27 05:52:41 ERROR: return self.do_open(httplib.HTTPSConnection, req)
2015/01/27 05:52:41 ERROR: File "/usr/lib/python2.7/urllib2.py", line 1184, in do_open
2015/01/27 05:52:41 ERROR: raise URLError(err)
2015/01/27 05:52:41 ERROR:URLError: <urlopen error [Errno 110] Connection timed out>
2015/01/27 05:52:41 ERROR:

2015/01/27 05:54:31 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]sequence number is 0
2015/01/27 05:54:31 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]setting file path is/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.1/config/0.settings
2015/01/27 05:54:31 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]JSON config: {"runtimeSettings":[{"handlerSettings":{"publicSettings":{"fileUris":["https://raw.githubusercontent.com/rlwu607/docs/master/mystart.py"], "commandToExecute": "python mystart.py" }}}]}
2015/01/27 05:54:31 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Current sequence number, 0, is not greater than the sequnce number of the most recent executed configuration. Exiting...

Issuing reboot from CustomScript hangs resource group deployment

I noticed that when I initiate a reboot from a script, the resource group deployment hangs. I'm trying to reboot a machine from the CustomScript extension and then continue execution of a different script after the reboot; all as part of the same resource group template deployment.

Installing extensions on Linux machines results in failure

I have been trying to extend the ARM template that installs a Kafka cluster on Ubuntu machines.
Original sample: https://github.com/Azure/azure-quickstart-templates/tree/master/kafka-ubuntu-multidisks

However on executing the template I often see the execution flaky resulting in these error messages marking the VM extension installation a failed task. What's the best way for me to look at the failure reason?

Often run into this error, but some times does not happen on retries. 
{
    "status": "Failed",
    "error": {
        "code": "ResourceDeploymentFailure",
        "message": "The resource operation completed with terminal provisioning state 'Failed'.",
        "details": [
            {
                "code": "VMArtifactRepositoryInternalError",
                "message": "An internal error occurred while retrieving the VM artifact data from the artifact repository."
            }
        ]
    }
}

Some times I also get this: 
{
    "status": "Failed",
    "error": {
        "code": "ResourceDeploymentFailure",
        "message": "The resource operation completed with terminal provisioning state 'Failed'.",
        "details": [
            {
                "code": "VMExtensionProvisioningError",
                "message": "VM has reported a failure when processing extension 'chefclient'. Error message: \"private key does not match certificate - Check log file for details\"."
            }
        ]
    }
}

README latest versions go out of date easily

It's probably not a good idea to list a latest version in the README:

  1. the information goes out-of-date very easily
  2. a version number like 1.5.2.0 cannot be used in ARM templates or CLI. API allows only major.minor precision. so it's almost useless.

therefore I suggest listing versions only in Changelog for information purposes.

image

Unterminated quoted string

Going off the example found here https://github.com/Azure/azure-linux-extensions/tree/master/CustomScript, I copied that into a script and added the storage account and key. I uploaded my script that adds the fqdn, updates dns servers, adds the saltstack repo and installs salt-minion. The idea being this would bootstrap all my systems, sadly what I wind up getting is the following:

Status : Failed
StatusCode : OK
RequestId : 09b95e19-c888-42e9-b922-0afda56f3330
Output :
Error : {
"Details": [],
"InnerError": null,
"Code": "VMExtensionProvisioningError",
"Message": "VM has reported a failure when processing extension 'CustomScriptForLinux'. Error message: "Script returned an error.\n---stdout---\n\n---errout---\nsetup-script.sh: 17: setup-script.sh: Syntax error: Unterminated quoted
string\n\n".",
"Target": null
}
StartTime : 1/6/2016 12:56:14 PM -06:00
EndTime : 1/6/2016 12:56:38 PM -06:00
TrackingOperationId : 920f6590-a769-4312-bc5e-e46b7d631e9c

Additionally I never see the folders listed in the troubleshooting section show up, there is a customlinuxscript folder for v 1.3.whatever, not the 1.4 that I pass in, based on what the doc says I should see that I think.

this bash script that this should download and run does in fact run locally just fine, additionally we can wget it and run it just fine, so i'm inclined to think there is a different problem. One of the fun things I've noticed as I've been working with azure/powershell is the errors returned are not always the actual errors that are occurring.

[LAD] syslog messages are not collected on SLES 11 by default

It's because on SLES 11, the default syslog configuration is for syslog-ng, not for rsyslogd. LAD (mdsd actually) requires rsyslogd to collect syslog messages, so the syslog configuration on SLES 11 needs to be changed explicitly. It's just a simply matter of running the following command, before restarting syslog. This better be done by diagnostic.py automatically.

$ echo SYSLOG_DAEMON="rsyslogd" >> /etc/sysconfig/syslog

The above command should be done only when there's no line in /etc/sysconfig/syslog, matching the above pattern. This better/should be done before restarting syslog service on SLES 11 in diagnostic.py.

This issue was discovered from discussion with Dmitry Shmulevich @dmitsh from Azure Security team.

Consistency Check stuck in Azure Automation

Hi

I am doing some deployments with RHEL 7.2 using the DSC extension to register to Azure Automation and on occasion I will see the Consistency Check show In Progress (will last forever). When I go on the box to check the logs I see no errors in the dsc.log, however when I try to run any of the *.py scripts in the /opt/microsoft/dsc/Scripts folders I receive the following error:

[root@x Scripts]# ./TestDscConfiguration.py
instance of OMI_Error
{
OwningEntity=OMI:CIMOM
MessageID=OMI:MI_Result:1
Message=A general error occurred, not covered by a more specific error code.
MessageArguments={}
PerceivedSeverity=7
ProbableCause=0
ProbableCauseDescription=Unknown
CIMStatusCode=1
OMI_Code=1
OMI_Category=0
OMI_Type=MI
OMI_ErrorMessage=A general error occurred, not covered by a more specific error code.
}

/opt/omi/bin/omicli: result: MI_RESULT_FAILED
/opt/omi/bin/omicli: result: A general error occurred, not covered by a more specific error code.

Executions of any of the DSC scripts result in this in the omiserver.log

2016/05/05 01:14:06 [3080,3080] ERROR: null(0): EventId=20000 Priority=ERROR AgentMgr_HandleRequest failed for namespace: root/Microsoft/DesiredStateConfiguration
2016/05/05 01:14:20 [3080,3080] WARNING: null(0): EventId=30042 Priority=WARNING cannot open shared library: {/opt/omi/lib/libdsccore.so}: /lib64/libnssutil3.so: version NSSUTIL_3.21' not found (required by /lib64/libnss3.so) 2016/05/05 01:14:20 [3080,3080] WARNING: null(0): EventId=30041 Priority=WARNING cannot open shared library: {dsccore}: dsccore: cannot open shared object file: No such file or directory 2016/05/05 01:14:20 [3080,3080] WARNING: null(0): EventId=30065 Priority=WARNING failed to open provider library: dsccore 2016/05/05 01:14:20 [3080,3080] ERROR: null(0): EventId=20000 Priority=ERROR AgentMgr_HandleRequest failed for namespace: root/Microsoft/DesiredStateConfiguration 2016/05/05 01:15:22 [3080,3080] WARNING: null(0): EventId=30042 Priority=WARNING cannot open shared library: {/opt/omi/lib/libdsccore.so}: /lib64/libnssutil3.so: versionNSSUTIL_3.21' not found (required by /lib64/libnss3.so)
2016/05/05 01:15:22 [3080,3080] WARNING: null(0): EventId=30041 Priority=WARNING cannot open shared library: {dsccore}: dsccore: cannot open shared object file: No such file or directory
2016/05/05 01:15:22 [3080,3080] WARNING: null(0): EventId=30065 Priority=WARNING failed to open provider library: dsccore
2016/05/05 01:15:22 [3080,3080] ERROR: null(0): EventId=20000 Priority=ERROR AgentMgr_HandleRequest failed for namespace: root/Microsoft/DesiredStateConfiguration

I am able to resolve the error though by simply restarting the OMI service, it seems like the consistency check is hung somehow. Any ideas on what is causing this bug or to troubleshoot further?

Thanks,
Matt Shorrosh

[docs] CustomScript docs update

the readme currently points to an explicitly outdated article.

we probably have docs about this in azure.com/documentation, it would be good to link to those.

image

LAD should report proper extension version

In a VM I deployed on 5/23/2016 Ubuntu 14.04 (5/17/2016 release), with waagent 2.0.16 and LinuxDiagnostics (LAD) 2.3.9, I found misleading version information in the LAD extension.log file. see details below.

  • What's in the log: the version is "1.0" in HandlerEnvironment.json, and HanderManifest.json.
  • What's expected from a user point of view: as a user of LAD, when looking at extension.log, I am expecting to see something like "Microsoft.OSTCExtensions.LinuxDiagnostic-2.3" or "Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9" because that's the version I am using.

Log file:
2016/05/23 17:31:28 [Microsoft.OSTCExtensions.LinuxDiagnostic-1.0]sequence number is 0
2016/05/23 17:31:28 [Microsoft.OSTCExtensions.LinuxDiagnostic-1.0]setting file path is/var/lib/waagent/Microsoft.OSTCExtensions.LinuxDiagnos
tic-2.3.9/config/0.settings2

Related files:
 HandlerEnvironment.json
[{ "name": "Microsoft.OSTCExtensions.LinuxDiagnostic", "seqNo": "0", "version": 1.0, …

 HandlerManifest.json
[{
"name": "LinuxAzureDiagnostic",
"version": 1.0,

azure vm extension list -n LinuxDiagnostic
...
Version : 2.3

[CustomScript] Current sequence number, 0, is not greater than the sequence number ...

Hello!
I have big problem with deploy linux vm from arm template. I tried use extension "CustomScriptForLinux", but first result of running the script has been cached, and I must recreate VM for new deploy for new start result deploy. How I can disable caching for ARM template? Or how I can remove old result last running "CustomScriptForLinux" without remove target linux vm?
I tried use time stamp, but the problem is not solved (there is same issue: #12)
From my logs:
[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Current sequence number, 0, is not greater than the sequnce number of the most recent executed configuration. Exiting...

Add entropy metrics to AzureEnhancedMonitor

Entropy metrics is available in /proc/sys/kernel/random/entropy_avail. It is a int number so it is very easy to implement. It is very important in some cases and monitoring software like Zabbix or Icinga is capable to monitor this parameter. I think that I'm able to implement it in https://github.com/Azure/azure-linux-extensions/blob/master/AzureEnhancedMonitor/ext/aem.py but I'm not sure if I have enough skills to implement new table for this metrics and portal related things. I can help in implementing this feature.

[customScript] failing to parse typehandler version number

Im trying to use this customscript extension to run a python script on a deployed linux machine using azure ARM deployment.

The deployment eventually fails showing me the following error:

{
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "VMExtensionHandlerNonTransientError",
        "message": "Handler 'Microsoft.OSTCExtensions.CustomScriptForLinux' has reported failure for VM Extension 'setup' with terminal error code '1003' and error message: 'Handler manifest deserialization has failed with exception There was an error deserializing the object of type System.Collections.Generic.List`1[[Microsoft.WindowsAzure.GuestAgent.ContainerStateMachine.HandlerRootObject, Microsoft.WindowsAzure.GuestAgent.ContainerStateMachine, Version=2.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]. The value '1.5.2.0' cannot be parsed as the type 'double'.'"
      }
    ]
  }
}

this is the resource template i used:

{
            "type": "Microsoft.Compute/virtualMachines/extensions",
            "name": "[concat(parameters('vmname'), '/setup')]",
            "apiVersion": "[variables('apiVersion')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Compute/virtualMachines/', parameters('vmname'))]"
            ],
            "properties": {
                "publisher": "Microsoft.OSTCExtensions",
                "type": "CustomScriptForLinux",
                "typeHandlerVersion": "1.5",
                "autoUpgradeMinorVersion": true,
                "settings": {
                    "fileUris": [
                        "[concat(parameters('baseResourcesUri'), 'setup_vm.py')]"
                    ],
                    "commandToExecute": "python setup_vm.py"
                }
            }
        }

It seems to me its trying to install a minor release of typehandler.

Anyone have an idea what i am doing wrong? If i change it to 1.4 or 1.3 its the same error but a minor verison of that major

Custom Script Extension - Cannot transfer parameters to commandtoexecute

I'm trying to add a few variables to a script im running

sh script.sh var1 var2 var3

But when I try to do it in this manner:

"resources" : [
  {
     "type" : "Microsoft.Compute/virtualMachines/extensions",
     "name" : "[concat(parameters('vmName'),'/CustomScriptExtension')]",
     "apiVersion" : "[variables('apiVersion')]",
     "location" : "[variables('location')]",
     "dependsOn" : [
        "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
     ],
     "properties" : {
        "publisher" : "Microsoft.OSTCExtensions",
        "type" : "CustomScriptForLinux",
        "typeHandlerVersion" : "1.4",
        "autoUpgradeMinorVersion" : true,
        "settings" : {
           "fileUris" : "[split(parameters('fileUris'), ' ')]",
           "commandToExecute" : "[concat('sh ',parameters('scriptName'),' ',parameters('var1 '),' ',parameters('var2'),' ',parameters('var3'))]"
        },
        "protectedSettings" : {
           "storageAccountName" : "[parameters('customScriptStorageAccountName')]",
           "storageAccountKey" : "[parameters('customScriptStorageAccountKey')]"
        }

I get the following error:

2016/05/25 12:16:11 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Failed to launch command with error: [Errno 36] File name too long,stacktrace: Traceback (most recent call last):
2016/05/25 12:16:11 ERROR:  File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0/Utils/ScriptUtil.py", line 49, in run_command
2016/05/25 12:16:11 ERROR:    stderr=err_out)
2016/05/25 12:16:11 ERROR:  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
2016/05/25 12:16:11 ERROR:    errread, errwrite)
2016/05/25 12:16:11 ERROR:  File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
2016/05/25 12:16:11 ERROR:    raise child_exception
2016/05/25 12:16:11 ERROR:OSError: [Errno 36] File name too long
2016/05/25 12:16:11 ERROR:
2016/05/25 12:16:11 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Daemon,failed,1,Lanch command failed: [Errno 36] File name too long

It seems that the script is being run as a subprocess and II cannot add variables to it.

Any thoughts?

[CustomScript] error message misleading

if you leave the commandToExecute field empty in configuration, you get an error like:

Enable failed: Failed with error: CommandToExecute is empty or invalid, Traceback (most recent call last):
  File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0/customscript.py", line 79, in main
    enable(hutil)
  File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0/customscript.py", line 113, in enable
    start_daemon(hutil)
  File "/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0/customscript.py", line 263, in start_daemon
    raise ValueError(error_msg)
ValueError: CommandToExecute is empty or invalid

notice the difference between CommandToExecute and commandToExecute. there should be consistency.

[CustomScript] Support SAS tokens for scripts

It would be nice if the custom script extension accepted SAS tokens instead of forcing me to send the full storage account key (effectively giving the VM root access to the storage account); it would better fit the principle of least privilege.

The current issue is that my SAS key would be visible to anyone looking at a deployment log. This means the extension should accept the fileUris parameter in protected settings.

Default option for logs too broad

I’ve recently been playing with the Azure containers service. I noticed that the linux machines that are provisioned as part of the cluster all have “LinuxDiagnostic” extension enabled. I also noticed that a diagnostics storage account is provisioned for each virtual machine. Sifting through what’s inside the storage account I realized, besides metrics, all sys log entries are being sent which can really pile up very quickly.

From a customer’s perspective, given that they were not notified of the following at the time of provisioning the cluster, spending a bunch on storage might come as a surprise when they get their next bill:

  • Monitoring is being enabled on all machines.
  • Storage accounts were created for all machines.
  • Very verbose data is being send. As an example one of my machine in the cluster zero application workload, is generating tens of information or lower syslog message per second.

While I understand the utility of enabling default diagnostics experiences for the customer. I believe we can have smarter defaults which end up not sending as much data (say only send severity levels 0-3 or Emergency, Alert, Critical and Error) by default.

As an example, on windows machines, windows azure diagnostics has better defaults where it only sends error level windows events to storage by default.

[LAD] Can't start mdsd if port 29131 is in use

Happens mostly by previously crashed mdsd process, which is somehow holding on to the hard-coded port. Should detect such a case and reclaim the port, or hunt for an unused port and use it instead of the hard-coded port. Will need to update the rsyslogom conf for the new port and also the mdsd cmd line parameter, if we do this fix.

Centos 6.3 VMSnapshotLinux

Every installation of a new version of the extension causes an hang of waagent on some of my Linux boxes and then an abnormal termination of the backup process.
Alert in message.log:

abrt: detected unhandled Python exception in '/var/lib/waagent/Microsoft.Azure.RecoveryServices.VMSnapshotLinux-1.0.7.0/main/handle.py'
And after further analysis, reason of the exception:
DiskUtil.py:107:get_device_items:NameError: global name 'CommonVariables' is not defined

Diskutil.py at line 107:

    106             if(error_msg is not None and error_msg.strip() != ""):
    107                 self.logger.log(msg=str(err),level=CommonVariables.ErrorLevel)

ErrorLevel is not defined in CommonVariables.

Changing line 107 into:

    107                 self.logger.log(msg=str(err))

all seems to work fine and Recovery Service takes a regular backup of the VM (recovery verified).

DSCForLinux extension installs outdated packages for both OMI and DSC (blocking onboarding in Azure Automation DSC)

The DSC For Linux extension installs outdated versions of OMI and DSC.
Versions installed are packaged with the extension so a new version of the extension is needed to deliver the updated packages.
Current version OMI: 1.0.8 New version available: 1.0.8-4
Current version DSC: 1.0.0-320 New version available 1.1.1-70
The current versions are not supported for Azure Automation DSC onboarding. When tried, an unhandled exception is thrown.

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

I am executing a simple script on Ubuntu 14.04.2-LTS using the Custom Script extension. The first command is:

sudo apt-get update -y

Then I just install git and pip and run a python script. But I run into an error where the update fails with the following error:

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

If some other process is using it, who is it? I run into this error most of the time but not always. That makes me suspect that the extension is calling the script before it is done initializing.

[LAD] Upgrading extension on Ubuntu 15.10 & 16.04 fails to restart the agent

We've had this latent bug from day 1 that on any systemd-enabled distros upgrading the LAD extension wouldn't restart the service.

This bug previously affected Ubuntu 15.10 only, and probably because it's not an LTS version and maybe not used in other templates (e.g., VMSS, ACS), we didn't receive any report on this issue.

Now with LAD 2.3.9003, we started to mark Ubuntu 16.04 to use systemd, and therefore, Ubuntu 16.04 VMs are affected with this bug, resulting in loss of diagnostic info when LAD is upgraded to 2.3.9003 on Ubuntu 16.04.

A simple fix is to restart the service all the time when 'diagnostic.py -enable' is executed, but I'll see if it's possible to avoid restarting the service if it's not needed (respecting the original intention).

VMBackup freebsd

When trying to launch the waagent on a freebsd machine I get this error:

/var/lib/waagent # Traceback (most recent call last):
File "/var/lib/waagent/Microsoft.Azure.RecoveryServices.VMSnapshotLinux-1.0.3.0/main/handle.py", line 218, in
main()
File "/var/lib/waagent/Microsoft.Azure.RecoveryServices.VMSnapshotLinux-1.0.3.0/main/handle.py", line 63, in main
enable()
File "/var/lib/waagent/Microsoft.Azure.RecoveryServices.VMSnapshotLinux-1.0.3.0/main/handle.py", line 73, in enable
freezer = FsFreezer(backup_logger)
File "/var/lib/waagent/Microsoft.Azure.RecoveryServices.VMSnapshotLinux-1.0.3.0/main/fsfreezer.py", line 47, in init
self.mounts = Mounts(self.logger)
File "/var/lib/waagent/Microsoft.Azure.RecoveryServices.VMSnapshotLinux-1.0.3.0/main/mounts.py", line 46, in init
p = subprocess.Popen(['lsblk', '-l', '-n','-o','NAME,TYPE,FSTYPE,MOUNTPOINT'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File "/usr/local/lib/python2.7/subprocess.py", line 710, in init
errread, errwrite)
File "/usr/local/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

I figured the problem is that the 'lsblk' command does not exists on freebsd.

Is there an workaround?

The machine has the following status on the portal, extensions:
Microsoft.Azure.RecoveryServices.VMSnapshotLinux 1.0.3.0 Installing

Microsoft.OSTCExtensions LinuxDiagnostic 2.3.5

Using the Azure Portal and setting the Diagnostics status to On gives two options for Linux VM (Basic Matric and boot diagnostics).

When the Azure Portal turns this setting on it sends a long Base64 string to the VM that has all kinds of settings. For example:

<WadCfg> <DiagnosticMonitorConfiguration overallQuotaInMB="4096"> <DiagnosticInfrastructureLogs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="1h, 1m" /> <PerformanceCounters scheduledTransferPeriod="PT1M"> <PerformanceCounterConfiguration counterSpecifier="\Memory\AvailableMemory" sampleRate="PT15S" unit="Bytes"> <annotation displayName="Memory available" locale="en-us" /> </PerformanceCounterConfiguration>
..................

Looking at the Resource Manager Powershell code it shows a perfCfg with an SQL query.

Is there a way from Powershell to turn all the same settings on that Azure Portal is setting?

Thanks

[LAD] LAD should restart OMI if it crashes

Currently we are starting OMI once at the beginning and hope it doesn't crash. We are seeing cases where OMI is successfully installed but crashes immediately (especially on Ubuntu 16.04), rending mdsd unable to pump perf stats to customer's storage account. The root cause should be on OMI crash and needs to be fixed by OMI team, but to increase resiliency of LAD, we should periodically check OMI status and restart it if it crashes.

(Custom Script Extension) Script failure causes following ARM template deployment to fail

When a script invoked by the Custom Script extension returns an error code, I've observed that the next ARM template deployment will also fail. The real problem is that the VM is the resource that fails. This poses a problem for custom scripts executed in ARM template deployments, because the custom script dependsOn the VM. So, it will never run again and have a chance to correct itself. (We use a timestamp in settings to ensure the script runs on each deployment).

Here's the error output from New-AzureRmResourceGroupDeployment:

VERBOSE: 12:41:22 AM - Create template deployment 'azuredeploy-####-####'.
VERBOSE: 12:41:30 AM - Resource Microsoft.Network/virtualNetworks '#####' provisioning status is succeeded
VERBOSE: 12:41:33 AM - Resource Microsoft.Storage/storageAccounts '#####' provisioning status is succeeded
VERBOSE: 12:41:33 AM - Resource Microsoft.Network/publicIPAddresses '#####' provisioning status is succeeded
VERBOSE: 12:41:36 AM - Resource Microsoft.Compute/virtualMachines '#####' provisioning status is running
VERBOSE: 12:41:36 AM - Resource Microsoft.Network/networkInterfaces '#####' provisioning status is succeeded
New-AzureRmResourceGroupDeployment : 12:42:12 AM - Resource Microsoft.Compute/virtualMachines '#####' failed with message 'The resource 
operation completed with terminal provisioning state 'Failed'.'
At C:\#####\scripts\Deploy.ps1:65 char:11
+ $deploy = New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $T ...
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-AzureRmResourceGroupDeployment], Exception
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.NewAzureResourceGroupDeploymentCommand

New-AzureRmResourceGroupDeployment : 12:42:12 AM - VM has reported a failure when processing extension 'shexec'. Error message: "Script returned an 
error.
---stdout---
---errout---
(error output)
".
At C:\#####\scripts\Deploy.ps1:65 char:11
+ $deploy = New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $T ...
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-AzureRmResourceGroupDeployment], Exception
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.NewAzureResourceGroupDeploymentCommand

We can work around this problem by invoking custom scripts outside of ARM templates, but it still means we need an extra deploy to fix the issue. Alternatively, I think that we can invoke "/bin/true" after a failed ARM template deployment to get the extension back into a non-error state. However, I can see this issue affecting others, and working around it in this manner is non-intuitive.

[LAD] CoreOS support

Hi all

I successfully installed LinuxAzureDiagnostic from the new Portal and from azurecli on ubuntu.
When installed I can see that python scripts are licensed under Apache 2.0 and that extension version is 2.0.92.
However I can't find a place where the source is public accessible.
Can anyone point me to the code? I googled a lot but I couldn't find anything.
Is it possible to publish the extension source code here?

Also, I am a CoreOS user and I would like to have the ability to enable the extension under this os.

Thanks

Premature failure during execution

As of the most recent merge a few hours ago, #112, I'm noticing that the extension now emits a failure even though the script itself doesn't fail and is simply logging stdout messages.

My output is as follows:

 "message": "VM has reported a failure when processing extension 'prepNodes'. Error message: \"Command is running...\n---stdout---\nLoaded plugins: langpacks, product-id, rhui-lb, search-disabled-repos\n\n---errout---\n\n\"."

[CustomScript] IDNS issue in expressroute VMs

I am simply adding custom script to run a date command however it stays in transitioning state indefinitely:

$ azure vm extension set ahmetb-dev CustomScriptForLinux Microsoft.OSTCExtensions '1.*' --public-config '{"commandToExecute":"date"}'

it kicks of enable:

2016/05/25 22:01:54 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Change log file to /var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.5.2.0/extension.log
2016/05/25 22:01:59 installCommand completed.
2016/05/25 22:01:59 SetHandlerState: Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0, Installed
2016/05/25 22:01:59 Installation completed for Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0
2016/05/25 22:01:59 Found RuntimeSettings for Microsoft.OSTCExtensions.CustomScriptForLinux V 1.5.2.0
2016/05/25 22:01:59 Spawned customscript.py -enable PID 63312
2016/05/25 22:01:59 CustomScript started to handle.
2016/05/25 22:01:59 [CustomScript-0.0]cwd is /var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Change log file to /var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.5.2.0/extension.log
2016/05/25 22:01:59 CustomScript started to handle.
2016/05/25 22:01:59 [CustomScript-0.0]cwd is /var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Change log file to /var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.5.2.0/extension.log
2016/05/25 22:02:04 enableCommand completed.
2016/05/25 22:02:04 SetHandlerState: Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0, Enabled
2016/05/25 22:02:04 Enable completed for Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0
2016/05/25 22:02:04 Processing completed for Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0

extension logs

sudo cat /var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.5.2.0/extension.log
2016/05/25 22:01:54 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]sequence number is 0
2016/05/25 22:01:54 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]setting file path is/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0/config/0.settings
2016/05/25 22:01:54 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]JSON config: {"runtimeSettings":[{"handlerSettings":{"publicSettings":{"commandToExecute":"date"}}}]}
2016/05/25 22:01:54 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Install,success,0,Install succeeded
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]sequence number is 0
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]setting file path is/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0/config/0.settings
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]JSON config: {"runtimeSettings":[{"handlerSettings":{"publicSettings":{"commandToExecute":"date"}}}]}
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]set most recent sequence number to 0
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Command to execute:date
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Enable,transitioning,0,Launching the script...
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]sequence number is 0
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]setting file path is/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.0/config/0.settings
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]JSON config: {"runtimeSettings":[{"handlerSettings":{"publicSettings":{"commandToExecute":"date"}}}]}
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Will try to download files, number of retries = 10, wait SECONDS between retrievals = 20s
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Command to execute:date
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]fileUris value provided is empty or invalid. Continue with executing command...
2016/05/25 22:01:59 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Succeeded to download files, retry count = 0
2016/05/25 22:02:10 ERROR:CalledProcessError.  Error Code is 1
2016/05/25 22:02:10 ERROR:CalledProcessError.  Command string was host $(hostname)
2016/05/25 22:02:10 ERROR:CalledProcessError.  Command result was ;; connection timed out; no servers could be reached
2016/05/25 22:02:10 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Internal DNS is not ready, retry to check.
2016/05/25 22:02:10 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Sleep 20 seconds
2016/05/25 22:02:41 ERROR:CalledProcessError.  Error Code is 1
2016/05/25 22:02:41 ERROR:CalledProcessError.  Command string was host $(hostname)
2016/05/25 22:02:41 ERROR:CalledProcessError.  Command result was ;; connection timed out; no servers could be reached
2016/05/25 22:02:41 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Internal DNS is not ready, retry to check.
2016/05/25 22:02:41 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Sleep 20 seconds
2016/05/25 22:03:12 ERROR:CalledProcessError.  Error Code is 1
2016/05/25 22:03:12 ERROR:CalledProcessError.  Command string was host $(hostname)
2016/05/25 22:03:12 ERROR:CalledProcessError.  Command result was ;; connection timed out; no servers could be reached
2016/05/25 22:03:12 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Internal DNS is not ready, retry to check.
2016/05/25 22:03:12 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Sleep 20 seconds
2016/05/25 22:03:44 ERROR:CalledProcessError.  Error Code is 1
2016/05/25 22:03:44 ERROR:CalledProcessError.  Command string was host $(hostname)
2016/05/25 22:03:44 ERROR:CalledProcessError.  Command result was ;; connection timed out; no servers could be reached
2016/05/25 22:03:44 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Internal DNS is not ready, retry to check.
2016/05/25 22:03:44 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Sleep 20 seconds
2016/05/25 22:04:15 ERROR:CalledProcessError.  Error Code is 1
2016/05/25 22:04:15 ERROR:CalledProcessError.  Command string was host $(hostname)
2016/05/25 22:04:15 ERROR:CalledProcessError.  Command result was ;; connection timed out; no servers could be reached
2016/05/25 22:04:15 ERROR:[Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Internal DNS is not ready, retry to check.
2016/05/25 22:04:15 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.0]Sleep 20 seconds

... and it goes on

.status file

[{"status": {"status": "transitioning", "formattedMessage": {"lang": "en-US", "message": "Launching the script..."}, "operation": "Enable", "code": "0", "name": "Microsoft.OSTCExtensions.CustomScriptForLinux"}, "version": "1.0", "timestampUTC": "2016-05-25T22:01:59Z"}]#

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.