@ -136,15 +136,15 @@ For the following use case, let's use this small shell script as a wrapper.
#!/bin/bash
#!/bin/bash
PLAYBOOK="$1"
PLAYBOOK="$1"
if [ -z $PLAYBOOK ]; then
if [[ -z $PLAYBOOK ] ]; then
echo "You need to pass a playbac k as argument to this script."
echo "You need to pass a playboo k as argument to this script."
exit 1
exit 1
fi
fi
export SSL_CERT_FILE=$(pwd)/cacert.cer
export SSL_CERT_FILE=$(pwd)/cacert.cer
export ANSIBLE_HOST_KEY_CHECKING=False
export ANSIBLE_HOST_KEY_CHECKING=False
if [ ! -f "$SSL_CERT_FILE" ]; then
if [[ ! -f "$SSL_CERT_FILE" ] ]; then
curl -O http://curl.haxx.se/ca/cacert.pem
curl -O http://curl.haxx.se/ca/cacert.pem
fi
fi
@ -175,11 +175,11 @@ A playbook would looks like this:
tasks:
tasks:
- name: Launch instances
- name: Launch instances
gce:
gce:
instance_names: dev
instance_names: dev
machine_type: "{{ machine_type }}"
machine_type: "{{ machine_type }}"
image: "{{ image }}"
image: "{{ image }}"
service_account_email: "{{ service_account_email }}"
service_account_email: "{{ service_account_email }}"
pem_file: "{{ pem_file }}"
pem_file: "{{ pem_file }}"
project_id: "{{ project_id }}"
project_id: "{{ project_id }}"
tags: webserver
tags: webserver
register: gce
register: gce
@ -188,15 +188,18 @@ A playbook would looks like this:
wait_for: host={{ item.public_ip }} port=22 delay=10 timeout=60
wait_for: host={{ item.public_ip }} port=22 delay=10 timeout=60
with_items: gce.instance_data
with_items: gce.instance_data
- name: add_host hostname={{ item.public_ip }} groupname=new_instances
- name: Add host to groupname
add_host: hostname={{ item.public_ip }} groupname=new_instances
with_items: gce.instance_data
- name: Manage new instances
- name: Manage new instances
hosts: new_instances
hosts: new_instances
connection: ssh
connection: ssh
sudo: True
roles:
roles:
- base_configuration
- base_configuration
- production_server
- production_server
Note that use of the "add_host" module above creates a temporary, in-memory group. This means that a play in the same playbook can then manage machines
Note that use of the "add_host" module above creates a temporary, in-memory group. This means that a play in the same playbook can then manage machines
in the 'new_instances' group, if so desired. Any sort of arbitrary configuration is possible at this point.
in the 'new_instances' group, if so desired. Any sort of arbitrary configuration is possible at this point.