centos6中AWS自动化运维脚本分享

  背景介绍:目前项目中使用了大量的AWS EC2 Instances作为服务器,在自动化运维方面,我们之前一直使用的是AWS CLI命令行工具,然后在Shell脚本中调用.
 
  最近我想通过脚本实现一个“Clone”的功能,模拟Web Console上的“Launch More Like This”来创建Instance,但在Shell脚本中实现起来感觉不太舒服,于是就直接利用Python的boto库写了一个,在此分享给大家.
 
  具体内容:
 
  脚本地址:https://github.com/mcsrainbow/python-demos/blob/master/demos/awscli.py
 
  相关示例:温馨提示:我的Blog页面默认没有采用宽屏模式,如果觉得下面的代码不太美观,可以点击右上角的“<>”切换到宽屏模式,代码如下:
 
  $ ./awscli.py -h
  usage: awscli.py [-h] (–create | –clone | –terminate) –region REGION
                   [–instance_name INSTANCE_NAME] [–image_id IMAGE_ID]
                   [–instance_type INSTANCE_TYPE] [–key_name KEY_NAME]
                   [–security_group_ids SECURITY_GROUP_IDS]
                   [–subnet_id SUBNET_ID]
                   [–src_instance_name SRC_INSTANCE_NAME]
                   [–dest_instance_name DEST_INSTANCE_NAME]
                   [–private_ip_address PRIVATE_IP_ADDRESS]
                   [–instance_id INSTANCE_ID] [–volume_size VOLUME_SIZE]
                   [–volume_type {standard,io1,gp2}]
                   [–volume_zone VOLUME_ZONE] [–volume_iops VOLUME_IOPS]
                   [–volume_delete_on_termination]
                   [–load_balancer_name LOAD_BALANCER_NAME]
                   [–quick]
  examples:
    ./awscli.py –create –region us-west-1 –instance_name idc1-server2  
                –image_id ami-30f01234 –instance_type t1.micro  
                –key_name idc1-keypair1 –security_group_ids sg-eaf01234f  
                –subnet_id subnet-6d901234
    ./awscli.py –create –region us-west-1 –instance_name idc1-server3  
                –image_id ami-30f01234 –instance_type t1.micro  
                –key_name idc1-keypair1 –security_group_ids sg-eaf01234f  
                –subnet_id subnet-6d901234 –volume_size 10 –volume_type gp2  
                –volume_zone us-west-1a –volume_delete_on_termination  
                –load_balancer_name idc1-elb1 –private_ip_address 172.16.2.23
    ./awscli.py –clone –region us-west-1 –src_instance_name idc1-server1  
                –dest_instance_name idc1-server2
    ./awscli.py –clone –region us-west-1 –src_instance_name idc1-server1  
                –dest_instance_name idc1-server3 –private_ip_address 172.16.2.23
    ./awscli.py –terminate –region us-west-1 –instance_name idc1-server3
    ./awscli.py –terminate –region us-west-1 –instance_id i-01234abc
    ./awscli.py –terminate –region us-west-1 –instance_id i-01234abc –quick
    …
  optional arguments:
    -h, –help            show this help message and exit
    –create              create instance
    –clone               clone instance
    –terminate           terminate instance
    –region REGION
    –instance_name INSTANCE_NAME
    –image_id IMAGE_ID
    –instance_type INSTANCE_TYPE
    –key_name KEY_NAME
    –security_group_ids SECURITY_GROUP_IDS
    –subnet_id SUBNET_ID
    –src_instance_name SRC_INSTANCE_NAME
    –dest_instance_name DEST_INSTANCE_NAME
    –private_ip_address PRIVATE_IP_ADDRESS
    –instance_id INSTANCE_ID
    –volume_size VOLUME_SIZE
                          in GiB
    –volume_type {standard,io1,gp2}
    –volume_zone VOLUME_ZONE
    –volume_iops VOLUME_IOPS
    –volume_delete_on_termination
                          delete volumes on termination
    –load_balancer_name LOAD_BALANCER_NAME
    –quick               no wait on termination
  $ ./awscli.py –create –region us-west-1 –instance_name idc1-server1 –image_id ami-30f01234  
  –instance_type t1.micro –key_name idc1-keypair1 –security_group_ids sg-eaf01234f  
  –subnet_id subnet-6d901234 –volume_size 10 –volume_type gp2 –volume_zone us-west-1a  
  –volume_delete_on_termination –load_balancer_name idc1-elb1 –private_ip_address 172.16.2.21
  1. Launching instance: idc1-server1
  2. Creating tag as instance name: {"Name": idc1-server1}
  Instance state: pending
  Instance state: running
  3. Creating secondary volume for instance: idc1-server1 as gp2 10G
  Volume status: available
  4. Attaching volume: vol-4ba6a54c to instance: idc1-server1 as device: /dev/sdf
  5. Adding instance: idc1-server1 to ELB: idc1-elb1
  $ ./awscli.py –clone –region us-west-1 –src_instance_name idc1-server1 –dest_instance_name idc1-server2
  1. Launching instance: idc1-server2
  2. Creating tag as instance name: {"Name": idc1-server2}
  Instance state: pending
  Instance state: running
  3. Creating secondary volume for instance: idc1-server2 as gp2 10G
  Volume status: available
  4. Attaching volume: vol-5b61635c to instance: idc1-server2 as device: /dev/sdf
  5. Adding instance: idc1-server2 to ELB: idc1-elb1
  $ ./awscli.py –terminate –region us-west-1 –instance_name idc1-server2  //phpfensi.com
  Terminating instance: idc1-server2 id: i-86976d62
  Instance state: shutting-down
  Instance state: shutting-down
  Instance state: terminated。
 

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章