使用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上创建一台云主机。

posted @ 2023-05-19 09:35  wanghongwei-dev  阅读(91)  评论(0编辑  收藏  举报