gpt4 book ai didi

amazon-web-services - Ansible EC2 - 对一组实例执行操作

转载 作者:行者123 更新时间:2023-12-04 08:14:50 27 4
gpt4 key购买 nike

这可能很明显,但是如何在 Ansible 中对一组服务器执行操作(这是使用 EC2 插件)?

我可以创建我的实例:

---
- hosts: 127.0.0.1
connection: local
- name: Launch instances
local_action:
module: ec2
region: us-west-1
group: cassandra
keypair: cassandra
instance_type: t2.micro
image: ami-4b6f650e
count: 1
wait: yes
register: cass_ec2

我可以将实例放入标签中:

   - name: Add tag to instances
local_action: ec2_tag resource={{ item.id }} region=us-west-1 state=present
with_items: cass_ec2.instances
args:
tags:
Name: cassandra

现在,假设我想在每台服务器上运行一个操作:

# This does not work - It runs the command on localhost
- name: TEST - touch file
file: path=/test.txt state=touch
with_items: cass_ec2.instances

如何对刚刚创建的远程实例运行命令?

最佳答案

为了仅针对新创建的服务器运行,我使用临时组名并通过在同一剧本中使用第二次播放来执行以下操作:

- hosts: localhost
tasks:
- name: run your ec2 create a server code here
...
register: cass_ec2

- name: add host to inventory
add_host: name={{ item.private_ip }} groups=newinstances
with_items: cas_ec2.instances

- hosts: newinstances
tasks:
- name: do some fun stuff on the new instances here

或者,如果您始终标记所有服务器(如果您还必须区分生产和开发,则使用多个标签;并且您还使用 ec2.py 作为动态 list 脚本;并且您正在针对所有服务器运行此第二个剧本中的服务器运行,然后您可以轻松地执行以下操作:

- hosts: tag_Name_cassandra
tasks:
- name: run your cassandra specific tasks here

我个人在上面也使用了模式标记(tag_mode_production vs tag_mode_development),并强制 Ansible 仅在特定模式(开发)的特定类型(在您的情况下为 Name=cassandra)的服务器上运行。如下所示:

- hosts: tag_Name_cassandra:&tag_mode_development

只需确保正确指定标签名称和值 - 它区分大小写...

关于amazon-web-services - Ansible EC2 - 对一组实例执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27326266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com