Amazon ec2 使用Saltstack标记EC2实例
我对使用saltstack相当陌生,我正在尝试让saltcloud在配置期间标记我的EC2实例。我认为这是需要在cloud.profiles中完成的事情。我一直在寻找文档和在配置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文档是最有用的。如果有教程或演练帮助
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我彻底检查了我的答案。请复习。链接到来源:谢谢。我也更正了我的答案,似乎你可以把“标签”放在云端。现在的状态。