Hi Abhijeet,
Great help again. Thanks. This is what I have now:
- name: Add the ucloud_vm created into in-memory of ansible hosts.
vars:
user_data: "{{ lookup('file', '/root/mltr_source_code/mini.ip') }}"
tasks:
- add_host:
name: '{{ user_data }}'
groups: ucloud_vm_group
...
- name: Configure newly added hosts
hosts: ucloud_vm_group
tasks:
shell: touch /root/hello.txt
I get this when I run the playbook:
ansible-playbook 2.8.0
config file = /root/mltr_source_code/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules',
u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623
(Red Hat 4.8.5-28)]
Using /root/mltr_source_code/ansible.cfg as config file
host_list declined parsing /root/mltr_source_code/hosts as it did not pass it's
verify_file() method
script declined parsing /root/mltr_source_code/hosts as it did not pass it's
verify_file() method
auto declined parsing /root/mltr_source_code/hosts as it did not pass it's
verify_file() method
toml declined parsing /root/mltr_source_code/hosts as it did not pass it's
verify_file() method
[WARNING]: * Failed to parse /root/mltr_source_code/hosts with yaml plugin:
Syntax Error while loading YAML. did not find
expected <document start> The error appears to be in
'/root/mltr_source_code/hosts': line 2, column 1, but may be elsewhere in
the file depending on the exact syntax problem. The offending line appears to
be: [server] 10.204.74.245 ^ here
File "/usr/lib/python2.7/site-packages/ansible/inventory/manager.py", line
267, in parse_source
plugin.parse(self._inventory, self._loader, source, cache=cache)
File "/usr/lib/python2.7/site-packages/ansible/plugins/inventory/yaml.py",
line 105, in parse
raise AnsibleParserError(e)
[WARNING]: * Failed to parse /root/mltr_source_code/hosts with ini plugin:
/root/mltr_source_code/hosts:7: Section [vms:vars]
not valid for undefined group: vms
File "/usr/lib/python2.7/site-packages/ansible/inventory/manager.py", line
267, in parse_source
plugin.parse(self._inventory, self._loader, source, cache=cache)
File "/usr/lib/python2.7/site-packages/ansible/plugins/inventory/ini.py",
line 138, in parse
raise AnsibleParserError(e)
[WARNING]: Unable to parse /root/mltr_source_code/hosts as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note
that the implicit localhost does not match 'all'
ERROR! Syntax Error while loading YAML.
could not find expected ':'
The error appears to be in '/root/mltr_source_code/provision_undercloud.yml':
line 255, column 4, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: Configure newly added hosts
^ here
Greetings,
Sandeep.
> On 08-Nov-2019, at 2:32 PM, Abhijeet Kasurde <[email protected]> wrote:
>
> Hi Sandeep,
>
> You can write two plays to handle this situation. First play will add the
> host and the second play will use the in-memory inventory generated by first
> play to execute commands on newly added host.
>
> So basically, your playbook will look like -
>
> - name: Deploy VM and add in ucloud_vm_group
> hosts: localhost
> tasks:
> - add_host:
> name: '{{ user_data }}'
> groups: ucloud_vm_group
> ...
>
> - name: Configure newly added hosts
> hosts: ucloud_vm_group
> tasks:
> - apt:
> name: git
> state: latest
>
> I have removed details for the sake simplicity. Let me know if you have any
> questions.
>
> Thanks,
>
> On Friday, November 8, 2019 at 11:42:24 AM UTC+5:30, Sandeep Sridhar wrote:
> I have an Ansible controller and a remote host. On the remote host, we have
> created a guest VM instance. All of this is achieved through a playbook
> running on ansible controller.
>
> The guest VM does not have network connectivity to the ansible controller.
> The guest VM can only be accessed through the remote host.
>
> This is my hosts file on the ansible controller:
>
> [root@mltr mltr_source_code]# cat hosts
> [server]
> 10.204.74.245
>
> [localserver]
> 127.0.0.1
>
> [vms:vars]
> ansible_connection=ssh
> ansible_ssh_common_args='"-oStrictHostKeyChecking=no -oProxyCommand=\"ssh -A
> -W %h:%p [email protected] <>\"" ' -e ansible_ssh_user=root -e
> ansible_ssh_pass=contrail
>
> The IP of the guest VM is dynamic in nature (it may differ each time you run
> the playbook as the playbook creates it), Therefore, I am using add_host
> module to add the IP address to the in-memory inventory.
>
> - name: Add the ucloud_vm created into in-memory of ansible hosts.
> vars:
> user_data: "{{ lookup('file', '/root/mltr_source_code/mini.ip') }}"
> add_host:
> name: '{{ user_data }}'
> groups: ucloud_vm_group
> debug:
> var: hostvars[ucloud_vm_group]
> verbosity: 4
>
> Now, I would like to execute the next set of tasks/commands on the guest VM.
> How do I do it?
>
> A sample example of a task to run commands on guest VM will be really
> helpful.
>
> Greetings,
> Sandeep.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/cf69754e-7406-489f-a8a9-80803c320918%40googlegroups.com
>
> <https://groups.google.com/d/msgid/ansible-project/cf69754e-7406-489f-a8a9-80803c320918%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/8EA1CDE1-93CA-4770-BA4B-C881B2F7A4AE%40gmail.com.