3

我正在尝试使用 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。

4

2 回答 2

3

这就是我所做的工作:

- 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_*变量可用。当然,您可以自己填写这些参数。

于 2014-06-15T09:15:39.797 回答
0

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

- 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
于 2015-03-13T23:54:16.497 回答