VMware released some Ansible enhancements within the last couple of weeks.
First is the ability to use the private IP of the deployed machine. Prior the this fix, disabling the public IP threw and error and the deployment failed.
To disable the assignment of a pubic IP (default), simply add ‘assignPublicIpAddress: false‘ in the network properties.
Cloud_Machine_1: type: Cloud.Machine properties: remoteAccess: keyPair: id_rsa authentication: keyPairName image: CentOS 7 flavor: generic.tiny attachedDisks: - source: '${resource.Cloud_Volume_1.id}' networks: - network: '${resource.Cloud_Network_1.id}' assignPublicIpAddress: false
By default, vRAC will use the private ip address of the first NIC on the machine.
Just a few things about the placement of the machines. First my Ansible Control Host (ACH) is on a Public AWS subnet. My first attempt to install NGINX on a machine deployed to the same subnet failed as it could not find the repo. After some troubleshooting I determined the new machine needs to be deployed on a private subnet, with a NAT Gateway. Oh and make sure the ACH can connect to the deployed machine on TCP port 22 (SSH).
The second was having the ability to send extra variables to the ACH. Here the use case is to join an AWS backed Windows server to a domain using an ansible playbook.
Ansible extra variables can be added under the properties in the Ansible component. Here I’m going to add several just to demonstrate what it looks like.
Cloud_Ansible_1: type: Cloud.Ansible properties: host: '${resource.Cloud_Machine_1.*}' osType: linux account: ansible-control-host username: centos privateKeyFile: /home/ansibleoss/.ssh/id_rsa playbooks: provision: - /home/ansibleoss/playbooks/centos-nginx/playbook.yml groups: - linux hostVariables: bluePrintName: BP- ${env.blueprintName} message: Hello World domain: corp.local orgUnit: ou=sample,dc=corp,dc=local disks: disk1: size: '${resource.Cloud_Volume_1.capacityGb}' label: '${input.disk1_label}' disk2: size: 20 label: Fake disk
These variables are stored in /etc/ansible/host_vars/vra_user_host_vars.yml.
This is the resulting YAML file for this blueprint request.
They also changed the default connection type to winrm (default is SSH) if the osType is set to ‘windows’.
This will be the topic of my next article.
Stay tuned.