使用Ansible OpenStack SDK创建OpenStack云主机
安装OpenStack SDK
pip install openstacksdk
安装Ansible
pip install ansible
创建一个Ansible playbook文件,例如 create_instance.yml
,并添加以下内容:
- name: Create OpenStack instance
hosts: localhost
gather_facts: no
vars:
instance_name: "my-instance"
flavor: "ecs.2C.4096MB.40GB"
image: "Centos7.6_1810_x64"
network: "provider"
key_name: "wanghongwei public key"
security_groups: "default"
tasks:
- name: Create an instance
os_server:
state: present
auth:
auth_url: http://<auth_url>:<auth_port>/v3
username: <username>
password: <password>
project_name: <project_name>
project_domain_name: <project_domain_name>
user_domain_name: <user_domain_name>
wait: true
name: "{{ instance_name }}"
flavor: "{{ flavor }}"
image: "{{ image }}"
network: "{{ network }}"
key_name: "{{ key_name }}"
security_groups: "{{ security_groups }}"
timeout: 200
register: instance
- name: Print instance details
debug:
var: instance
- name: Set fact for instance IP
set_fact:
instance_ip: "{{ instance.server.public_v4 }}"
- name: Print instance IP
debug:
var: instance_ip
- name: Wait for SSH to be available
wait_for:
host: "{{ instance_ip }}"
port: 22
delay: 5
timeout: 600
- name: Install nginx on instance
yum:
name: "{{ item }}"
state: present
loop:
- epel-release
- nginx
delegate_to: "{{ instance_ip }}"
- name: Start nginx on instance
service:
name: nginx
state: started
delegate_to: "{{ instance_ip }}"
- name: Open port 80
firewalld:
port: 80/tcp
permanent: true
state: enabled
immediate: true
delegate_to: "{{ instance_ip }}"
替换 <auth_url>
、<auth_port>
、<username>
、<password>
、<project_name>
、<project_domain_name>
、<user_domain_name>
为您的OpenStack环境信息和云主机配置信息。
运行Ansible playbook:
ansible-playbook create_instance.yml
等待Ansible playbook执行完成,您将在OpenStack上创建一台云主机。
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。