Ansible 是一个自动化工具,用于配置管理、应用部署、任务自动化等。Ansible Playbook 是 Ansible 的剧本文件,用于定义一系列任务并依次执行。AWS EC2(Elastic Compute Cloud)是亚马逊提供的弹性计算服务,允许用户在云中启动和管理虚拟服务器。
ec2_instance
模块。pip
模块。以下是一个简单的 Ansible Playbook 示例,用于创建一个 EC2 实例并安装 Python 包:
---
- name: Create EC2 instance and install Python packages
hosts: localhost
gather_facts: no
vars:
instance_type: t2.micro
ami_id: ami-0c55b159cbfafe1f0
key_name: my-key-pair
security_group: my-security-group
region: us-west-2
python_packages:
- requests
- flask
tasks:
- name: Launch EC2 instance
ec2_instance:
image_id: "{{ ami_id }}"
instance_type: "{{ instance_type }}"
key_name: "{{ key_name }}"
security_groups: "{{ security_group }}"
region: "{{ region }}"
wait: true
register: ec2
- name: Wait for SSH to be available
wait_for:
host: "{{ ec2.instances[0].public_ip }}"
port: 22
state: started
delay: 10
timeout: 120
- name: Add new instance to host group
add_host:
hostname: "{{ ec2.instances[0].public_ip }}"
groupname: launched
- name: Install Python packages
pip:
requirements: /path/to/requirements.txt
executable: /usr/bin/pip3
delegate_to: "{{ item.public_ip }}"
with_items: "{{ ec2.instances }}"
InvalidAMIID.NotFound
错误原因:指定的 AMI ID 不存在。
解决方法:检查并确保使用的 AMI ID 是正确的,并且该 AMI 在指定的区域中可用。
pip
模块找不到的错误原因:目标实例上没有安装 pip
或 pip3
。
解决方法:在 Playbook 中添加安装 pip
的任务,例如:
- name: Install pip
package:
name: python3-pip
state: present
delegate_to: "{{ item.public_ip }}"
with_items: "{{ ec2.instances }}"
通过以上步骤,你可以使用 Ansible Playbook 自动化创建 EC2 实例并安装 Python 包,提高部署效率和一致性。
领取专属 10元无门槛券
手把手带您无忧上云