``` import pulumi import pulumi_aws as aws my_ke...
# python
f
Copy code
import 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)