首页 > 系统 > Linux > 正文

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

2024-08-27 23:59:06
字体:
来源:转载
供稿:网友

背景介绍:目前项目中使用了大量的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页面默认没有采用宽屏模式,如果觉得下面的代码不太美观,可以点击右上角的“<>”切换到宽屏模式,代码如下:

  1. $ ./awscli.py -h 
  2. usage: awscli.py [-h] (--create | --clone | --terminate) --region REGION 
  3.                  [--instance_name INSTANCE_NAME] [--image_id IMAGE_ID] 
  4.                  [--instance_type INSTANCE_TYPE] [--key_name KEY_NAME] 
  5.                  [--security_group_ids SECURITY_GROUP_IDS] 
  6.                  [--subnet_id SUBNET_ID] 
  7.                  [--src_instance_name SRC_INSTANCE_NAME] 
  8.                  [--dest_instance_name DEST_INSTANCE_NAME] 
  9.                  [--private_ip_address PRIVATE_IP_ADDRESS] 
  10.                  [--instance_id INSTANCE_ID] [--volume_size VOLUME_SIZE] 
  11.                  [--volume_type {standard,io1,gp2}] 
  12.                  [--volume_zone VOLUME_ZONE] [--volume_iops VOLUME_IOPS] 
  13.                  [--volume_delete_on_termination] 
  14.                  [--load_balancer_name LOAD_BALANCER_NAME] 
  15.                  [--quick] 
  16. examples: 
  17.   ./awscli.py --create --region us-west-1 --instance_name idc1-server2  
  18.               --image_id ami-30f01234 --instance_type t1.micro  
  19.               --key_name idc1-keypair1 --security_group_ids sg-eaf01234f  
  20.               --subnet_id subnet-6d901234 
  21.   ./awscli.py --create --region us-west-1 --instance_name idc1-server3  
  22.               --image_id ami-30f01234 --instance_type t1.micro  
  23.               --key_name idc1-keypair1 --security_group_ids sg-eaf01234f  
  24.               --subnet_id subnet-6d901234 --volume_size 10 --volume_type gp2  
  25.               --volume_zone us-west-1a --volume_delete_on_termination  
  26.               --load_balancer_name idc1-elb1 --private_ip_address 172.16.2.23 
  27.   ./awscli.py --clone --region us-west-1 --src_instance_name idc1-server1  
  28.               --dest_instance_name idc1-server2 
  29.   ./awscli.py --clone --region us-west-1 --src_instance_name idc1-server1  
  30.               --dest_instance_name idc1-server3 --private_ip_address 172.16.2.23 
  31.   ./awscli.py --terminate --region us-west-1 --instance_name idc1-server3 
  32.   ./awscli.py --terminate --region us-west-1 --instance_id i-01234abc 
  33.   ./awscli.py --terminate --region us-west-1 --instance_id i-01234abc --quick 
  34.   ... 
  35. optional arguments: 
  36.   -h, --help            show this help message and exit 
  37.   --create              create instance 
  38.   --clone               clone instance 
  39.   --terminate           terminate instance 
  40.   --region REGION 
  41.   --instance_name INSTANCE_NAME 
  42.   --image_id IMAGE_ID 
  43.   --instance_type INSTANCE_TYPE 
  44.   --key_name KEY_NAME 
  45.   --security_group_ids SECURITY_GROUP_IDS 
  46.   --subnet_id SUBNET_ID 
  47.   --src_instance_name SRC_INSTANCE_NAME 
  48.   --dest_instance_name DEST_INSTANCE_NAME 
  49.   --private_ip_address PRIVATE_IP_ADDRESS 
  50.   --instance_id INSTANCE_ID 
  51.   --volume_size VOLUME_SIZE 
  52.                         in GiB 
  53.   --volume_type {standard,io1,gp2} 
  54.   --volume_zone VOLUME_ZONE 
  55.   --volume_iops VOLUME_IOPS 
  56.   --volume_delete_on_termination 
  57.                         delete volumes on termination 
  58.   --load_balancer_name LOAD_BALANCER_NAME 
  59.   --quick               no wait on termination 
  60. $ ./awscli.py --create --region us-west-1 --instance_name idc1-server1 --image_id ami-30f01234  
  61. --instance_type t1.micro --key_name idc1-keypair1 --security_group_ids sg-eaf01234f  
  62. --subnet_id subnet-6d901234 --volume_size 10 --volume_type gp2 --volume_zone us-west-1a  
  63. --volume_delete_on_termination --load_balancer_name idc1-elb1 --private_ip_address 172.16.2.21 
  64. 1. Launching instance: idc1-server1 
  65. 2. Creating tag as instance name: {"Name": idc1-server1} 
  66. Instance state: pending 
  67. Instance state: running 
  68. 3. Creating secondary volume for instance: idc1-server1 as gp2 10G 
  69. Volume status: available 
  70. 4. Attaching volume: vol-4ba6a54c to instance: idc1-server1 as device: /dev/sdf 
  71. 5. Adding instance: idc1-server1 to ELB: idc1-elb1 
  72. $ ./awscli.py --clone --region us-west-1 --src_instance_name idc1-server1 --dest_instance_name idc1-server2 
  73. 1. Launching instance: idc1-server2 
  74. 2. Creating tag as instance name: {"Name": idc1-server2} 
  75. Instance state: pending 
  76. Instance state: running 
  77. 3. Creating secondary volume for instance: idc1-server2 as gp2 10G 
  78. Volume status: available 
  79. 4. Attaching volume: vol-5b61635c to instance: idc1-server2 as device: /dev/sdf 
  80. 5. Adding instance: idc1-server2 to ELB: idc1-elb1 
  81. $ ./awscli.py --terminate --region us-west-1 --instance_name idc1-server2  //Vevb.com 
  82. Terminating instance: idc1-server2 id: i-86976d62 
  83. Instance state: shutting-down 
  84. Instance state: shutting-down 
  85. Instance state: terminated

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表