示例#1
0
文件: demo.py 项目: yarlevi/pyaws
#!/usr/bin/env python3
from pyaws.stacks import ec2, security, template


def stack():
    t = template.create(description='demo stack')
    keypair = template.add_keypair_parameter(t)

    # network & subnets
    network = ec2.vpc(template=t, name='vpc', cidr='10.0.0.0/16')
    ig, iga = ec2.internet_gateway(template=t, vpc=network)
    management_subnet = ec2.subnet(template=t, name='ManagementSubnet', cidr='10.0.0.0/24', vpc=network, gateway=ig)

    # security groups
    management_security_group = security.get_vdcm_management_security_group(template=t, vpc=network)

    # 2 machine
    for i in range(1, 3):
        eth = ec2.interface(template=t, name='machine{}eth0'.format(i), subnet=management_subnet,
                            security_groups=management_security_group, gateway_attachment=iga)

        ec2.instance(template=t, name='machine{}'.format(i), ami=ec2.AMI.public_centos, type='t2.micro',
                     keypair=keypair, interfaces=[eth], role='demo-machine')
    return t


if __name__ == '__main__':
    t = stack()
    template.save_template_to_file(t)
示例#2
0
    public = ec2.subnet(template=t, name='public', cidr='10.0.0.0/24', vpc=network, gateway=ig)
    ng = ec2.nat_gateway(template=t, public_subnet=public, gateway_attachement=iga)
    private = ec2.subnet(template=t, name='private', cidr='10.0.1.0/24', vpc=network, nat=ng)

    # security groups
    bastion_security_group = security.get_bastion_security_group(template=t, vpc=network)
    management_security_group = security.get_vdcm_management_security_group(template=t, vpc=network, cidr='0.0.0.0/0')

    # bastion
    ec2.instance_with_interfaces(template=t, name='bastion', ami=ec2.AMI.public_centos, type='t2.small',
                                 tags={'auto-power': 'no'}, user_data=ec2.ETH1_USER_DATA,
                                 keypair=keypair, role='bastion', placement_group=None,
                                 interfaces=[
                                     (public, '10.0.0.6', bastion_security_group, iga),
                                     (private, '10.0.1.6', management_security_group, None)
                                 ])

    # builder
    ec2.instance_with_interfaces(template=t, name='build', ami=ec2.AMI.public_centos, type='t2.small', user_data=None,
                                 keypair=keypair, role='builder', placement_group=None, tags={'auto-power': 'no'},
                                 iam_role=packer_iam_role, volume_size=40,
                                 interfaces=[
                                     (private, '10.0.1.7', management_security_group, None),
                                 ])
    return t


if __name__ == '__main__':
    stack = stack()
    template.save_template_to_file(template=stack)