fast-hamburger-46413
10/08/2019, 6:06 PMimport pulumi
import pulumi_aws as aws
my_key_pair = aws.ec2.KeyPair("mytest",
public_key="REDACTED"
)
size = 't2.micro'
ami = aws.get_ami(
most_recent="true",
owners=["679593333241"],
filters=[
{"name":"name","values":["CentOS Linux 7 x86_64 HVM EBS*"]},
{"name":"architecture","values":["x86_64"]},
{"name":"root-device-type","values":["ebs"]}
])
master_sg = aws.ec2.SecurityGroup('master_sg',
description='Enable Salt master SSH access',
egress=[
{ 'protocol': '-1', 'fromPort': 0, 'toPort': 0, 'cidrBlocks': [ "0.0.0.0/0" ] }
],
ingress=[
{ 'protocol': 'tcp', 'from_port': 22, 'to_port': 22, 'cidr_blocks': ['0.0.0.0/0'] }
])
node2node_sg = aws.ec2.SecurityGroup('node2node_sg',
description='Enable Salt node to node all access',
ingress=[
{ 'protocol': '-1', 'from_port': 0, 'to_port': 0, 'self': True }
])
master_user_data = """#!/bin/bash -e
yum update -y
yum install -y <https://repo.saltstack.com/py3/redhat/salt-py3-repo-2019.2.el7.noarch.rpm>
yum install -y salt-master salt-ssh salt-cloud salt-api
sed -i "s|#auto_accept: False|auto_accept: True|g" /etc/salt/master
systemctl start salt-master
"""
master = aws.ec2.Instance('master',
instance_type=size,
security_groups=[master_sg.name, node2node_sg.name],
ami=ami.id,
key_name=my_key_pair,
user_data=master_user_data)
master_public_ip = master.public_ip
minion_user_data = """#!/bin/bash -e
yum update -y
yum install -y <https://repo.saltstack.com/py3/redhat/salt-py3-repo-2019.2.el7.noarch.rpm>
yum install -y salt-minion salt-ssh salt-cloud salt-api
mkdir -p /etc/salt/minion.d
sed -i "s|#master: salt|master: %s|g" /etc/salt/minion
systemctl start salt-minion
""" % master.private_ip
minion = aws.ec2.Instance('minion',
instance_type=size,
security_groups=[master_sg.name, node2node_sg.name],
ami=ami.id,
key_name=my_key_pair,
user_data=minion_user_data)
pulumi.export('sshLogin', "ssh -i ~/.ssh/id_rsa centos@%s" % master_public_ip)
pulumi.export('masterPrivateIp', master.private_ip)
pulumi.export('masterPublicHostName', master.public_dns)