背景:
本文将介绍如何使用Ansible自动化购买阿里云ECS实例,更好的整合流程,自动化购买 ECS
操作步骤
1. 配置好阿里云 CLI命令行安装
参考之前写的文档
2. Ansible PlayBook
# Task ECS
- name: 安装 ECS
hosts: localhost
vars:
ecs_password: 'Ecs-user123'
release_time: '2023-08-15T15:59:00Z'
tasks:
- name: 购买 ECS 实例
ansible.builtin.shell:
cmd: >
aliyun ecs RunInstances \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--ImageId 'centos_7_9_x64_20G_alibase_20230613.vhd' \
--VSwitchId 'vsw-bp1r3x5opt82hu0qmyoio' \
--SecurityGroupId 'sg-bp1fkhr9p673rn627c0r' \
--InternetMaxBandwidthIn 5 \
--InternetMaxBandwidthOut 5 \
--Password '{{ ecs_password }}' \
--InternetChargeType PayByTraffic \
--SystemDisk.Size 40 \
--SystemDisk.Category cloud_efficiency \
--AutoReleaseTime '{{ release_time }}' \
--SpotStrategy SpotAsPriceGo \
--InstanceChargeType PostPaid \
--CreditSpecification Standard \
--InstanceType 'ecs.t5-lc1m1.small' \
--AutoPay true \
--ImageOptions.LoginAsNonRoot true --version 2014-05-26 --force
changed_when: false
register: shell_result
- name: 提取JSON 信息
ansible.builtin.set_fact:
parsed_data: "{{ shell_result.stdout }}"
- name: 提取 ID
ansible.builtin.set_fact:
ecs_ids: "{{ parsed_data.InstanceIdSets.InstanceIdSet }}"
- name: 提取 ID 字符串
ansible.builtin.set_fact:
ecs_ids_str: "{{ ecs_ids | to_json }}"
- name: 打印 ID
ansible.builtin.debug:
var: ecs_ids_str
- name: 等待 30s (方便公网IP)
ansible.builtin.wait_for:
sleep: 30
- name: 查询 公网IP
ansible.builtin.shell:
cmd: >
aliyun ecs DescribeInstances \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--InstanceIds '{{ ecs_ids_str }}'
changed_when: false
register: shell_result1
- name: 提取JSON 信息1
ansible.builtin.set_fact:
parsed_data1: "{{ shell_result1.stdout }}"
- name: 提取 详细信息
ansible.builtin.set_fact:
ecs_details: "{{ parsed_data1.Instances.Instance }}"
- name: 打印 详细信息
ansible.builtin.debug:
var: ecs_details
3. 执行
PLAY [安装 ECS] *******************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************
ok: [localhost]
TASK [购买 ECS 实例] **************************************************************************************************************************
ok: [localhost]
TASK [提取JSON 信息] **************************************************************************************************************************
ok: [localhost]
TASK [提取 ID] ********************************************************************************************************************************
ok: [localhost]
TASK [提取 ID 字符串] *************************************************************************************************************************
ok: [localhost]
TASK [打印 ID] ********************************************************************************************************************************
ok: [localhost] => {
"ecs_ids_str": "[\"i-bp1hnd3bgw6leyqss6mw\"]"
}
TASK [等待 30s (方便公网IP)] ******************************************************************************************************************
总结:
Ansible的自动化能力使您能够快速定义购买ECS实例的任务和参数,并在多个主机上进行批量操作。此外,Ansible的可重复性和可扩展性使得在未来购买更多ECS实例时也能轻松应对。通过将购买过程自动化,您可以将更多时间和精力投入到其他重要的任务和项目中。
希望通过本文,读者能够了解到使用Ansible自动化购买阿里云ECS实例的方法,并体验到其带来的便利和效率提升。无论是个人开发者还是企业用户,通过Ansible的自动化功能,购买和管理阿里云ECS实例都变得更加简单和高效。借助自动化工具的力量,您可以更好地利用云计算资源,提升工作效率,并满足不断增长的计算需求。