Hello,
Let me start out with the playbook I'm using (any authentication info you
see below has been modified from the original so no worries about privacy
concerns):
---
- name: Create instance(s)
hosts: localhost
connection: local
gather_facts: no
vars:
service_account_email:
457671988709-m1346pm0lmrfb733qqjnmife8na6h...@developer.gserviceaccount.com
pem_file: ./roles/google/files/pkey.pem
project_id: rosy-stronghold-765
machine_type: n1-standard-1
image: ubuntu
zone: us-central1-a
tasks:
- name: Launch instances
gce:
instance_names: dev
machine_type: "{{ machine_type }}"
image: "{{ image }}"
service_account_email: "{{ service_account_email }}"
pem_file: "{{ pem_file }}"
project_id: "{{ project_id }}"
zone: "{{ zone }}"
I've been trying to use ansible to create a Ubuntu based instance, but no
avail. Originally, I was getting this error from Ansible:
PLAY [all]
********************************************************************
PLAY [Create instance(s)]
*****************************************************
TASK: [Launch instances]
******************************************************
failed: [localhost] => {"changed": false, "failed": true}
msg: Missing required create instance variable
FATAL: all hosts have already failed -- aborting
After doing a fair amount of research, I found out that the stable 0.16.0
version of apache-libcloud did not seem to support Ubuntu, at least based
on the source code in the gce.py driver. Because of this, I installed the
development version of the library which actually does have support for
Ubuntu, at least from what I can see in the source:
if (partial_name.startswith('debian') or
partial_name.startswith('backports') or
partial_name.startswith('nvme-backports')):
image = self._match_images('debian-cloud', partial_name)
elif partial_name.startswith('centos'):
image = self._match_images('centos-cloud', partial_name)
elif partial_name.startswith('sles'):
image = self._match_images('suse-cloud', partial_name)
elif partial_name.startswith('rhel'):
image = self._match_images('rhel-cloud', partial_name)
elif partial_name.startswith('windows'):
image = self._match_images('windows-cloud', partial_name)
elif partial_name.startswith('container-vm'):
image = self._match_images('google-containers', partial_name)
elif partial_name.startswith('coreos'):
image = self._match_images('coreos-cloud', partial_name)
elif partial_name.startswith('opensuse'):
image = self._match_images('opensuse-cloud', partial_name)
elif partial_name.startswith('ubuntu'):
image = self._match_images('ubuntu-os-cloud', partial_name)
With this new library, Ansible no longer threw the error above and it now
went ahead with the play. However, I noticed that no matter what
combination of the string "ubuntu" I use for the "image" parameter, Ansible
will always default to creating a CentOS image (I'm guessing that's a
default somewhere) and so, I'm kind of stuck now as to what could be going
wrong.
Has anyone experienced similar issues when creating Ubuntu issue? Any
assistance with this would be greatly appreciated.
Luis
--
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/e597b138-a3ca-4f7a-81ab-bdc7a72a3065%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.