diff --git a/olam/create_instance.yml b/olam/create_instance.yml index cecda4c..4b0b68d 100644 --- a/olam/create_instance.yml +++ b/olam/create_instance.yml @@ -323,7 +323,7 @@ - use_olae_only - name: Install Oracle Linux Automation Manager - ansible.builtin.include_tasks: deploy_olam_tasks.yml + ansible.builtin.include_tasks: deploy_olam_single.yml vars: control_node_ip: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" when: @@ -334,14 +334,18 @@ ansible.builtin.import_playbook: update_all_rpms.yml when: update_all -- name: Install free ipa server - ansible.builtin.import_playbook: deploy_free_ipa.yml +- name: Provision free ipa server + ansible.builtin.import_playbook: provision_free_ipa.yml when: use_freeipa -- name: Install git server - ansible.builtin.import_playbook: deploy_git_server.yml +- name: Provision git server + ansible.builtin.import_playbook: provision_git_server.yml when: use_git +- name: Provision kvm server + ansible.builtin.import_playbook: provision_kvm.yml + when: use_kvm + - name: Print instances hosts: all become: true diff --git a/olam/default_vars.yml b/olam/default_vars.yml index afed48e..5a1e1ed 100644 --- a/olam/default_vars.yml +++ b/olam/default_vars.yml @@ -23,4 +23,20 @@ passwordless_ssh: true olam_single_host: false use_olae_only: false use_freeipa: false -use_git: false \ No newline at end of file +use_git: false + +use_kvm: false +create_vm: false +ol8_base_image_name: OL8U10_x86_64-kvm-b237.qcow2 +ol8_base_image_url: https://yum.oracle.com/templates/OracleLinux/OL8/u10/x86_64/{{ ol8_base_image_name }} +ol8_base_image_sha: 53a5eee27c59f335ba1bdb0afc2c3273895f128dd238b51a78f46ad515cbc662 +ol9_base_image_name: OL9U5_x86_64-kvm-b253.qcow2 +ol9_base_image_url: https://yum.oracle.com/templates/OracleLinux/OL9/u5/x86_64/{{ ol9_base_image_name }} +ol9_base_image_sha: 3b00bbbefc8e78dd28d9f538834fb9e2a03d5ccdc2cadf2ffd0036c0a8f02021 +libvirt_pool_dir: "/var/lib/libvirt/images" +vm_name: ol9-dev +vm_vcpus: 2 +vm_ram_mb: 2048 +vm_net: default +vm_root_pass: +cleanup_tmp: no \ No newline at end of file diff --git a/olam/deploy_olam_tasks.yml b/olam/deploy_olam_single.yml similarity index 100% rename from olam/deploy_olam_tasks.yml rename to olam/deploy_olam_single.yml diff --git a/olam/deploy_free_ipa.yml b/olam/provision_free_ipa.yml similarity index 100% rename from olam/deploy_free_ipa.yml rename to olam/provision_free_ipa.yml diff --git a/olam/deploy_git_server.yml b/olam/provision_git_server.yml similarity index 100% rename from olam/deploy_git_server.yml rename to olam/provision_git_server.yml diff --git a/olam/provision_kvm.yml b/olam/provision_kvm.yml new file mode 100644 index 0000000..cb203e1 --- /dev/null +++ b/olam/provision_kvm.yml @@ -0,0 +1,121 @@ +--- +# Copyright (c) 2024 Oracle and/or its affiliates. +# This software is made available to you under the terms of the Universal Permissive License (UPL), Version 1.0. +# The Universal Permissive License (UPL), Version 1.0 (see COPYING or https://oss.oracle.com/licenses/upl) +# See LICENSE.TXT for details. + +- name: Install a KVM server + hosts: kvm-server + vars_files: + - default_vars.yml + become: true + + tasks: + + - name: Install Oracle Linux 8 virtualization packages + ansible.builtin.dnf: + name: + - "@virt" + - virt-install + - virt-viewer + - containers-common + - cockpit + - cockpit-machines + state: present + when: ansible_distribution == 'OracleLinux' and ansible_distribution_major_version == '8' + + - name: Install Oracle Linux 9 virtualization packages + ansible.builtin.dnf: + name: + - qemu-kvm + - libvirt + - virt-install + - virt-viewer + - containers-common + - cockpit + - cockpit-machines + state: present + when: ansible_distribution == 'OracleLinux' and ansible_distribution_major_version == '9' + + - name: Start and enable Oracle Linux 8 monolithic virtualization services + ansible.builtin.systemd: + state: started + name: libvirtd.service + enabled: true + when: ansible_distribution == 'OracleLinux' and ansible_distribution_major_version == '8' + + - name: Start and enable Oracle Linux 9 modular 'ro' virtualization services + ansible.builtin.systemd: + state: started + name: "virt{{ item }}d-ro.socket" + enabled: true + loop: + - qemu + - network + - nodedev + - nwfilter + - secret + - storage + - interface + - proxy + when: ansible_distribution == 'OracleLinux' and ansible_distribution_major_version == '9' + + - name: Start and enable Oracle Linux 9 modular 'admin' virtualization services + ansible.builtin.systemd: + state: started + name: "virt{{ item }}d-admin.socket" + enabled: true + loop: + - qemu + - network + - nodedev + - nwfilter + - secret + - storage + - interface + - proxy + when: ansible_distribution == 'OracleLinux' and ansible_distribution_major_version == '9' + + - name: Start and enable cockpit + ansible.builtin.systemd: + state: started + name: cockpit.socket + enabled: true + + - name: Open firewall for cockpit and virsh + ansible.posix.firewalld: + zone: public + service: "{{ item }}" + permanent: true + state: enabled + immediate: true + loop: + - libvirt + - libvirt-tls + + - name: Add user to libvirt and qemu group + ansible.builtin.user: + name: "{{ username }}" + groups: libvirt,qemu + append: true + + - name: Reset ssh connection to allow user changes to affect 'current login user' + ansible.builtin.meta: reset_connection + + # - name: Deploy VM1 + # vars: + # base_image_name: "{{ ol8_base_image_name }}" + # base_image_url: "{{ ol8_base_image_url }}" + # base_image_sha: "{{ ol8_base_image_sha }}" + # vm_name: ol8-dev + # ansible.builtin.import_tasks: provision_kvm_vm.yml + # when: create_vm + + # - name: Deploy VM2 + # vars: + # base_image_name: "{{ ol9_base_image_name }}" + # base_image_url: "{{ ol9_base_image_url }}" + # base_image_sha: "{{ ol9_base_image_sha }}" + # vm_name: ol9-dev + # ansible.builtin.import_tasks: provision_kvm_vm.yml + # when: create_vm