I am trying to start the instances from a list of instances-ids using with_items and when condition.I have created a databases with four columns consisting of instance-ids,start-time,end-time and instance-name.Now by using jinja2 templates in ansible i have assigned 4 columns into four arrays.In the playbook i took present time and when this present time equals to the start time in the databases then the instance ids that are assigned to that start time get to be started.The error here is that i was able to pass the instance-ids to ec2 modules but those getting skipped.Here i took from myvar1 to myvar4 for 4 arrays as i mentioned above. myvar5 and myvar6 for the start time and end time that is matching with present time.And the playbook is
---
- hosts: localhost
connection: local
gather_facts: false
tasks:
- name: Retrieve stuff from mysql
command: mysql -e 'select * from instance_data' automation
register: results
- debug: var=results.stdout.split(\t)
- name: date and time
command: date +"%H:%M"
register: date
- set_fact:
myvar1: |
{% set list1 = results.stdout.split('\n') %}
{% set servername = [] %}
{% for j in list1 %}
{% set k= j.split('\t') %}
{% set ignored = servername.extend(k) %}
{% endfor %}
{% set list3= list1|length %}
{% set i= range(list3) %}
{% set u = i|max %}
{% set l = u+1 %}
{% for j in i %}
{% set a = (4*j) %}
{{servername[a]}}
{% endfor %}
myvar2: |
{% set list1 = results.stdout.split('\n') %}
{% set servername = [] %}
{% for j in list1 %}
{% set k= j.split('\t') %}
{% set ignored = servername.extend(k) %}
{% endfor %}
{% set list3= list1|length %}
{% set i= range(list3) %}
{% set u = i|max %}
{% set l = u+1 %}
{% for j in i %}
{% set b = ((4*j)+1) %}
{{servername[b]}}
{% endfor %}
myvar3: |
{% set list1 = results.stdout.split('\n') %}
{% set servername = [] %}
{% for j in list1 %}
{% set k= j.split('\t') %}
{% set ignored = servername.extend(k) %}
{% endfor %}
{% set list3= list1|length %}
{% set i= range(list3) %}
{% set u = i|max %}
{% set l = u+1 %}
{% for j in i %}
{% set c = ((4*j)+2) %}
{{servername[c]}}
{% endfor %}
myvar4: |
{% set list1 = results.stdout.split('\n') %}
{% set servername = [] %}
{% for j in list1 %}
{% set k= j.split('\t') %}
{% set ignored = servername.extend(k) %}
{% endfor %}
{% set list3= list1|length %}
{% set i= range(list3) %}
{% for j in i %}
{% set d = ((4*j)+3) %}
{{servername[d]}}
{% endfor %}
myvar5: |
{% set list1 = results.stdout.split('\n') %}
{% set servername = [] %}
{% for j in list1 %}
{% set k= j.split('\t') %}
{% set ignored = servername.extend(k) %}
{% endfor %}
{% set list3= list1|length %}
{% set i= range(list3) %}
{% set t = date.stdout %}
{% for m in i %}
{% set e = ((4*m)+1) %}
{% set w = (4*m) %}
{% if t is defined and t == servername[e]%}
{% set w = (4*m) %}
{{servername[w]}}
{% endif %}
{% endfor %}
myvar6: |
{% set list1 = results.stdout.split('\n') %}
{% set servername = [] %}
{% for j in list1 %}
{% set k= j.split('\t') %}
{% set ignored = servername.extend(k) %}
{% endfor %}
{% set list3= list1|length %}
{% set i= range(list3) %}
{% set t = date.stdout %}
{% for n in i %}
{% set f = ((4*n)+2) %}
{% if t is defined and t == servername[f]%}
{% set z = (4*n) %}
{% endif %}
{% endfor %}
- debug: var=myvar1.split(\n)
- debug: var=myvar2.split(\n)
- debug: var=myvar3.split(\n)
- debug: var=myvar4.split(\n)
- debug: var=myvar5.split(\n)
- debug: var=myvar6.split(\n)
- debug: var=date.stdout
- name: Start myserver instance
local_action:
module: ec2
region: "us-east-1"
instance_ids: "{{myvar5.split(\n)}}"
state: running
with_items: "{{myvar5.split(\n)}}"
when: "item|int"
PLAY [localhost] ***************************************************************
TASK [Retrieve stuff from mysql] ***********************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"results.stdout.split(\t)": [
"instance_id",
"start_time",
"stop_time",
"instance_name",
"i-00440942b2bacbd03",
"17:09",
"16:00",
"Billing",
"i-00ef49e66588585ef",
"17:09",
"16:00",
"ansible-launched",
"i-01543b3b959fe0eca",
"09:00",
"20:32",
"windows-ec2-telegraf",
"i-0336017296fcf14ca",
"16:41",
"20:32",
"openvpn",
"i-07d1b8b92a90f8498",
"11:00",
"20:00",
"ec2-private-inst2",
"i-08f713f2803c4f1c2",
"21:49",
"15:21",
"ec2-private",
"i-0a3910522c326d26b",
"20:12",
"14:55",
"Automation2",
"i-0ebb9a1517bfe54d4",
"11:46",
"14:55",
"Bonding"
]
}
TASK [date and time] ***********************************************************
changed: [localhost]
TASK [set_fact] ****************************************************************
ok: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"myvar1.split(\n)": [
"instance_id",
"i-00440942b2bacbd03",
"i-00ef49e66588585ef",
"i-01543b3b959fe0eca",
"i-0336017296fcf14ca",
"i-07d1b8b92a90f8498",
"i-08f713f2803c4f1c2",
"i-0a3910522c326d26b",
"i-0ebb9a1517bfe54d4"
]
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"myvar2.split(\n)": [
"start_time",
"17:09",
"17:09",
"09:00",
"16:41",
"11:00",
"21:49",
"20:12",
"11:46"
]
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"myvar3.split(\n)": [
"stop_time",
"16:00",
"16:00",
"20:32",
"20:32",
"20:00",
"15:21",
"14:55",
"14:55"
]
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"myvar4.split(\n)": [
"instance_name",
"Billing",
"ansible-launched",
"windows-ec2-telegraf",
"openvpn",
"ec2-private-inst2",
"ec2-private",
"Automation2",
"Bonding"
]
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"myvar5.split(\n)": [
"i-0ebb9a1517bfe54d4"
]
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"myvar6.split(\n)": []
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"date.stdout": "11:46"
}
TASK [Start myserver instance] *************************************************
skipping: [localhost] => (item=i-0ebb9a1517bfe54d4)
PLAY RECAP *********************************************************************
localhost : ok=11 changed=2 unreachable=0 failed=0