// makeLinuxRole will create a gwacl.Role for a Linux VM. // The VM will have: // - an 'ubuntu' user defined with an unguessable (randomly generated) password // - its ssh port (TCP 22) open // (if a state server) // - its state port (TCP mongoDB) port open // - its API port (TCP) open // On Linux the userdata is sent as a base64 encoded string in the CustomData xml field of the role. func makeLinuxRole( hostname, password, roleSize, roleName, userdata string, vhd *gwacl.OSVirtualHardDisk, networkConfigSet *gwacl.ConfigurationSet) (*gwacl.Role, error) { // Create a Linux Configuration with the username and the password // empty and disable SSH with password authentication. username := "******" cfgSet := gwacl.NewLinuxProvisioningConfigurationSet(hostname, username, password, userdata, "true") finalCfgSet := []gwacl.ConfigurationSet{*cfgSet, *networkConfigSet} return gwacl.NewLinuxRole(roleSize, roleName, vhd, finalCfgSet), nil }
// newRole creates a gwacl.Role object (an Azure Virtual Machine) which uses // the given Virtual Hard Drive. // // The VM will have: // - an 'ubuntu' user defined with an unguessable (randomly generated) password // - its ssh port (TCP 22) open // (if a state server) // - its state port (TCP mongoDB) port open // - its API port (TCP) open // // roleSize is the name of one of Azure's machine types, e.g. ExtraSmall, // Large, A6 etc. func (env *azureEnviron) newRole(roleSize string, vhd *gwacl.OSVirtualHardDisk, userData string, stateServer bool) *gwacl.Role { roleName := gwacl.MakeRandomRoleName("juju") // Create a Linux Configuration with the username and the password // empty and disable SSH with password authentication. hostname := roleName username := "******" password := gwacl.MakeRandomPassword() linuxConfigurationSet := gwacl.NewLinuxProvisioningConfigurationSet(hostname, username, password, userData, "true") // Generate a Network Configuration with the initially required ports open. networkConfigurationSet := gwacl.NewNetworkConfigurationSet(env.getInitialEndpoints(stateServer), nil) role := gwacl.NewLinuxRole( roleSize, roleName, vhd, []gwacl.ConfigurationSet{*linuxConfigurationSet, *networkConfigurationSet}, ) role.AvailabilitySetName = "juju" return role }