var CheckProvisioned = checkProvisioned
CheckProvisioned checks if any juju init service already exist on the host machine.
var DetectSeriesAndHardwareCharacteristics = detectSeriesAndHardwareCharacteristics
DetectSeriesAndHardwareCharacteristics detects the OS series and hardware characteristics of the remote machine by connecting to the machine and executing a bash script.
InitUbuntuUser adds the ubuntu user if it doesn't already exist, updates its ~/.ssh/authorized_keys, and enables passwordless sudo for it.
InitUbuntuUser will initially attempt to login as the ubuntu user, and verify that passwordless sudo is enabled; only if this is false will there be an attempt with the specified login.
authorizedKeys may be empty, in which case the file will be created and left empty.
Provision returns a new machineId and nil if the provision process is done successfully The func will manual provision a linux machine using as it's default protocol SSH
ProvisioningScript generates a bash script that can be executed on a remote host to carry out the cloud-init configuration.