使用Ansible启动AWS EC2实例的最佳方法

乔雷尔

我正在尝试在Amazon AWS上创建一个具有ansible的小型Web应用程序基础架构,我想完成所有过程:启动实例,配置服务等。但是我找不到合适的工具或模块来处理来自ansible的问题。主要是EC2启动。

非常感谢。

阿尔巴布·纳扎尔(Arbab Nazar)

这是您问题的简短答案,如果您想获得详细信息和完全自动化的角色,请告诉我。谢谢

先决条件

  • Ansible

  • Python Boto库

  • 在环境设置中设置AWS访问和密钥
    (最好在〜。/ boto内部)

要创建EC2实例:

为了创建EC2实例,请修改以下参数,您可以在“ vars”下的“ ec2_launch.yml”文件中找到这些参数:

  • 想要启动实例的地区#,美国,澳大利亚,爱尔兰等
  • count#您要创建的实例数

    一旦提到了这些参数,请运行以下命令:

ansible-playbook -i托管ec2_launch.yml

主机文件的内容

[local]
localhost

[webserver]

ec2_launch.yml文件的内容

---
  - name: Provision an EC2 Instance
    hosts: local
    connection: local
    gather_facts: False
    tags: provisioning
    # Necessary Variables for creating/provisioning the EC2 Instance
    vars:
      instance_type: t1.micro
      security_group: webserver # Change the security group name here
      image: ami-98aa1cf0 # Change the AMI, from which you want to launch the server
      region: us-east-1 # Change the Region
      keypair: ansible # Change the keypair name
      count: 1

    # Task that will be used to Launch/Create an EC2 Instance
    tasks:

      - name: Create a security group
        local_action: 
          module: ec2_group
          name: "{{ security_group }}"
          description: Security Group for webserver Servers
          region: "{{ region }}"
          rules:
            - proto: tcp
              type: ssh
              from_port: 22
              to_port: 22
              cidr_ip: 0.0.0.0/0
            - proto: tcp
              from_port: 80
              to_port: 80
              cidr_ip: 0.0.0.0/0
          rules_egress:
            - proto: all
              type: all
              cidr_ip: 0.0.0.0/0


      - name: Launch the new EC2 Instance
        local_action: ec2 
                      group={{ security_group }} 
                      instance_type={{ instance_type}} 
                      image={{ image }} 
                      wait=true 
                      region={{ region }} 
                      keypair={{ keypair }}
                      count={{count}}
        register: ec2

      - name: Add the newly created EC2 instance(s) to the local host group (located inside the directory)
        local_action: lineinfile 
                      dest="./hosts" 
                      regexp={{ item.public_ip }} 
                      insertafter="[webserver]" line={{ item.public_ip }}
        with_items: "{{ ec2.instances }}"


      - name: Wait for SSH to come up
        local_action: wait_for 
                      host={{ item.public_ip }} 
                      port=22 
                      state=started
        with_items: "{{ ec2.instances }}"

      - name: Add tag to Instance(s)
        local_action: ec2_tag resource={{ item.id }} region={{ region }} state=present
        with_items: "{{ ec2.instances }}"
        args:
          tags:
            Name: webserver

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Jenkins 中使用 AWS 命令获取 EC2 实例的 CPU 利用率的最佳方法是什么

来自分类Dev

使用AWS凭证由Ansible创建EC2实例

来自分类Dev

使用Ansible连接到AWS EC2实例

来自分类Dev

PXE 从 AWS EC2 实例启动?

来自分类Dev

无法使用deltacloud启动AWS EC2实例

来自分类Dev

使用名称启动EC2实例

来自分类Dev

如何在Ansible中启动所有AWS EC2实例

来自分类Dev

Ansible-如何启动(购买)保留的EC2实例

来自分类Dev

在AWS EC2实例启动脚本中使用AWS命令行功能

来自分类Dev

在AWS EC2实例启动脚本中使用AWS命令行功能

来自分类Dev

AWS CloudWatch启动/停止EC2实例

来自分类Dev

等待EC2实例启动

来自分类Dev

并行启动多个EC2实例

来自分类Dev

安排 ec2 实例启动/停止

来自分类Dev

使用ansible剧本启动已停止的AWS实例

来自分类Dev

复制AWS EC2实例

来自分类Dev

AWS EC2 Windows,预留实例

来自分类Dev

AWS SSM 检查 ec2 实例

来自分类Dev

使用boto3从AWS Lambda启动EC2实例时超时

来自分类Dev

使用AWS的PHP SDK重新启动ec2实例

来自分类Dev

使用AWS开发工具包启动ec2实例时指定存储

来自分类Dev

AWS EC2:在使用 CLI 启动实例时添加标签

来自分类Dev

AWS Java SDK - 使用公共 IP 启动 EC2 Spot 实例

来自分类Dev

使用 .NET SDK 启动带有用户数据的 AWS EC2 实例

来自分类Dev

使用 Ansible 配置多个 EC2 实例

来自分类Dev

使用Boto轮询停止或启动的EC2实例

来自分类Dev

使用命名约定启动多个 EC2 实例

来自分类Dev

使用Boto过滤EC2实例

来自分类Dev

使用Jenkins部署EC2实例