For the sake of clearness and not to get confused with the previous work, the “Lab” domain is going to be disabled before creating a new one.
Navigate to - Navigate to Automation -> Automate -> Explorer.
Click on the “Lab” domain and then go to Configuration -> Edit this Domain.
Remove the mark from Enabled and click Save.
Now you´re good to go and create the new domain needed for this lab.
Since the Automate Domains shipped with CloudForms are read only, we have to create our own Domain first.
Click on the root object “Datastore”
Click on Configuration -> Add a new Domain.
Enter the following details:
Name: RHTE
Description: RHTE FY20
Enabled: Check
To be able to make changes to the State Machine, we have to copy it to our writeable Domain first.
ManageIQ -> Infrastructure -> VM -> Provisioning -> StateMachines -> VMProvision_VM -> Provision VM from Template
Make sure you highlight the “Provision VM from Template (template)” instance when initiating the copy!
Accept the defaults when confirming the copy.
Click Copy to confirm.
After the copy was completed, you should see a confirmation page.
We have to modify the CheckProvisioned Method to make sure it waits until the VM is up and running.
ManageIQ -> Infrastructure -> VM -> Provisioning -> StateMachines -> Methods -> CheckProvisioned (check_provisioned)
Make sure you click on the Method (which has a red diamond icon) and not on the instance (which has a grey paper icon).
Click on Configuration -> Copy this Method.
Accept the defaults when confirming the copy.
Click Copy to confirm.
After the VM has been created we want to make sure that Ansible is able to connect to it before trying to run Playbooks or Job Templates on it. This is the reason why the CheckProvisioned Method has to be customized after copying it.
Navigate to the recently copied method and click on it.
Click on Configuration -> Edit this Method
Paste the next code at the end of the method:
vm = task.vm
$evm.log("info","Current IP Addresses: #{vm.ipaddresses}") unless vm.nil?
$evm.log("info", "VM is still nil") if vm.nil?
if not vm.nil?
if task.destination.ipaddresses.empty?
$evm.root['ae_result'] = 'retry'
$evm.root['ae_retry_interval'] = '1.minute'
end
end
Make sure you extend the existing method by adding the code to the end. Do not replace or remove any of the existing lines of code!
Click Validate to verify the code has no syntax errors.
Click Save to store all changes.