2

私はソルトスタックの使用にかなり慣れていないため、プロビジョニング中にソルトクラウドに EC2 インスタンスにタグを付けようとしています。これは cloud.profiles で行う必要があると思います。プロビジョニング時に EC2 インスタンスのタグを作成しようとするドキュメントと具体的な例を探していました。作成後のインスタンスのタグ付けは、コマンド ラインから次のように実行できることがわかりまし
salt-cloud -a set_tags mymachine tag1=somestuff tag2='Other stuff' た。

余談ですが、ソルトのドキュメントが最も役立つとは思いませんでした。ソルトスタックに慣れるのに役立つチュートリアルまたはウォークスルーがあれば、その情報をいただければ幸いです。

ありがとう、

4

2 に答える 2

2

ec2.py クラウド モジュールは、プロファイルで「タグ」を探します。

次の例は、上記のドキュメントから引用したものです。

mysql_profile:
  provider: ec2
  size: 1024MB
  tags:
    tag1: somestuff
    tag2: "others stuff" 
  [...]
于 2014-01-13T21:55:39.473 に答える
1

salt.states.cloud ドキュメントでは、「cloud.tagged」Salt 状態の使用について説明されていますが、実装されていないようです。

http://docs.saltstack.com/en/latest/ref/states/all/salt.states.cloud.html#using-states-instead-of-maps-to-deploy-clouds

インスタンスを作成するときは、次のようにタグ プロパティを使用できるようです。

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)
于 2015-06-30T14:48:42.717 に答える