Skip to content

Instantly share code, notes, and snippets.

@viesti
Created September 17, 2015 13:10
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save viesti/1febe79938c09cc29501 to your computer and use it in GitHub Desktop.
Save viesti/1febe79938c09cc29501 to your computer and use it in GitHub Desktop.
Ansible filter plugin to create rules fo ec2_group
def make_rules(hosts, ports, proto):
return [{"proto": proto,
"from_port": port,
"to_port": port,
"cidr_ip": host} for host in hosts for port in map(int, ports.split(","))]
class FilterModule(object):
def filters(self):
return {'make_rules': make_rules}
usage:
random_hosts:
- 192.168.1.2/32
- 172.16.0.2/32
ec2_group:
rules: "{{ random_hosts | make_rules('22,8080', 'tcp') }}"
@jale2014
Copy link

jale2014 commented Jan 7, 2016

Works after leaving out "ports" input variable and the "double" loop "for port in map(int, ports.split(","))" and using "from_port" and "to_port" variables instead.

@aioue
Copy link

aioue commented May 3, 2016

@jale2014 do you have the working version? @viesti?

@mabushey
Copy link

mabushey commented Jun 8, 2017

def make_rules(hosts, from_port, to_port, proto):
    return [{"proto": proto,
             "from_port": from_port,
             "to_port": to_port,
             "cidr_ip": host} for host in hosts]

call with rules: "{{ random_hosts | make_rules(22, 8080, 'tcp') }}"

@sysnet4admin
Copy link

sysnet4admin commented Jan 11, 2018

Hi viesti,

May I use this code for education purpose?
I already posted some article to use this code...actually.
Because one of user member mention this code to verify in Korea ansible user community..
Thus, I aim to look into this code.
If you have any unconcern it, please let me know.

Here is article link:
https://sysnet4admin.blogspot.kr/2018/01/ansible-plugin-python-filter.html#.WldZe9-WaiM

Thank you in advance,
Hoon Jo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment