我正在尝试使用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。
答案 0 :(得分: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_*
变量可用。您当然可以自己填写这些参数。
答案 1 :(得分:0)
下面的剧本应该适用于创建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