繁体   English   中英

如何使用Ansible创建AWS EC2实例并将其分配给ELB?

[英]How do I create an AWS EC2 instance and assign it to an ELB using Ansible?

我正在尝试使用Ansible创建EC2实例,配置Web服务器,然后将其注册到负载均衡器。 我没有创建EC2实例的问题,也没有配置Web服务器,但是根据我使用的代码,所有尝试将其注册到现有负载均衡器的尝试都会失败。

有没有人成功这样做?

以下是ec2和ec2_elb模块的Ansible文档的链接:

http://docs.ansible.com/ec2_module.html

http://docs.ansible.com/ec2_elb_module.html

或者,如果无法针对ELB帖子创建注册EC2实例,我会选择另一个“播放”来收集具有特定名称的所有EC2实例并循环遍历它们,将它们添加到ELB。

这就是我的工作:

- name: Add machine to elb
  local_action:
      module: ec2_elb
      aws_access_key: "{{lookup('env', 'AWS_ACCESS_KEY')}}"
      aws_secret_key: "{{lookup('env', 'AWS_SECRET_KEY')}}"
      region: "{{ansible_ec2_placement_region}}"
      instance_id: "{{ ansible_ec2_instance_id }}"
      ec2_elbs: "{{elb_name}}"
      state: present

最大的问题是访问和密钥。 ec2_elb模块似乎没有使用环境变量或读取〜/ .boto,所以我不得不手动传递它们。

如果使用ec2_facts模块,则ansible_ec2_*变量可用。 您当然可以自己填写这些参数。

下面的剧本应该适用于创建ec2服务器并将其注册到elb。 确保正确设置了变量,或者您也可以在playbook中对变量值进行硬编码。

- name: Creating webserver
  local_action:
    module: ec2
    region: "{{ region }}"
    key_name: "{{ key }}"
    instance_type: t1.micro
    image: "{{ ami_id }}"
    wait: yes
    assign_public_ip: yes
    group_id: ["{{ sg_webserver }}"]
    vpc_subnet_id: "{{ PublicSubnet }}"
    instance_tags: '{"Name": "webserver", "Environment": "Dev"}
  register: webserver
- name: Adding Webserver to ELB
  local_action: 
    module: ec2_elb
    ec2_elbs: "{{ elb_name }}"
    instance_id: "{{ item.id }}"
    state: 'present'
    region: "{{ region }}"
  with_items: nat.instances

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM