Amazon ec2 使用Saltstack标记EC2实例

Amazon ec2 使用Saltstack标记EC2实例,amazon-ec2,salt-stack,Amazon Ec2,Salt Stack,我对使用saltstack相当陌生,我正在尝试让saltcloud在配置期间标记我的EC2实例。我认为这是需要在cloud.profiles中完成的事情。我一直在寻找文档和在配置EC2实例时尝试为其创建标记的具体示例。我发现创建后的标记实例可以通过以下命令行完成: salt cloud-a set_标记mymachine tag1=somestuff tag2='Other stuff' 但是,我希望在创建实例时自动执行这些操作 另一方面,我还没有发现salt文档是最有用的。如果有教程或演练帮助

我对使用saltstack相当陌生,我正在尝试让saltcloud在配置期间标记我的EC2实例。我认为这是需要在cloud.profiles中完成的事情。我一直在寻找文档和在配置EC2实例时尝试为其创建标记的具体示例。我发现创建后的标记实例可以通过以下命令行完成:
salt cloud-a set_标记mymachine tag1=somestuff tag2='Other stuff'
但是,我希望在创建实例时自动执行这些操作

另一方面,我还没有发现salt文档是最有用的。如果有教程或演练帮助我更熟悉saltstack,我将非常感谢您的帮助


谢谢,

ec2.py云模块在配置文件中查找“标记”

以下示例摘自上述文档

mysql_profile:
  provider: ec2
  size: 1024MB
  tags:
    tag1: somestuff
    tag2: "others stuff" 
  [...]

salt.states.cloud文档谈到使用“cloud.taged”salt状态,但似乎还没有实现

创建实例时,您似乎可以像这样使用tag属性:

my-server-name:
    cloud.present:
        - name: 'my-server-name'
        #...other properties
        - tag:
            'Env': 'auto-test'
这将在创建时应用标记,但如果实例已存在,则不会更新它们。另外,我不知道如何在cloud.present中标记EBS卷

您可以使用Python boto库重新标记SaltStack创建的实例,并标记EBS卷。下面的示例代码-适用于实例和EBS卷

def find_instance(instanceName, region):
    boto_ec2 = boto.ec2.connect_to_region(region)
    instances = boto_ec2.get_only_instances()
    for instance in instances:
        if instance.tags.get("Name", None) == instanceName:
            return instance
    return None



def ensure_instance_tags(instance, region, tags):
    newTags = {}    

    for tagName in tags:
        if instance.tags.get(tagName, None) != tags[tagName]:
            newTags[tagName] = tags[tagName]

    if bool(newTags):
        sys.stdout.write("Updating tags for instance " + instance.id + "\n")
        boto_ec2 = boto.ec2.connect_to_region(region)
        boto_ec2.create_tags(instance.id, newTags)

这些是盐粒,不是AWS tagsAh,我误解了这个问题。我会调查的。看起来至少最新版本的salt通过在配置文件中查找dict“tags”来实现这一点。从cloud/clouds/ec2.py中的第3469行开始,@AnthonyHayward我彻底检查了我的答案。请复习。链接到来源:谢谢。我也更正了我的答案,似乎你可以把“标签”放在云端。现在的状态。