我对使用saltstack相当新,我试图在配置期间让salt-cloud标记我的EC2实例。我认为这是需要在cloud.profiles中完成的事情。我一直在寻找文档和尝试在配置EC2实例时为其创建标记的具体示例。我发现创建后的标记实例可以通过以下命令行完成:
salt-cloud -a set_tags mymachine tag1=somestuff tag2='Other stuff'
但是,我希望在创建实例时自动执行这些操作。
另一方面,我没有发现盐文档是最有帮助的。如果有一个教程或演练来帮助我更多地熟悉saltstack,我将非常感谢您的意见。
谢谢,
答案 0 :(得分:2)
ec2.py云模块在配置文件中查找“标记”。
以下示例来自上述文件。
mysql_profile:
provider: ec2
size: 1024MB
tags:
tag1: somestuff
tag2: "others stuff"
[...]
答案 1 :(得分:1)
salt.states.cloud文档谈论使用“cloud.tagged”Salt状态,但它似乎没有实现。
创建实例时,似乎可以使用这样的标记属性:
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)