├── inventory ├── group_vars │ └── all.yml ├── host_vars │ └── fedora.yml └── hosts ├── roles ├── kvm │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── vagrant-centos-7 │ │ │ └── molecule.yml │ │ ├── vagrant-debian-10 │ │ │ └── molecule.yml │ │ ├── vagrant-rhel-8 │ │ │ └── molecule.yml │ │ ├── vagrant-fedora-30 │ │ │ └── molecule.yml │ │ ├── vagrant-ubuntu-18.04 │ │ │ └── molecule.yml │ │ └── default │ │ │ └── molecule.yml │ ├── tasks │ │ ├── install_CentOS.yml │ │ ├── install_Debian.yml │ │ ├── install_Fedora.yml │ │ ├── install_RedHat.yml │ │ ├── install_Ubuntu.yml │ │ ├── configure.yml │ │ ├── selinux.yml │ │ └── main.yml │ ├── .yamllint │ ├── README.md │ ├── meta │ │ └── main.yml │ └── vars │ │ └── main.yml ├── lxd │ ├── handlers │ │ └── main.yml │ ├── defaults │ │ └── main.yml │ ├── files │ │ └── snap.pp │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── default │ │ │ └── molecule.yml │ │ ├── vagrant-debian-10 │ │ │ └── molecule.yml │ │ ├── vagrant-rhel-8 │ │ │ └── molecule.yml │ │ ├── vagrant-fedora-30 │ │ │ └── molecule.yml │ │ └── vagrant-ubuntu-18.04 │ │ │ └── molecule.yml │ ├── tasks │ │ ├── install_RedHat.yml │ │ ├── install_Debian.yml │ │ ├── install_Ubuntu.yml │ │ ├── snap.yml │ │ ├── install_CentOS.yml │ │ ├── configure.yml │ │ ├── main.yml │ │ └── install_Fedora.yml │ ├── .yamllint │ ├── vars │ │ └── main.yml │ ├── README.md │ └── meta │ │ └── main.yml ├── docker │ ├── handlers │ │ └── main.yml │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── vagrant-centos-7 │ │ │ └── molecule.yml │ │ ├── vagrant-debian-10 │ │ │ └── molecule.yml │ │ ├── vagrant-fedora-30 │ │ │ └── molecule.yml │ │ ├── vagrant-ubuntu-18.04 │ │ │ └── molecule.yml │ │ └── default │ │ │ └── molecule.yml │ ├── defaults │ │ └── main.yml │ ├── .yamllint │ ├── vars │ │ └── main.yml │ ├── README.md │ ├── tasks │ │ ├── configure.yml │ │ ├── main.yml │ │ ├── install_CentOS.yml │ │ ├── install_Fedora.yml │ │ ├── install_Debian.yml │ │ └── install_Ubuntu.yml │ └── meta │ │ └── main.yml ├── packer │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── default │ │ │ └── molecule.yml │ │ ├── docker-rhel-7 │ │ │ └── molecule.yml │ │ ├── docker-debian-10 │ │ │ └── molecule.yml │ │ ├── docker-fedora-30 │ │ │ └── molecule.yml │ │ ├── docker-ubuntu-18.04 │ │ │ └── molecule.yml │ │ └── docker-rhel-8 │ │ │ └── molecule.yml │ ├── .yamllint │ ├── vars │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ ├── README.md │ └── meta │ │ └── main.yml ├── podman │ ├── handlers │ │ └── main.yml │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── vagrant-centos-7 │ │ │ └── molecule.yml │ │ ├── vagrant-debian-10 │ │ │ └── molecule.yml │ │ ├── vagrant-rhel-8 │ │ │ └── molecule.yml │ │ ├── vagrant-fedora-30 │ │ │ └── molecule.yml │ │ ├── vagrant-ubuntu-18.04 │ │ │ └── molecule.yml │ │ └── default │ │ │ └── molecule.yml │ ├── defaults │ │ └── main.yml │ ├── tasks │ │ ├── install_CentOS.yml │ │ ├── install_Fedora.yml │ │ ├── install_RedHat.yml │ │ ├── configure.yml │ │ ├── install_Ubuntu.yml │ │ └── main.yml │ ├── .yamllint │ ├── vars │ │ └── main.yml │ ├── README.md │ └── meta │ │ └── main.yml ├── vagrant │ ├── defaults │ │ └── main.yml │ ├── handlers │ │ └── main.yml │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── vagrant-centos-7 │ │ │ └── molecule.yml │ │ ├── default │ │ │ └── molecule.yml │ │ ├── docker-rhel-7 │ │ │ └── molecule.yml │ │ ├── docker-debian-10 │ │ │ └── molecule.yml │ │ ├── docker-fedora-30 │ │ │ └── molecule.yml │ │ ├── docker-ubuntu-18.04 │ │ │ └── molecule.yml │ │ └── docker-rhel-8 │ │ │ └── molecule.yml │ ├── tasks │ │ ├── install_CentOS.yml │ │ ├── install_Debian.yml │ │ ├── install_Fedora.yml │ │ ├── install_RedHat.yml │ │ ├── install_Ubuntu.yml │ │ └── main.yml │ ├── .yamllint │ ├── README.md │ ├── meta │ │ └── main.yml │ └── vars │ │ └── main.yml ├── vmtools │ ├── defaults │ │ └── main.yml │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── vagrant-centos-7 │ │ │ └── molecule.yml │ │ ├── vagrant-rhel-8 │ │ │ └── molecule.yml │ │ ├── vagrant-debian-10 │ │ │ └── molecule.yml │ │ ├── vagrant-fedora-30 │ │ │ └── molecule.yml │ │ ├── vagrant-ubuntu-18.04 │ │ │ └── molecule.yml │ │ └── default │ │ │ └── molecule.yml │ ├── handlers │ │ └── main.yml │ ├── tasks │ │ ├── KVM.yml │ │ ├── VMware.yml │ │ ├── main.yml │ │ └── VirtualBox.yml │ ├── .yamllint │ ├── README.md │ ├── meta │ │ └── main.yml │ └── vars │ │ └── main.yml ├── virtualbox │ ├── handlers │ │ └── main.yml │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── default │ │ │ └── molecule.yml │ │ ├── vagrant-rhel-8 │ │ │ └── molecule.yml │ │ ├── vagrant-debian-10 │ │ │ └── molecule.yml │ │ ├── vagrant-fedora-30 │ │ │ └── molecule.yml │ │ └── vagrant-ubuntu-18.04 │ │ │ └── molecule.yml │ ├── .yamllint │ ├── tasks │ │ ├── configure.yml │ │ ├── main.yml │ │ ├── install_Fedora.yml │ │ ├── install_Ubuntu.yml │ │ ├── extensions.yml │ │ ├── install_Debian.yml │ │ ├── install_CentOS.yml │ │ └── install_RedHat.yml │ ├── README.md │ ├── defaults │ │ └── main.yml │ ├── meta │ │ └── main.yml │ └── vars │ │ └── main.yml ├── vmvagrant │ ├── defaults │ │ └── main.yml │ ├── vars │ │ └── main.yml │ ├── molecule │ │ ├── resources │ │ │ ├── playbooks │ │ │ │ ├── playbook.yml │ │ │ │ ├── prepare.yml │ │ │ │ ├── bootstrap.sh │ │ │ │ └── verify.yml │ │ │ ├── tests │ │ │ │ └── test_default.yml │ │ │ └── Dockerfile.j2 │ │ ├── vagrant-centos-7 │ │ │ └── molecule.yml │ │ ├── vagrant-rhel-8 │ │ │ └── molecule.yml │ │ ├── vagrant-debian-10 │ │ │ └── molecule.yml │ │ ├── vagrant-fedora-30 │ │ │ └── molecule.yml │ │ ├── vagrant-ubuntu-18.04 │ │ │ └── molecule.yml │ │ └── default │ │ │ └── molecule.yml │ ├── handlers │ │ └── main.yml │ ├── templates │ │ └── sudoers.j2 │ ├── tasks │ │ ├── sudoers.yml │ │ ├── cleanup.yml │ │ ├── network.yml │ │ ├── disable-ipv6.yml │ │ ├── hosts.yml │ │ ├── vagrant.yml │ │ ├── main.yml │ │ └── sshd.yml │ ├── .yamllint │ ├── README.md │ └── meta │ │ └── main.yml └── vmware │ ├── molecule │ ├── resources │ │ ├── playbooks │ │ │ ├── playbook.yml │ │ │ ├── prepare.yml │ │ │ ├── bootstrap.sh │ │ │ └── verify.yml │ │ ├── tests │ │ │ └── test_default.yml │ │ └── Dockerfile.j2 │ ├── default │ │ └── molecule.yml │ ├── vagrant-debian-10 │ │ └── molecule.yml │ ├── vagrant-ubuntu-18.04 │ │ └── molecule.yml │ ├── vagrant-rhel-8 │ │ └── molecule.yml │ └── vagrant-fedora-30 │ │ └── molecule.yml │ ├── handlers │ └── main.yml │ ├── .yamllint │ ├── tasks │ ├── install_Debian.yml │ ├── install_Ubuntu.yml │ ├── install_RedHat.yml │ ├── install_CentOS.yml │ ├── install_Fedora.yml │ ├── install_VMware.yml │ ├── configure.yml │ ├── main.yml │ └── patch_Fedora.yml │ ├── files │ ├── vmware-usbarbitrator.service │ ├── vmware.service │ ├── vmware-networks-server.service │ └── vmware-workstation-server.service │ ├── README.md │ ├── defaults │ └── main.yml │ ├── meta │ └── main.yml │ └── vars │ └── main.yml ├── .gitignore ├── docs ├── serve-site.sh ├── docs │ ├── virtualization │ │ ├── lxd.md │ │ ├── kvm.md │ │ ├── virtualbox.md │ │ ├── docker-ce.md │ │ ├── vmware.md │ │ └── podman.md │ └── index.md ├── requirements.txt └── mkdocs.yml ├── requirements.txt ├── playbook-centos-8.yml ├── .travis.yml ├── playbook.yml ├── bundle.sh ├── playbooks └── templates │ └── playbook.yml ├── .yamllint ├── galaxy.yml ├── ansible.cfg └── README.md /inventory/group_vars/all.yml: -------------------------------------------------------------------------------- 1 | --- 2 | -------------------------------------------------------------------------------- /roles/kvm/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for kvm 3 | -------------------------------------------------------------------------------- /roles/kvm/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for kvm 3 | -------------------------------------------------------------------------------- /roles/lxd/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for lxd 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | releases/ 2 | docs/site 3 | id_rsa 4 | .vagrant 5 | *.pyc 6 | -------------------------------------------------------------------------------- /roles/docker/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for docker 3 | -------------------------------------------------------------------------------- /roles/packer/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for packer 3 | -------------------------------------------------------------------------------- /roles/packer/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for packer 3 | -------------------------------------------------------------------------------- /roles/podman/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for podman 3 | -------------------------------------------------------------------------------- /roles/vagrant/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for vagrant 3 | -------------------------------------------------------------------------------- /roles/vagrant/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for vagrant 3 | -------------------------------------------------------------------------------- /roles/vmtools/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for vmtools 3 | -------------------------------------------------------------------------------- /roles/virtualbox/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for virtualbox 3 | -------------------------------------------------------------------------------- /roles/vmvagrant/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for vmvagrant 3 | -------------------------------------------------------------------------------- /inventory/host_vars/fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ansible_python_interpreter: /usr/bin/python3 3 | -------------------------------------------------------------------------------- /roles/lxd/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for lxd 3 | 4 | lxd_users: 5 | - "{{ ansible_user }}" 6 | -------------------------------------------------------------------------------- /roles/lxd/files/snap.pp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/crivetimihai/ansible_virtualization/HEAD/roles/lxd/files/snap.pp -------------------------------------------------------------------------------- /docs/serve-site.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: Mihai Criveti 4 | 5 | mkdocs serve --livereload # -a 0.0.0.0:8000 6 | -------------------------------------------------------------------------------- /roles/kvm/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: kvm 6 | -------------------------------------------------------------------------------- /roles/lxd/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: lxd 6 | -------------------------------------------------------------------------------- /roles/vmvagrant/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for vmvagrant 3 | 4 | sudoers_groups: 5 | - name: vagrant 6 | sudo: true 7 | -------------------------------------------------------------------------------- /roles/docker/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: docker 6 | -------------------------------------------------------------------------------- /roles/packer/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: packer 6 | -------------------------------------------------------------------------------- /roles/podman/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: podman 6 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: vagrant 6 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: vmtools 6 | -------------------------------------------------------------------------------- /roles/vmware/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: vmware 6 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: vmvagrant 6 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/resources/playbooks/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Converge 3 | hosts: all 4 | roles: 5 | - role: virtualbox 6 | -------------------------------------------------------------------------------- /roles/vmvagrant/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for vagrantbox 3 | - name: restart sshd 4 | service: 5 | name: sshd 6 | state: restarted 7 | -------------------------------------------------------------------------------- /roles/podman/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for podman 3 | 4 | # echo 15659 > /proc/sys/user/max_user_namespaces 5 | proc_max_user_namespaces: "15659" 6 | -------------------------------------------------------------------------------- /roles/vmvagrant/templates/sudoers.j2: -------------------------------------------------------------------------------- 1 | {% for item in sudoers_groups %} 2 | {% if item.sudo %} 3 | %{{ item.name }} ALL=(ALL:ALL) NOPASSWD:ALL 4 | {% endif %} 5 | {% endfor %} -------------------------------------------------------------------------------- /roles/vmtools/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /etc/hosts: 5 | exists: true 6 | owner: root 7 | group: root 8 | -------------------------------------------------------------------------------- /roles/vmtools/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for vmtools 3 | 4 | - name: restart sshd 5 | service: 6 | name: "{{ sshd_service_name }}" 7 | state: restarted 8 | -------------------------------------------------------------------------------- /docs/docs/virtualization/lxd.md: -------------------------------------------------------------------------------- 1 | LXD 2 | === 3 | 4 | Installs LXD. 5 | 6 | Tested on 7 | --------- 8 | 9 | - CentOS 7 10 | - Fedora 30 11 | - Ubuntu 18.04 12 | - Debian 10 13 | -------------------------------------------------------------------------------- /roles/vmware/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for vmware 3 | 4 | - name: reload systemd 5 | systemd: 6 | daemon_reload: yes 7 | when: ansible_service_mgr == "systemd" 8 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | docker 2 | ansible 3 | ansible-lint 4 | yamllint 5 | mazer 6 | molecule 7 | molecule[docker] # requires libyaml-devel 8 | setuptools 9 | selinux 10 | python-vagrant 11 | -------------------------------------------------------------------------------- /docs/docs/virtualization/kvm.md: -------------------------------------------------------------------------------- 1 | KVM 2 | === 3 | 4 | Installs KVM. 5 | 6 | Tested on 7 | --------- 8 | 9 | - RHEL 8 10 | - CentOS 7 11 | - Fedora 30 12 | - Ubuntu 18.04 13 | - Debian 10 14 | -------------------------------------------------------------------------------- /roles/kvm/tasks/install_CentOS.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install kvm on CentOS 3 | 4 | - name: Install CentOS packages 5 | package: 6 | name: "{{ centos_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/kvm/tasks/install_Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install kvm on Debian 3 | 4 | - name: install Debian packages 5 | package: 6 | name: "{{ debian_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/kvm/tasks/install_Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install kvm on Fedora 3 | 4 | - name: install Fedora packages 5 | package: 6 | name: "{{ fedora_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/kvm/tasks/install_RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install kvm on RedHat 3 | 4 | - name: install RedHat packages 5 | package: 6 | name: "{{ redhat_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/kvm/tasks/install_Ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install kvm on Ubuntu 3 | 4 | - name: install Ubuntu packages 5 | package: 6 | name: "{{ ubuntu_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/lxd/tasks/install_RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install lxd on RedHat 3 | 4 | - name: install RedHat packages 5 | package: 6 | name: "{{ redhat_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/vmtools/tasks/KVM.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for packages 3 | 4 | - name: install KVM tools packages 5 | package: 6 | name: "{{ packages_kvm_tools }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/lxd/tasks/install_Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install snap on Debian 3 | 4 | - name: install snapd 5 | apt: 6 | update_cache: yes 7 | name: snapd 8 | state: present 9 | become: yes 10 | -------------------------------------------------------------------------------- /roles/lxd/tasks/install_Ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install snap on Ubuntu 3 | 4 | - name: install snapd 5 | apt: 6 | update_cache: yes 7 | name: snapd 8 | state: present 9 | become: yes 10 | -------------------------------------------------------------------------------- /roles/podman/tasks/install_CentOS.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install podman on CentOS 3 | 4 | - name: Install CentOS packages 5 | package: 6 | name: "{{ centos_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/podman/tasks/install_Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install podman on Fedora 3 | 4 | - name: install Fedora packages 5 | package: 6 | name: "{{ fedora_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/podman/tasks/install_RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install podman on RedHat 3 | 4 | - name: install RedHat packages 5 | package: 6 | name: "{{ redhat_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/vagrant/tasks/install_CentOS.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install vagrant on CentOS 3 | 4 | - name: Install CentOS packages 5 | package: 6 | name: "{{ centos_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/vagrant/tasks/install_Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install vagrant on Debian 3 | 4 | - name: install Debian packages 5 | apt: 6 | deb: "{{ item }}" 7 | loop: "{{ debian_packages }}" 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/vagrant/tasks/install_Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install vagrant on Fedora 3 | 4 | - name: install Fedora packages 5 | package: 6 | name: "{{ fedora_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/vagrant/tasks/install_RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install vagrant on RedHat 3 | 4 | - name: install RedHat packages 5 | package: 6 | name: "{{ redhat_packages }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/vagrant/tasks/install_Ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install vagrant on Ubuntu 3 | 4 | - name: install Ubuntu packages 5 | apt: 6 | deb: "{{ item }}" 7 | loop: "{{ ubuntu_packages }}" 8 | become: yes 9 | -------------------------------------------------------------------------------- /playbook-centos-8.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # ansible-playbook -i localhost, playbook.yml 3 | 4 | - hosts: all 5 | connection: local 6 | become: yes 7 | gather_facts: yes 8 | roles: 9 | - role: vmtools 10 | -------------------------------------------------------------------------------- /roles/vmtools/tasks/VMware.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for packages 3 | 4 | - name: install VMware tools packages 5 | package: 6 | name: "{{ packages_vmware_tools }}" 7 | state: present 8 | become: yes 9 | -------------------------------------------------------------------------------- /docs/docs/virtualization/virtualbox.md: -------------------------------------------------------------------------------- 1 | VirtualBox 2 | =========== 3 | 4 | Installs KVM. 5 | 6 | Tested on 7 | --------- 8 | 9 | - RHEL 8 10 | - CentOS 7 11 | - Fedora 30 12 | - Ubuntu 18.04 13 | - Debian 10 14 | -------------------------------------------------------------------------------- /docs/docs/virtualization/docker-ce.md: -------------------------------------------------------------------------------- 1 | Docker CE 2 | ========= 3 | 4 | Installs Docker-CE 5 | 6 | Tested on 7 | --------- 8 | 9 | - RHEL 8 10 | - CentOS 7 11 | - Fedora 30 12 | - Ubuntu 18.04 13 | - Debian 10 14 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | mkdocs 2 | mkdocs-material 3 | mkdocs-pdf-export-plugin 4 | mkdocs-git-revision-date-plugin 5 | pymdown-extensions 6 | pygments 7 | markdown-include 8 | markdown-blockdiag 9 | flatten_json 10 | -------------------------------------------------------------------------------- /roles/kvm/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/lxd/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /docs/docs/virtualization/vmware.md: -------------------------------------------------------------------------------- 1 | VMware 2 | ======= 3 | 4 | Installs VMware Workstation 15.1. 5 | 6 | Tested on 7 | --------- 8 | 9 | - RHEL 8 10 | - CentOS 7 11 | - Fedora 30 12 | - Ubuntu 18.04 13 | - Debian 10 14 | -------------------------------------------------------------------------------- /roles/docker/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/kvm/tasks/configure.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Configure kvm 3 | 4 | - name: Enable service libvirt, and start if not started 5 | service: 6 | name: libvirtd 7 | enabled: yes 8 | state: started 9 | become: yes 10 | -------------------------------------------------------------------------------- /roles/packer/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/podman/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/vmvagrant/tasks/sudoers.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: add defined groups to sudoers 3 | template: 4 | src: sudoers.j2 5 | dest: /etc/sudoers.d/sudoers 6 | validate: 'visudo -cf %s' 7 | mode: 0440 8 | become: yes 9 | -------------------------------------------------------------------------------- /roles/vmware/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/resources/playbooks/prepare.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Prepare 3 | hosts: all 4 | gather_facts: no 5 | become: no 6 | 7 | tasks: 8 | - name: bootstrap python 9 | script: bootstrap.sh 10 | -------------------------------------------------------------------------------- /roles/docker/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for docker 3 | 4 | docker_users: 5 | - root 6 | # - "{{ ansible_user }}" 7 | 8 | # Use podman and buildah instead, or look at Docker-EE 9 | force_docker_on_rhel_8: false 10 | -------------------------------------------------------------------------------- /roles/kvm/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/lxd/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/docker/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/packer/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/podman/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/vagrant/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/vmtools/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/vmvagrant/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/vmware/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/virtualbox/.yamllint: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | braces: 5 | max-spaces-inside: 1 6 | level: error 7 | brackets: 8 | max-spaces-inside: 1 9 | level: error 10 | line-length: disable 11 | truthy: disable 12 | -------------------------------------------------------------------------------- /roles/lxd/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for lxd 3 | 4 | centos_packages: 5 | - lxd 6 | 7 | redhat_packages: 8 | - lxd 9 | 10 | fedora_packages: 11 | - lxd 12 | 13 | debian_packages: 14 | - lxd 15 | 16 | ubuntu_packages: 17 | - lxd 18 | -------------------------------------------------------------------------------- /roles/vmvagrant/tasks/cleanup.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: remove vbox path 3 | file: 4 | path: "/tmp/vbox" 5 | state: absent 6 | 7 | - name: rm vbox guest additions iso 8 | file: 9 | path: "/tmp/VBoxGuestAdditions.iso" 10 | state: absent 11 | -------------------------------------------------------------------------------- /roles/vmvagrant/tasks/network.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # DNS fix 3 | - name: fix slow DNS 4 | lineinfile: 5 | dest: /etc/sysconfig/network 6 | regexp: '^RES_OPTIONS' 7 | line: 'RES_OPTIONS="single-request-reopen"' 8 | state: present 9 | become: yes 10 | -------------------------------------------------------------------------------- /roles/podman/tasks/configure.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Configure podman 3 | 4 | - name: set user.max_user_namespaces 5 | sysctl: 6 | name: user.max_user_namespaces 7 | value: "{{ proc_max_user_namespaces }}" 8 | sysctl_set: yes 9 | state: present 10 | reload: yes 11 | become: yes 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | sudo: required 3 | language: python 4 | services: docker 5 | 6 | cache: 7 | - pip 8 | 9 | install: 10 | - pip install --upgrade pip 11 | - pip install ansible ansbile-lint yamllint mazer molecule docker 12 | 13 | script: 14 | - ansible-lint roles/* 15 | - yamllint roles/* 16 | -------------------------------------------------------------------------------- /roles/lxd/tasks/snap.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install lxd from snap 3 | 4 | - name: restart the snapd service 5 | systemd: 6 | name: snapd.service 7 | enabled: yes 8 | state: restarted 9 | become: yes 10 | 11 | - name: install lxd snap 12 | snap: 13 | name: 14 | - lxd 15 | become: yes 16 | -------------------------------------------------------------------------------- /docs/docs/virtualization/podman.md: -------------------------------------------------------------------------------- 1 | Podman, Buildah and Skopeo 2 | ========================== 3 | 4 | Installs podman, buildah and skopeo. 5 | Not compatible with docker-ce role (pick one). 6 | 7 | Tested on 8 | --------- 9 | 10 | - RHEL 8 11 | - CentOS 7 12 | - Fedora 30 13 | - Ubuntu 18.04 14 | - Debian 10 15 | -------------------------------------------------------------------------------- /roles/vmware/tasks/install_Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install prereqs on Debian 3 | 4 | - name: install requirements on Debian 10 5 | apt: 6 | update_cache: yes 7 | name: "{{ vmware_required_packages_debian_10 }}" 8 | state: present 9 | when: ansible_facts['distribution'] == "Debian" 10 | become: yes 11 | -------------------------------------------------------------------------------- /roles/podman/tasks/install_Ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install podman on Ubuntu 3 | 4 | - name: add podman ppa 5 | apt_repository: 6 | repo: ppa:projectatomic/ppa 7 | become: yes 8 | 9 | - name: install Ubuntu packages 10 | package: 11 | name: "{{ ubuntu_packages }}" 12 | state: present 13 | become: yes 14 | -------------------------------------------------------------------------------- /roles/vmware/tasks/install_Ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install prereqs on Ubuntu 3 | 4 | - name: install requirements on Ubuntu 1804 5 | apt: 6 | update_cache: yes 7 | name: "{{ vmware_required_packages_ubuntu_1804 }}" 8 | state: present 9 | when: ansible_facts['distribution'] == "Ubuntu" 10 | become: yes 11 | -------------------------------------------------------------------------------- /roles/packer/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for packer 3 | 4 | packer_version: 1.4.5 5 | packer_zip_url: "https://releases.hashicorp.com/packer/{{ packer_version}}/packer_{{ packer_version }}_linux_amd64.zip" 6 | packer_sha256_url: "https://releases.hashicorp.com/packer/{{ packer_version }}/packer_{{ packer_version }}_SHA256SUMS" 7 | -------------------------------------------------------------------------------- /roles/vmware/files/vmware-usbarbitrator.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=VMware USB Arbitrator 3 | Requires=vmware.service 4 | After=vmware.service 5 | 6 | [Service] 7 | ExecStart=/usr/bin/vmware-usbarbitrator 8 | ExecStop=/usr/bin/vmware-usbarbitrator --kill 9 | RemainAfterExit=yes 10 | 11 | [Install] 12 | WantedBy=multi-user.target 13 | -------------------------------------------------------------------------------- /roles/vmware/tasks/install_RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install prereqs on RHEL 8 3 | 4 | - name: install requirements on RHEL 8 5 | yum: 6 | name: "{{ vmware_required_packages_rhel_8 }}" 7 | state: present 8 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_major_version']|int >= 8 9 | become: yes 10 | -------------------------------------------------------------------------------- /roles/vmware/tasks/install_CentOS.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install prereqs on CentOS 7 3 | 4 | - name: install requirements on CentOS 7 5 | yum: 6 | name: "{{ vmware_required_packages_centos_7 }}" 7 | state: present 8 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_major_version']|int == 7 9 | become: yes 10 | -------------------------------------------------------------------------------- /roles/vmware/tasks/install_Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install prereqs on Fedora 3 | 4 | - name: install requirements on Fedora 30 5 | yum: 6 | name: "{{ vmware_required_packages_fedora_30 }}" 7 | state: present 8 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_major_version']|int >= 30 9 | become: yes 10 | -------------------------------------------------------------------------------- /roles/lxd/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/bin/lxc: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "lxc help" 13 | stdout: 14 | - "/lxc/" 15 | stderr: [] 16 | timeout: 10000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/kvm/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/bin/virsh: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "virsh help" 13 | stdout: 14 | - "/virsh/" 15 | stderr: [] 16 | timeout: 10000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/docker/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/bin/docker: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "docker help" 13 | stdout: 14 | - "/docker/" 15 | stderr: [] 16 | timeout: 100000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/vmware/files/vmware.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=VMware daemon 3 | Requires=vmware-usbarbitrator.service 4 | Before=vmware-usbarbitrator.service 5 | After=network.target 6 | 7 | [Service] 8 | ExecStart=/etc/init.d/vmware start 9 | ExecStop=/etc/init.d/vmware stop 10 | PIDFile=/var/lock/subsys/vmware 11 | RemainAfterExit=yes 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /roles/podman/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/bin/podman: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "podman --help" 13 | stdout: 14 | - "/podman/" 15 | stderr: [] 16 | timeout: 10000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/vmware/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/bin/vmware: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "vmware --help" 13 | stdout: 14 | - "/vmware/" 15 | stderr: [] 16 | timeout: 10000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/packer/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/local/bin/packer: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "packer --help" 13 | stdout: 14 | - "/packer/" 15 | stderr: [] 16 | timeout: 10000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/bin/vagrant: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "vagrant --help 2>&1" 13 | stdout: 14 | - "/vagrant/" 15 | stderr: [] 16 | timeout: 10000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/vmvagrant/tasks/disable-ipv6.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: sysctl net.ipv6.conf.all.disable_ipv6=1 4 | sysctl: 5 | name: net.ipv6.conf.all.disable_ipv6 6 | value: 1 7 | reload: yes 8 | become: yes 9 | 10 | - name: sysctl net.ipv6.conf.default.disable_ipv6 11 | sysctl: 12 | name: net.ipv6.conf.default.disable_ipv6 13 | value: 1 14 | reload: yes 15 | become: yes 16 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/bin/vmvagrant: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "vmvagrant --help" 13 | stdout: 14 | - "/vmvagrant/" 15 | stderr: [] 16 | timeout: 10000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/resources/tests/test_default.yml: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | --- 3 | file: 4 | /usr/bin/virtualbox: 5 | exists: true 6 | owner: root 7 | group: root 8 | 9 | command: 10 | help: 11 | exit-status: 0 12 | exec: "virtualbox --help" 13 | stdout: 14 | - "/VirtualBox/" 15 | stderr: [] 16 | timeout: 10000 # in milliseconds 17 | skip: false 18 | -------------------------------------------------------------------------------- /roles/vmware/files/vmware-networks-server.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=VMware Networks 3 | Wants=vmware-networks-configuration.service 4 | After=vmware-networks-configuration.service 5 | 6 | [Service] 7 | Type=forking 8 | ExecStartPre=-/sbin/modprobe vmnet 9 | ExecStart=/usr/bin/vmware-networks --start 10 | ExecStop=/usr/bin/vmware-networks --stop 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # ansible-playbook -i localhost, playbook.yml -e 'ansible_python_interpreter=/usr/bin/python3' 3 | 4 | - hosts: all 5 | connection: local 6 | become: yes 7 | gather_facts: yes 8 | roles: 9 | - role: packer 10 | - role: vagrant 11 | - role: virtualbox 12 | - role: kvm 13 | - role: docker 14 | # - role: podman 15 | # - role: lxd 16 | # - role: vmware 17 | -------------------------------------------------------------------------------- /inventory/hosts: -------------------------------------------------------------------------------- 1 | [all:vars] 2 | ansible_user=vagrant 3 | ansible_ssh_pass=vagrant 4 | 5 | [fedora] 6 | fedora30 ansible_host=fedora30 7 | 8 | [fedora:vars] 9 | ansible_python_interpreter=/usr/bin/python3 10 | 11 | [centos] 12 | centos7 ansible_host=centos7 13 | 14 | [rhel] 15 | rhel8 ansible_host=rhel8 16 | 17 | [ubuntu] 18 | ubuntu1804 ansible_host=ubuntu1804 19 | 20 | [debian] 21 | debian10 ansible_host=debian10 22 | -------------------------------------------------------------------------------- /roles/vmware/files/vmware-workstation-server.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=VMware Workstation Server 3 | Requires=vmware.service 4 | After=vmware.service 5 | 6 | [Service] 7 | ExecStart=/etc/init.d/vmware-workstation-server start 8 | ExecStop=/etc/init.d/vmware-workstation-server stop 9 | PIDFile=/var/lock/subsys/vmware-workstation-server 10 | RemainAfterExit=yes 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /bundle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # exit when any command fails 4 | set -e 5 | 6 | # Run lint 7 | #yamllint roles/* 8 | ansible-lint roles/* 9 | 10 | # Release 11 | my_release=$(mazer build | awk 'END{print $NF}') 12 | 13 | 14 | echo "Release ${my_release} to ansible-galaxy?" 15 | select yn in "Yes" "No"; do 16 | case $yn in 17 | Yes ) mazer publish ${my_release}; break;; 18 | No ) exit;; 19 | esac 20 | done 21 | -------------------------------------------------------------------------------- /roles/vmvagrant/tasks/hosts.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: build hosts file 3 | lineinfile: 4 | state: present 5 | dest: /etc/hosts 6 | regexp: ".*{{ item }}$" 7 | line: "{{ hostvars[item].ansible_default_ipv4.address }} {{ item }}" 8 | when: hostvars[item].ansible_default_ipv4.address is defined 9 | with_items: "{{ groups['all'] }}" 10 | become: yes 11 | 12 | # ansible_hostname ansible_fqdn ansible_all_ipv6_addresses 13 | -------------------------------------------------------------------------------- /roles/podman/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for podman 3 | 4 | centos_packages: 5 | - podman 6 | - buildah 7 | - skopeo 8 | 9 | redhat_packages: 10 | - '@container-tools:1.0/common' 11 | - podman-docker 12 | 13 | fedora_packages: 14 | - podman 15 | - buildah 16 | - skopeo 17 | - podman-docker 18 | 19 | ubuntu_packages: 20 | - software-properties-common 21 | - uidmap 22 | - podman 23 | - buildah 24 | - skopeo 25 | - podman-docker 26 | -------------------------------------------------------------------------------- /roles/vmvagrant/tasks/vagrant.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: create vagrant .ssh directory 3 | file: 4 | path: /home/vagrant/.ssh 5 | state: directory 6 | owner: vagrant 7 | group: vagrant 8 | mode: 0700 9 | 10 | - name: upload vagrant public key 11 | get_url: 12 | url: https://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub 13 | dest: /home/vagrant/.ssh/authorized_keys 14 | owner: vagrant 15 | group: vagrant 16 | mode: 0600 17 | -------------------------------------------------------------------------------- /roles/lxd/tasks/install_CentOS.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install snap on CentOS 3 | 4 | - name: install epel-release 5 | yum: 6 | name: epel-release 7 | state: present 8 | become: yes 9 | 10 | - name: install snapd 11 | yum: 12 | name: snapd 13 | state: present 14 | become: yes 15 | 16 | - name: create /snap symlink 17 | file: 18 | state: link 19 | src: /var/lib/snapd/snap 20 | dest: /snap 21 | owner: root 22 | group: root 23 | become: yes 24 | -------------------------------------------------------------------------------- /roles/vmvagrant/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for vmvagrant 3 | 4 | # Virtualization and vagrant setup 5 | - include: disable-ipv6.yml # Disable IPv6 6 | - include: sudoers.yml # Setup sudoers file 7 | - include: hosts.yml # Update /etc/hosts 8 | - include: vagrant.yml # Create vagrant SSH key 9 | - include: sshd.yml # Setup sshd 10 | - include: network.yml # Network fixes 11 | 12 | # Cleanup 13 | - include: cleanup.yml # Cleanup 14 | -------------------------------------------------------------------------------- /roles/kvm/tasks/selinux.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # SELinux context for KVM 3 | # staff_use_svirt https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/configuring_and_managing_virtualization/index 4 | 5 | - name: Set SELinux booleans 6 | seboolean: 7 | name: "{{ item.name }}" 8 | state: "{{ item.state }}" 9 | persistent: "{{ item.persistent | default('no') }}" 10 | with_items: "{{ selinux_booleans }}" 11 | become: yes 12 | when: ansible_selinux.status == "enabled" 13 | -------------------------------------------------------------------------------- /roles/lxd/tasks/configure.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Configure snap 3 | 4 | - name: add users to the lxd secondary group 5 | user: 6 | name: "{{ item }}" 7 | append: yes 8 | groups: lxd 9 | with_items: "{{ lxd_users }}" 10 | become: yes 11 | 12 | - name: Reset ssh connection to allow user changes to affect current user 13 | meta: reset_connection 14 | 15 | - name: /snap/bin/lxd init --auto 16 | command: /snap/bin/lxd init --auto 17 | args: 18 | creates: /var/snap/lxd/common/lxd/storage-pools/default 19 | become: yes 20 | -------------------------------------------------------------------------------- /roles/vmvagrant/tasks/sshd.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Configure SSH daemon. 3 | lineinfile: 4 | dest: /etc/ssh/sshd_config 5 | regexp: "{{ item.regexp }}" 6 | line: "{{ item.line }}" 7 | state: present 8 | with_items: 9 | - { regexp: '^PermitRootLogin', line: 'PermitRootLogin no' } 10 | - { regexp: '^UseDNS', line: 'UseDNS no' } 11 | - { regexp: '^GSSAPIAuthentication', line: 'GSSAPIAuthentication no' } 12 | - { regexp: '^AddressFamily', line: 'AddressFamily inet' } 13 | notify: restart sshd 14 | become: yes 15 | -------------------------------------------------------------------------------- /roles/docker/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for docker 3 | 4 | ubuntu_prereq_packages: 5 | - apt-transport-https 6 | - ca-certificates 7 | - curl 8 | - gnupg-agent 9 | - software-properties-common 10 | 11 | ubuntu_docker_packages: 12 | - docker-ce 13 | - docker-ce-cli 14 | - containerd.io 15 | 16 | debian_prereq_packages: 17 | - apt-transport-https 18 | - ca-certificates 19 | - curl 20 | - gnupg-agent 21 | - software-properties-common 22 | 23 | debian_docker_packages: 24 | - docker-ce 25 | - docker-ce-cli 26 | - containerd.io 27 | -------------------------------------------------------------------------------- /roles/packer/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for packer 3 | 4 | - name: install unzip 5 | package: 6 | name: unzip 7 | state: present 8 | become: yes 9 | 10 | - name: download packer zip 11 | get_url: 12 | url: "{{ packer_zip_url }}" 13 | checksum: "sha256:{{ packer_sha256_url }}" 14 | dest: /tmp/packer.zip 15 | 16 | - name: unpack packer 17 | unarchive: 18 | src: /tmp/packer.zip 19 | dest: /usr/local/bin 20 | copy: no 21 | become: yes 22 | 23 | - name: remove packer zip 24 | file: 25 | path: /tmp/packer.zip 26 | state: absent 27 | -------------------------------------------------------------------------------- /roles/kvm/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | kvm 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: kvm 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/lxd/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | lxd 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: lxd 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/configure.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # configure task for virtualbox 3 | 4 | - name: check kernel module status 5 | command: /usr/lib/virtualbox/vboxdrv.sh status 6 | register: vboxdrv_status 7 | changed_when: False 8 | 9 | - name: rebuild kernel modules 10 | command: /usr/lib/virtualbox/vboxdrv.sh setup 11 | when: "'is loaded' not in vboxdrv_status.stdout" 12 | become: yes 13 | 14 | - name: setup VirtualBox user 15 | user: 16 | name: "{{ item }}" 17 | groups: vboxusers 18 | append: yes 19 | with_items: "{{ vbox_users }}" 20 | when: setup_users 21 | become: yes 22 | -------------------------------------------------------------------------------- /roles/docker/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | docker 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: docker 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/packer/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | packer 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: packer 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/podman/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | podman 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: podman 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/vagrant/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | vagrant 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: vagrant 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/vmware/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | vmware 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: vmware 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/virtualbox/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | virtualbox 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: virtualbox 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /docs/docs/index.md: -------------------------------------------------------------------------------- 1 | Ansible Galaxy 2 | ============== 3 | 4 | > [Ansible Galaxy Collection: Virtualization](https://galaxy.ansible.com/crivetimihai/Virtualization) 5 | 6 | Ansible Galaxy Roles 7 | -------------------- 8 | 9 | - KVM 10 | - VirtualBox 11 | - VMware Workstation 12 | - Docker-CE 13 | - Podman (with Buildah and Skopeo) 14 | - LXD 15 | - Packer 16 | - Vagrant 17 | 18 | Tested On 19 | --------- 20 | 21 | - CentOS 7 22 | - RHEL 8 23 | - Fedora 30 24 | - Debian 10 25 | - Ubuntu 18.04 26 | 27 | Example 28 | ------- 29 | 30 | ``` 31 | ansible-playbook -i hosts playbook.yml \ 32 | -e "vmware_workstation_license_key='XXXXX-XXXXX...'" 33 | ``` 34 | 35 | -------------------------------------------------------------------------------- /roles/docker/tasks/configure.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Configure docker groups 3 | - name: Create the docker group 4 | group: 5 | name: docker 6 | state: present 7 | become: yes 8 | 9 | - name: Add users to the docker secondary group 10 | user: 11 | name: "{{ item }}" 12 | append: yes 13 | groups: docker 14 | become: yes 15 | with_items: "{{ docker_users }}" 16 | 17 | - name: Reset ssh connection to allow user changes to affect current user 18 | meta: reset_connection 19 | 20 | - name: Start the docker service 21 | systemd: 22 | name: docker 23 | enabled: yes 24 | state: started 25 | become: yes 26 | tags: molecule-notest 27 | -------------------------------------------------------------------------------- /roles/podman/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for podman 3 | 4 | - include: install_CentOS.yml 5 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_version']|int <= 8 6 | 7 | - include: install_RedHat.yml 8 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_version']|int <= 8 9 | 10 | - include: install_Fedora.yml 11 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_version']|int == 30 12 | 13 | - include: install_Ubuntu.yml 14 | when: ansible_facts['distribution'] == "Ubuntu" and ansible_facts['distribution_version'] == "18.04" 15 | 16 | - include: configure.yml 17 | -------------------------------------------------------------------------------- /playbooks/templates/playbook.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # ansible-playbook -i localhost, playbook.yml 3 | 4 | - name: setup a virtualization environment 5 | hosts: all 6 | connection: local 7 | become: yes 8 | gather_facts: yes 9 | roles: 10 | - role: crivetimihai.virtualization.kvm 11 | # - role: crivetimihai.virtualization.lxd 12 | # - role: crivetimihai.virtualization.vmware_workstation 13 | - role: crivetimihai.virtualization.virtualbox 14 | # - role: crivetimihai.virtualization.podman 15 | - role: crivetimihai.virtualization.docker 16 | - role: crivetimihai.virtualization.vagrant 17 | - role: crivetimihai.virtualization.packer 18 | -------------------------------------------------------------------------------- /roles/vmware/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for vmware 3 | 4 | # Download VMware Workstation Pro 15.1 5 | vmware_bundle_url: "https://www.vmware.com/go/getworkstation-linux" 6 | vmware_bundle_checksum: "sha256:55f8b9d4015fa958eba1aac72cc9985d34f22d1df5d027d7c34f1f4bf4f0c01d" 7 | cleanup_vmware_bundle: false 8 | 9 | # Patch VMware Host Modules for Fedora 30 / Kernel 5.1 10 | fedora_30_vmware_patch_release: "w15.1.0-k5.1" 11 | fedora_30_vmware_patch_url: "https://github.com/mkubecek/vmware-host-modules/archive/{{ fedora_30_vmware_patch_release }}.tar.gz" 12 | fedora_30_vmware_patch_checksum: "sha256:5afcace6fc0b287d036d302af078ce22f1f7a33f8a4f6654f5f63b6b95e36dc5" 13 | -------------------------------------------------------------------------------- /roles/lxd/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmvagrant/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | vmvagrant: setup a virtual machine for vagrant (baseline settings) 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: vmvagrant 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/kvm/molecule/vagrant-centos-7/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmware/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmware-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: virtualbox-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/docker/molecule/vagrant-centos-7/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: docker-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/kvm/molecule/vagrant-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-debian-10 13 | box: debian/buster64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/kvm/molecule/vagrant-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-rhel-8 13 | box: cmihai/rhel-8-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/lxd/molecule/vagrant-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-debian-10 13 | box: debian/buster64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/lxd/molecule/vagrant-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-rhel-8 13 | box: cmihai/rhel-8-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/podman/molecule/vagrant-centos-7/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: podman-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/vagrant-centos-7/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vagrant-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmtools/README.md: -------------------------------------------------------------------------------- 1 | Role Name 2 | ========= 3 | 4 | Install VM tools (VMware, KVM or VirtualBox) based on detected virtual environment. 5 | 6 | Requirements 7 | ------------ 8 | 9 | - For RHEL, a Red Hat subscription or functional local repository. 10 | 11 | Role Variables 12 | -------------- 13 | 14 | 15 | Dependencies 16 | ------------ 17 | 18 | - For Red Hat, subscription-manager. 19 | 20 | Example Playbook 21 | ---------------- 22 | 23 | - hosts: servers 24 | roles: 25 | - role: vmtools 26 | 27 | License 28 | ------- 29 | 30 | MIT 31 | 32 | Author Information 33 | ------------------ 34 | 35 | - [Mihai Criveti](https://www.linkedin.com/in/crivetimihai/) 36 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/vagrant-centos-7/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmtools-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/docker/molecule/vagrant-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: docker-debian-10 13 | box: debian/buster64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/kvm/molecule/vagrant-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-fedora-30 13 | box: fedora/30-cloud-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/kvm/molecule/vagrant-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-ubuntu-1804 13 | box: ubuntu/bionic64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/lxd/molecule/vagrant-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-fedora-30 13 | box: fedora/30-cloud-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/lxd/molecule/vagrant-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-ubuntu-1804 13 | box: ubuntu/bionic64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/podman/molecule/vagrant-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: podman-debian-10 13 | box: debian/buster64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/podman/molecule/vagrant-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: podman-rhel-8 13 | box: cmihai/rhel-8-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/vagrant-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmtools-rhel-8 13 | box: cmihai/rhel-8-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/vagrant-centos-7/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmvagrant-centos-7 13 | box: centos/7 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmware/molecule/vagrant-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmware-debian-10 13 | box: debian/buster64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/docker/molecule/vagrant-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: docker-fedora-30 13 | box: fedora/30-cloud-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/docker/molecule/vagrant-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: docker-ubuntu-1804 13 | box: ubuntu/bionic64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/podman/molecule/vagrant-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: podman-fedora-30 13 | box: fedora/30-cloud-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/podman/molecule/vagrant-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: podman-ubuntu-1804 13 | box: ubuntu/bionic64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/vagrant-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: virtualbox-rhel-8 13 | box: cmihai/rhel-8-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/vagrant-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmtools-debian-10 13 | box: debian/buster64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/vagrant-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmvagrant-rhel-8 13 | box: cmihai/rhel-8-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmware/molecule/vagrant-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmware-ubuntu-1804 13 | box: ubuntu/bionic64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/vagrant-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: virtualbox-debian-10 13 | box: debian/buster64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/vagrant-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmtools-fedora-30 13 | box: fedora/30-cloud-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/vagrant-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmtools-ubuntu-1804 13 | box: ubuntu/bionic64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/vagrant-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmvagrant-debian-10 13 | box: debian/buster64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/vagrant-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: virtualbox-fedora-30 13 | box: fedora/30-cloud-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/vagrant-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: virtualbox-ubuntu-1804 13 | box: ubuntu/bionic64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/vagrant-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmvagrant-fedora-30 13 | box: fedora/30-cloud-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/vagrant-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmvagrant-ubuntu-1804 13 | box: ubuntu/bionic64 14 | provisioner: 15 | name: ansible 16 | log: True 17 | playbooks: 18 | vagrant: 19 | prepare: ../resources/playbooks/prepare.yml 20 | converge: ../resources/playbooks/playbook.yml 21 | verify: ../resources/playbooks/verify.yml 22 | lint: 23 | name: ansible-lint 24 | verifier: 25 | name: goss 26 | directory: ../resources/tests 27 | lint: 28 | name: yamllint 29 | -------------------------------------------------------------------------------- /roles/virtualbox/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for virtualbox 3 | 4 | # Add users to 'vboxusers' group 5 | setup_users: yes 6 | 7 | # List of users to add to 'vboxusers' group 8 | vbox_users: 9 | - vagrant 10 | 11 | # VirtualBox major version to install 12 | virtualbox_version: "6.0" 13 | 14 | # Full version number 15 | virtualbox_version_full: "6.0.12" 16 | 17 | # Install extensions listed in virtualbox_extpacks_urls (requires license) 18 | install_extpacks: no 19 | 20 | # List of VirtualBox extensions to install 21 | virtualbox_extpack_urls: 22 | - "https://download.virtualbox.org/virtualbox/{{ virtualbox_version_full }}/Oracle_VM_VirtualBox_Extension_Pack-{{ virtualbox_version_full }}.vbox-extpack" 23 | -------------------------------------------------------------------------------- /roles/docker/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for docker 3 | 4 | - include: install_CentOS.yml 5 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_version']|int <= 7 6 | 7 | - include: install_Fedora.yml 8 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_version']|int == 30 9 | 10 | - include: install_Ubuntu.yml 11 | when: ansible_facts['distribution'] == "Ubuntu" and ansible_facts['distribution_version'] == "18.04" 12 | 13 | - include: install_Debian.yml 14 | when: ansible_facts['distribution'] == "Debian" and ansible_facts['distribution_version']|int >= 10 15 | 16 | - include: configure.yml 17 | when: ansible_facts['distribution'] != 'RedHat' 18 | -------------------------------------------------------------------------------- /.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | 4 | rules: 5 | braces: 6 | max-spaces-inside: 1 7 | level: error 8 | brackets: 9 | max-spaces-inside: 1 10 | level: error 11 | colons: enable 12 | commas: enable 13 | comments: 14 | level: warning 15 | comments-indentation: 16 | level: warning 17 | document-end: disable 18 | document-start: 19 | level: warning 20 | empty-lines: enable 21 | empty-values: enable 22 | hyphens: enable 23 | indentation: enable 24 | key-duplicates: enable 25 | key-ordering: disable 26 | line-length: disable 27 | new-line-at-end-of-file: disable 28 | new-lines: enable 29 | octal-values: enable 30 | quoted-strings: disable 31 | trailing-spaces: enable 32 | truthy: disable 33 | -------------------------------------------------------------------------------- /roles/kvm/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Kvm 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/lxd/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Lxd 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/packer/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Packer 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/podman/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Podman 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/docker/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Docker_ce 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/packer/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: packer-centos-76 13 | image: centos:7.6.1810 14 | dockerfile: ../resources/Dockerfile.j2 15 | pre_build_image: False 16 | provisioner: 17 | name: ansible 18 | log: True 19 | playbooks: 20 | vagrant: 21 | prepare: ../resources/playbooks/prepare.yml 22 | converge: ../resources/playbooks/playbook.yml 23 | verify: ../resources/playbooks/verify.yml 24 | lint: 25 | name: ansible-lint 26 | verifier: 27 | name: goss 28 | directory: ../resources/tests 29 | lint: 30 | name: yamllint 31 | -------------------------------------------------------------------------------- /roles/vagrant/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Vagrant 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vagrant-centos-76 13 | image: centos:7.6.1810 14 | dockerfile: ../resources/Dockerfile.j2 15 | pre_build_image: False 16 | provisioner: 17 | name: ansible 18 | log: True 19 | playbooks: 20 | vagrant: 21 | prepare: ../resources/playbooks/prepare.yml 22 | converge: ../resources/playbooks/playbook.yml 23 | verify: ../resources/playbooks/verify.yml 24 | lint: 25 | name: ansible-lint 26 | verifier: 27 | name: goss 28 | directory: ../resources/tests 29 | lint: 30 | name: yamllint 31 | -------------------------------------------------------------------------------- /roles/vmtools/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Vmtools 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/vmware/molecule/vagrant-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmware-rhel-8 13 | box: cmihai/rhel-8-base 14 | provisioner: 15 | name: ansible 16 | log: True 17 | extra_vars: 18 | ansible_python_interpreter: /usr/bin/python3 19 | playbooks: 20 | vagrant: 21 | prepare: ../resources/playbooks/prepare.yml 22 | converge: ../resources/playbooks/playbook.yml 23 | verify: ../resources/playbooks/verify.yml 24 | lint: 25 | name: ansible-lint 26 | verifier: 27 | name: goss 28 | directory: ../resources/tests 29 | lint: 30 | name: yamllint 31 | -------------------------------------------------------------------------------- /roles/virtualbox/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Virtualbox 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/vmvagrant/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Vagrant-box 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/vmware/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Mihai Criveti 4 | description: Vmware_workstation 5 | company: Mihai Criveti 6 | license: MIT 7 | min_ansible_version: 2.4 8 | 9 | # If this a Container Enabled role, provide the minimum Ansible Container version. 10 | # min_ansible_container_version: 11 | 12 | platforms: 13 | - name: Fedora 14 | versions: 15 | - all 16 | - 30 17 | - name: EL 18 | versions: 19 | - 7 20 | - 8 21 | - name: Ubuntu 22 | versions: 23 | - bionic 24 | - name: Debian 25 | versions: 26 | - buster 27 | 28 | galaxy_tags: 29 | - debian 30 | - ubuntu 31 | - rhel 32 | - centos 33 | - fedora 34 | 35 | # dependencies: [] 36 | -------------------------------------------------------------------------------- /roles/vmware/molecule/vagrant-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: vagrant 7 | provider: 8 | name: virtualbox 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmware-fedora-30 13 | box: fedora/30-cloud-base 14 | provisioner: 15 | name: ansible 16 | extra_vars: 17 | ansible_python_interpreter: /usr/bin/python3 18 | log: True 19 | playbooks: 20 | vagrant: 21 | prepare: ../resources/playbooks/prepare.yml 22 | converge: ../resources/playbooks/playbook.yml 23 | verify: ../resources/playbooks/verify.yml 24 | lint: 25 | name: ansible-lint 26 | verifier: 27 | name: goss 28 | directory: ../resources/tests 29 | lint: 30 | name: yamllint 31 | -------------------------------------------------------------------------------- /roles/vagrant/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for vagrant 3 | 4 | - include: install_CentOS.yml 5 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_version']|int <= 7 6 | 7 | - include: install_RedHat.yml 8 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_version']|int <= 8 9 | 10 | - include: install_Fedora.yml 11 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_version']|int == 30 12 | 13 | - include: install_Ubuntu.yml 14 | when: ansible_facts['distribution'] == "Ubuntu" and ansible_facts['distribution_version'] == "18.04" 15 | 16 | - include: install_Debian.yml 17 | when: ansible_facts['distribution'] == "Debian" and ansible_facts['distribution_version']|int >= 10 18 | -------------------------------------------------------------------------------- /roles/lxd/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for lxd 3 | 4 | - include: install_CentOS.yml 5 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_version']|int <= 7 6 | 7 | - include: install_Fedora.yml 8 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_version']|int == 30 9 | 10 | - include: install_Ubuntu.yml 11 | when: ansible_facts['distribution'] == "Ubuntu" and ansible_facts['distribution_version'] == "18.04" 12 | 13 | - include: install_Debian.yml 14 | when: ansible_facts['distribution'] == "Debian" and ansible_facts['distribution_version']|int >= 10 15 | 16 | - include: snap.yml 17 | when: ansible_facts['distribution'] != 'RedHat' 18 | 19 | - include: configure.yml 20 | when: ansible_facts['distribution'] != 'RedHat' 21 | -------------------------------------------------------------------------------- /roles/kvm/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for kvm 3 | 4 | - include: install_CentOS.yml 5 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_version']|int <= 7 6 | 7 | - include: install_RedHat.yml 8 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_version']|int <= 8 9 | 10 | - include: install_Fedora.yml 11 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_version']|int == 30 12 | 13 | - include: install_Ubuntu.yml 14 | when: ansible_facts['distribution'] == "Ubuntu" and ansible_facts['distribution_version'] == "18.04" 15 | 16 | - include: install_Debian.yml 17 | when: ansible_facts['distribution'] == "Debian" and ansible_facts['distribution_version']|int >= 10 18 | 19 | - include: configure.yml 20 | -------------------------------------------------------------------------------- /roles/vagrant/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for vagrant 3 | 4 | # Vagrant version to install 5 | vagrant_version: 2.2.5 6 | 7 | centos_packages: 8 | - "https://releases.hashicorp.com/vagrant/{{ vagrant_version }}/vagrant_{{ vagrant_version }}_x86_64.rpm" 9 | 10 | rhel_packages: 11 | - "https://releases.hashicorp.com/vagrant/{{ vagrant_version }}/vagrant_{{ vagrant_version }}_x86_64.rpm" 12 | 13 | fedora_packages: 14 | - "https://releases.hashicorp.com/vagrant/{{ vagrant_version }}/vagrant_{{ vagrant_version }}_x86_64.rpm" 15 | 16 | debian_packages: 17 | - "https://releases.hashicorp.com/vagrant/{{ vagrant_version }}/vagrant_{{ vagrant_version }}_x86_64.deb" 18 | 19 | ubuntu_packages: 20 | - "https://releases.hashicorp.com/vagrant/{{ vagrant_version }}/vagrant_{{ vagrant_version }}_x86_64.deb" 21 | -------------------------------------------------------------------------------- /roles/packer/molecule/docker-rhel-7/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: packer-rhel-7 13 | image: ubi 14 | registry: 15 | url: registry.access.redhat.com/ubi7 16 | dockerfile: ../resources/Dockerfile.j2 17 | pre_build_image: False 18 | provisioner: 19 | name: ansible 20 | log: True 21 | playbooks: 22 | vagrant: 23 | prepare: ../resources/playbooks/prepare.yml 24 | converge: ../resources/playbooks/playbook.yml 25 | verify: ../resources/playbooks/verify.yml 26 | lint: 27 | name: ansible-lint 28 | verifier: 29 | name: goss 30 | directory: ../resources/tests 31 | lint: 32 | name: yamllint 33 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/docker-rhel-7/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vagrant-rhel-7 13 | image: ubi 14 | registry: 15 | url: registry.access.redhat.com/ubi7 16 | dockerfile: ../resources/Dockerfile.j2 17 | pre_build_image: False 18 | provisioner: 19 | name: ansible 20 | log: True 21 | playbooks: 22 | vagrant: 23 | prepare: ../resources/playbooks/prepare.yml 24 | converge: ../resources/playbooks/playbook.yml 25 | verify: ../resources/playbooks/verify.yml 26 | lint: 27 | name: ansible-lint 28 | verifier: 29 | name: goss 30 | directory: ../resources/tests 31 | lint: 32 | name: yamllint 33 | -------------------------------------------------------------------------------- /roles/docker/tasks/install_CentOS.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # https://docs.docker.com/install/linux/docker-ce/centos/ 3 | 4 | - name: Uninstall old versions 5 | yum: 6 | name: >- 7 | docker, docker-client, docker-client-latest, 8 | docker-common, docker-engine, docker-latest, 9 | docker-latest, docker-latest-logrotate, docker-logrotate, 10 | state: absent 11 | become: yes 12 | 13 | - name: Setup yum repository 14 | get_url: 15 | url: https://download.docker.com/linux/centos/docker-ce.repo 16 | checksum: "sha256:6650718e0fe5202ae7618521f695d43a8bc051c539d7570f0edbfa5b4916f218" 17 | dest: /etc/yum.repos.d/docker-ce.repo 18 | mode: '0644' 19 | become: yes 20 | 21 | - name: Install Docker-CE 22 | yum: 23 | name: docker-ce, docker-ce-cli, containerd.io 24 | state: present 25 | become: yes 26 | -------------------------------------------------------------------------------- /roles/packer/molecule/docker-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: packer-debian-10 13 | image: debian:10 14 | dockerfile: ../resources/Dockerfile.j2 15 | pre_build_image: False 16 | provisioner: 17 | name: ansible 18 | extra_vars: 19 | ansible_python_interpreter: /usr/bin/python3 20 | log: True 21 | playbooks: 22 | vagrant: 23 | prepare: ../resources/playbooks/prepare.yml 24 | converge: ../resources/playbooks/playbook.yml 25 | verify: ../resources/playbooks/verify.yml 26 | lint: 27 | name: ansible-lint 28 | verifier: 29 | name: goss 30 | directory: ../resources/tests 31 | lint: 32 | name: yamllint 33 | -------------------------------------------------------------------------------- /roles/packer/molecule/docker-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: packer-fedora-30 13 | image: fedora:30 14 | dockerfile: ../resources/Dockerfile.j2 15 | pre_build_image: False 16 | provisioner: 17 | name: ansible 18 | extra_vars: 19 | ansible_python_interpreter: /usr/bin/python3 20 | log: True 21 | playbooks: 22 | vagrant: 23 | prepare: ../resources/playbooks/prepare.yml 24 | converge: ../resources/playbooks/playbook.yml 25 | verify: ../resources/playbooks/verify.yml 26 | lint: 27 | name: ansible-lint 28 | verifier: 29 | name: goss 30 | directory: ../resources/tests 31 | lint: 32 | name: yamllint 33 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/docker-debian-10/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vagrant-debian-10 13 | image: debian:10 14 | dockerfile: ../resources/Dockerfile.j2 15 | pre_build_image: False 16 | provisioner: 17 | name: ansible 18 | extra_vars: 19 | ansible_python_interpreter: /usr/bin/python3 20 | log: True 21 | playbooks: 22 | vagrant: 23 | prepare: ../resources/playbooks/prepare.yml 24 | converge: ../resources/playbooks/playbook.yml 25 | verify: ../resources/playbooks/verify.yml 26 | lint: 27 | name: ansible-lint 28 | verifier: 29 | name: goss 30 | directory: ../resources/tests 31 | lint: 32 | name: yamllint 33 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/docker-fedora-30/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vagrant-fedora-30 13 | image: fedora:30 14 | dockerfile: ../resources/Dockerfile.j2 15 | pre_build_image: False 16 | provisioner: 17 | name: ansible 18 | extra_vars: 19 | ansible_python_interpreter: /usr/bin/python3 20 | log: True 21 | playbooks: 22 | vagrant: 23 | prepare: ../resources/playbooks/prepare.yml 24 | converge: ../resources/playbooks/playbook.yml 25 | verify: ../resources/playbooks/verify.yml 26 | lint: 27 | name: ansible-lint 28 | verifier: 29 | name: goss 30 | directory: ../resources/tests 31 | lint: 32 | name: yamllint 33 | -------------------------------------------------------------------------------- /roles/packer/molecule/docker-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: packer-ubuntu-1804 13 | image: ubuntu:18.04 14 | dockerfile: ../resources/Dockerfile.j2 15 | pre_build_image: False 16 | provisioner: 17 | name: ansible 18 | extra_vars: 19 | ansible_python_interpreter: /usr/bin/python3 20 | log: True 21 | playbooks: 22 | vagrant: 23 | prepare: ../resources/playbooks/prepare.yml 24 | converge: ../resources/playbooks/playbook.yml 25 | verify: ../resources/playbooks/verify.yml 26 | lint: 27 | name: ansible-lint 28 | verifier: 29 | name: goss 30 | directory: ../resources/tests 31 | lint: 32 | name: yamllint 33 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/docker-ubuntu-18.04/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vagrant-ubuntu-1804 13 | image: ubuntu:18.04 14 | dockerfile: ../resources/Dockerfile.j2 15 | pre_build_image: False 16 | provisioner: 17 | name: ansible 18 | extra_vars: 19 | ansible_python_interpreter: /usr/bin/python3 20 | log: True 21 | playbooks: 22 | vagrant: 23 | prepare: ../resources/playbooks/prepare.yml 24 | converge: ../resources/playbooks/playbook.yml 25 | verify: ../resources/playbooks/verify.yml 26 | lint: 27 | name: ansible-lint 28 | verifier: 29 | name: goss 30 | directory: ../resources/tests 31 | lint: 32 | name: yamllint 33 | -------------------------------------------------------------------------------- /galaxy.yml: -------------------------------------------------------------------------------- 1 | namespace: "crivetimihai" 2 | name: "virtualization" 3 | version: "1.0.33" 4 | readme: "README.md" 5 | authors: 6 | - "Mihai Criveti (https://twitter.com/crivetimihai)" 7 | description: "Virtualization tools - VirtualBox, KVM, VMware, LXD, Docker-CE, Podman, Vagrant, Packer" 8 | license: 9 | - "MIT" 10 | tags: 11 | - linux 12 | - virtualization 13 | - hypervisor 14 | - virtualbox 15 | - kvm 16 | - vmware 17 | - docker 18 | - podman 19 | - vagrant 20 | - packer 21 | - vmtools 22 | - packaging 23 | - collection 24 | repository: "https://www.github.com/crivetimihai/ansible_virtualization" 25 | homepage: "https://www.github.com/crivetimihai/ansible_virtualization" 26 | documentation: "https://crivetimihai.github.io/ansible_virtualization/" 27 | issues: "https://www.github.com/crivetimihai/ansible_virtualization/issues" 28 | -------------------------------------------------------------------------------- /roles/docker/tasks/install_Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # https://docs.docker.com/install/linux/docker-ce/fedora/ 3 | 4 | - name: Uninstall old versions 5 | yum: 6 | name: >- 7 | docker, docker-client, docker-client-latest, 8 | docker-common, docker-latest, docker-latest-logrotate, 9 | docker-logrotate, docker-selinux, docker-engine-selinux, docker-engine 10 | state: absent 11 | become: yes 12 | 13 | - name: Setup yum repository 14 | get_url: 15 | url: https://download.docker.com/linux/centos/docker-ce.repo 16 | checksum: "sha256:6650718e0fe5202ae7618521f695d43a8bc051c539d7570f0edbfa5b4916f218" 17 | dest: /etc/yum.repos.d/docker-ce.repo 18 | mode: '0644' 19 | become: yes 20 | 21 | - name: Install Docker-CE 22 | yum: 23 | name: docker-ce, docker-ce-cli, containerd.io 24 | state: present 25 | become: yes 26 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for virtualbox 3 | 4 | - include: install_CentOS.yml 5 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_version']|int <= 7 6 | 7 | - include: install_RedHat.yml 8 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_version']|int <= 8 9 | 10 | - include: install_Fedora.yml 11 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_version']|int == 30 12 | 13 | - include: install_Ubuntu.yml 14 | when: ansible_facts['distribution'] == "Ubuntu" and ansible_facts['distribution_version'] == "18.04" 15 | 16 | - include: install_Debian.yml 17 | when: ansible_facts['distribution'] == "Debian" and ansible_facts['distribution_version']|int >= 10 18 | 19 | - include: configure.yml 20 | 21 | - include: extensions.yml 22 | when: install_extpacks 23 | -------------------------------------------------------------------------------- /roles/packer/molecule/docker-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: packer-rhel-8 13 | image: ubi 14 | registry: 15 | url: registry.access.redhat.com/ubi8 16 | dockerfile: ../resources/Dockerfile.j2 17 | pre_build_image: False 18 | provisioner: 19 | name: ansible 20 | extra_vars: 21 | ansible_python_interpreter: /usr/bin/python3 22 | log: True 23 | playbooks: 24 | vagrant: 25 | prepare: ../resources/playbooks/prepare.yml 26 | converge: ../resources/playbooks/playbook.yml 27 | verify: ../resources/playbooks/verify.yml 28 | lint: 29 | name: ansible-lint 30 | verifier: 31 | name: goss 32 | directory: ../resources/tests 33 | lint: 34 | name: yamllint 35 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/docker-rhel-8/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vagrant-rhel-8 13 | image: ubi 14 | registry: 15 | url: registry.access.redhat.com/ubi8 16 | dockerfile: ../resources/Dockerfile.j2 17 | pre_build_image: False 18 | provisioner: 19 | name: ansible 20 | extra_vars: 21 | ansible_python_interpreter: /usr/bin/python3 22 | log: True 23 | playbooks: 24 | vagrant: 25 | prepare: ../resources/playbooks/prepare.yml 26 | converge: ../resources/playbooks/playbook.yml 27 | verify: ../resources/playbooks/verify.yml 28 | lint: 29 | name: ansible-lint 30 | verifier: 31 | name: goss 32 | directory: ../resources/tests 33 | lint: 34 | name: yamllint 35 | -------------------------------------------------------------------------------- /roles/lxd/tasks/install_Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install snap on Fedora 3 | 4 | - name: install snapd 5 | yum: 6 | name: snapd 7 | state: present 8 | become: yes 9 | 10 | - name: create /snap symlink 11 | file: 12 | state: link 13 | src: /var/lib/snapd/snap 14 | dest: /snap 15 | owner: root 16 | group: root 17 | become: yes 18 | 19 | - name: check if module was loaded 20 | shell: | 21 | set -o pipefail 22 | semodule -l | grep '^snap$' 23 | args: 24 | executable: /bin/bash 25 | register: semodule_loaded 26 | ignore_errors: yes 27 | changed_when: False 28 | become: yes 29 | 30 | - name: copy policy 31 | copy: 32 | src: snap.pp 33 | dest: /tmp/snap.pp 34 | when: "'snap' not in semodule_loaded.stdout" 35 | 36 | - name: setup snap selinux policy 37 | command: semodule -i /tmp/snap.pp 38 | when: "'snap' not in semodule_loaded.stdout" 39 | become: yes 40 | -------------------------------------------------------------------------------- /roles/vmware/tasks/install_VMware.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install VMware Workstation 3 | # https://docs.vmware.com/en/VMware-Workstation-Pro/15.0/com.vmware.ws.using.doc/GUID-42F4754B-7547-4A4D-AC08-353D321A051B.html 4 | 5 | - name: download VMware Workstation bundle 6 | get_url: 7 | dest: /tmp/vmware-workstation.bundle 8 | url: "{{ vmware_bundle_url }}" 9 | checksum: "{{ vmware_bundle_checksum }}" 10 | mode: "0777" 11 | 12 | - name: Ensure /etc/init.d directory exists 13 | file: 14 | path: /etc/init.d 15 | state: directory 16 | mode: '0755' 17 | become: yes 18 | 19 | - name: install VMware Workstation 20 | command: /tmp/vmware-workstation.bundle --console --eulas-agreed --required 21 | args: 22 | creates: /usr/bin/vmware 23 | become: yes 24 | 25 | - name: delete temporary download files 26 | file: 27 | path: /tmp/vmware-workstation.bundle 28 | state: absent 29 | when: cleanup_vmware_bundle 30 | -------------------------------------------------------------------------------- /roles/docker/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/kvm/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/lxd/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/packer/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/podman/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/vmware/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/podman/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: podman-centos-76 13 | image: centos:7.6.1810 14 | dockerfile: ../resources/Dockerfile.j2 15 | privileged: True 16 | pre_build_image: False 17 | volume_mounts: 18 | - "/sys/fs/cgroup:/sys/fs/cgroup:rw" 19 | command: "/usr/sbin/init" 20 | environment: 21 | container: docker 22 | provisioner: 23 | name: ansible 24 | log: True 25 | playbooks: 26 | vagrant: 27 | prepare: ../resources/playbooks/prepare.yml 28 | converge: ../resources/playbooks/playbook.yml 29 | verify: ../resources/playbooks/verify.yml 30 | lint: 31 | name: ansible-lint 32 | verifier: 33 | name: goss 34 | directory: ../resources/tests 35 | lint: 36 | name: yamllint 37 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/resources/playbooks/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$(whoami)" != "root" ]; then 4 | sudo su -s "$0" 5 | exit 6 | fi 7 | 8 | if [ $(command -v apt-get) ]; then 9 | apt-get update 10 | apt-get install -y python sudo bash ca-certificates 11 | apt-get clean 12 | elif [ $(command -v dnf) ]; then 13 | dnf makecache 14 | dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux 15 | dnf clean all 16 | elif [ $(command -v yum) ]; then 17 | yum makecache fast 18 | yum install -y python sudo yum-plugin-ovl bash 19 | sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf 20 | yum clean all 21 | elif [ $(command -v zypper) ]; then 22 | zypper refresh 23 | zypper install -y python sudo bash python-xml 24 | zypper clean -a 25 | elif [ $(command -v apk) ]; then 26 | apk update 27 | apk add --no-cache python sudo bash ca-certificates 28 | fi 29 | -------------------------------------------------------------------------------- /roles/vmware/tasks/configure.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # configure VMware Workstation and build kernel modules 3 | 4 | - name: build VMware kernel modules 5 | command: vmware-modconfig --console --install-all 6 | args: 7 | creates: 8 | - "/lib/modules/{{ ansible_kernel }}/misc/vmnet.ko" 9 | become: yes 10 | 11 | - name: load VMware kernel modules 12 | modprobe: 13 | name: "{{ item }}" 14 | state: present 15 | with_items: 16 | - vmw_vmci 17 | - vmmon 18 | become: yes 19 | 20 | - name: setup VMware Workstation license 21 | command: /usr/lib/vmware/bin/vmware-vmx-debug --new-sn "{{ vmware_license_key }}" 22 | when: vmware_license_key is defined 23 | become: yes 24 | 25 | - name: Create systemd services 26 | copy: 27 | src: "{{ item }}" 28 | dest: /etc/systemd/system/ 29 | owner: root 30 | group: root 31 | mode: '0755' 32 | with_fileglob: 33 | - "*.service" 34 | notify: reload systemd 35 | become: yes 36 | -------------------------------------------------------------------------------- /roles/docker/tasks/install_Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Uninstall old versions 3 | apt: 4 | name: >- 5 | docker, docker-engine, docker.io, 6 | containerd, runc 7 | state: absent 8 | become: yes 9 | 10 | - name: add Docker apt signing key 11 | apt_key: 12 | url: "{{ item }}" 13 | state: present 14 | with_items: 15 | - https://download.docker.com/linux/debian/gpg 16 | become: yes 17 | 18 | - name: setup Docker apt repository on Debian 19 | apt_repository: 20 | repo: "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" 21 | state: present 22 | become: yes 23 | 24 | - name: Install packages to allow apt to use a repository over HTTPS 25 | apt: 26 | update_cache: yes 27 | name: "{{ debian_prereq_packages }}" 28 | state: present 29 | become: yes 30 | 31 | - name: Install Docker-CE 32 | apt: 33 | update_cache: yes 34 | name: "{{ debian_docker_packages }}" 35 | state: present 36 | become: yes 37 | -------------------------------------------------------------------------------- /roles/docker/tasks/install_Ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Uninstall old versions 3 | apt: 4 | name: >- 5 | docker, docker-engine, docker.io, 6 | containerd, runc 7 | state: absent 8 | become: yes 9 | 10 | - name: add Docker apt signing key 11 | apt_key: 12 | url: "{{ item }}" 13 | state: present 14 | with_items: 15 | - https://download.docker.com/linux/ubuntu/gpg 16 | become: yes 17 | 18 | - name: setup Docker apt repository on Ubuntu 19 | apt_repository: 20 | repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" 21 | state: present 22 | become: yes 23 | 24 | - name: Install packages to allow apt to use a repository over HTTPS 25 | apt: 26 | update_cache: yes 27 | name: "{{ ubuntu_prereq_packages }}" 28 | state: present 29 | become: yes 30 | 31 | - name: Install Docker-CE 32 | apt: 33 | update_cache: yes 34 | name: "{{ ubuntu_docker_packages }}" 35 | state: present 36 | become: yes 37 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmtools-centos-76 13 | image: centos:7.6.1810 14 | dockerfile: ../resources/Dockerfile.j2 15 | privileged: True 16 | pre_build_image: False 17 | volume_mounts: 18 | - "/sys/fs/cgroup:/sys/fs/cgroup:rw" 19 | tmpfs: 20 | - /run 21 | - /tmp 22 | command: "/usr/sbin/init" 23 | environment: 24 | container: docker 25 | provisioner: 26 | name: ansible 27 | log: True 28 | playbooks: 29 | vagrant: 30 | prepare: ../resources/playbooks/prepare.yml 31 | converge: ../resources/playbooks/playbook.yml 32 | verify: ../resources/playbooks/verify.yml 33 | lint: 34 | name: ansible-lint 35 | verifier: 36 | name: goss 37 | directory: ../resources/tests 38 | lint: 39 | name: yamllint 40 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: vmvagrant-centos-76 13 | image: centos:7.6.1810 14 | dockerfile: ../resources/Dockerfile.j2 15 | privileged: True 16 | pre_build_image: False 17 | volume_mounts: 18 | - "/sys/fs/cgroup:/sys/fs/cgroup:rw" 19 | tmpfs: 20 | - /run 21 | - /tmp 22 | command: "/usr/sbin/init" 23 | environment: 24 | container: docker 25 | provisioner: 26 | name: ansible 27 | log: True 28 | playbooks: 29 | vagrant: 30 | prepare: ../resources/playbooks/prepare.yml 31 | converge: ../resources/playbooks/playbook.yml 32 | verify: ../resources/playbooks/verify.yml 33 | lint: 34 | name: ansible-lint 35 | verifier: 36 | name: goss 37 | directory: ../resources/tests 38 | lint: 39 | name: yamllint 40 | -------------------------------------------------------------------------------- /roles/vmware/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for vmware 3 | 4 | vmware_required_packages_centos_7: 5 | - libaio 6 | - libXinerama 7 | - pcsc-lite-libs 8 | - kernel-devel 9 | - kernel-headers 10 | - "@Development Tools" 11 | - ncurses-libs 12 | 13 | vmware_required_packages_rhel_8: 14 | - libXinerama 15 | - libXtst 16 | - pcsc-lite-libs 17 | - kernel-devel 18 | - kernel-headers 19 | - ncurses-compat-libs 20 | 21 | vmware_required_packages_fedora_30: 22 | - libXinerama 23 | - pcsc-lite-libs 24 | - kernel-devel 25 | - kernel-headers 26 | - elfutils-libelf-devel 27 | - "@Development Tools" 28 | - ncurses-compat-libs 29 | 30 | vmware_required_packages_ubuntu_1804: 31 | - build-essential 32 | - libncursesw5 33 | - gcc 34 | - libpcsclite1 35 | - "linux-headers-{{ ansible_kernel }}" 36 | 37 | vmware_required_packages_debian_10: 38 | - build-essential 39 | - libncursesw5 40 | - gcc 41 | - libpcsclite1 42 | - "linux-headers-{{ ansible_kernel }}" 43 | -------------------------------------------------------------------------------- /roles/vmware/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for vmware 3 | 4 | - include: install_CentOS.yml 5 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_version']|int <= 7 6 | 7 | - include: install_RedHat.yml 8 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_version']|int <= 8 9 | 10 | - include: install_Fedora.yml 11 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_version']|int == 30 12 | 13 | - include: install_Ubuntu.yml 14 | when: ansible_facts['distribution'] == "Ubuntu" and ansible_facts['distribution_version'] == "18.04" 15 | 16 | - include: install_Debian.yml 17 | when: ansible_facts['distribution'] == "Debian" and ansible_facts['distribution_version']|int >= 10 18 | 19 | - include: install_VMware.yml 20 | 21 | - include: patch_Fedora.yml 22 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_major_version']|int == 30 23 | 24 | - include: configure.yml 25 | -------------------------------------------------------------------------------- /roles/vmware/tasks/patch_Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Apply VMware host modules patch for newer kernels https://github.com/mkubecek/vmware-host-modules 3 | 4 | # Avoid unarchive from url, as it doesn't support checksum 5 | - name: Download VMware Host Modules patch for Fedora 30 Kernel 5.1 6 | get_url: 7 | url: "{{ fedora_30_vmware_patch_url }}" 8 | checksum: "{{ fedora_30_vmware_patch_checksum }}" 9 | dest: /tmp/vmware-patch.tar.gz 10 | mode: "0777" 11 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_major_version']|int == 30 12 | 13 | - name: extract /tmp/vmware-patch.tar.gz 14 | unarchive: 15 | remote_src: yes 16 | src: /tmp/vmware-patch.tar.gz 17 | dest: /tmp 18 | 19 | - name: Create VMware host module archives 20 | archive: 21 | path: "/tmp/vmware-host-modules-{{ fedora_30_vmware_patch_release }}/{{ item }}-only" 22 | dest: "/usr/lib/vmware/modules/source/{{ item }}.tar" 23 | with_items: 24 | - vmnet 25 | - vmmon 26 | become: yes 27 | -------------------------------------------------------------------------------- /roles/kvm/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: kvm-centos-76 13 | image: centos:7.6.1810 14 | dockerfile: ../resources/Dockerfile.j2 15 | privileged: True 16 | pre_build_image: False 17 | volume_mounts: 18 | - "/sys/fs/cgroup:/sys/fs/cgroup:rw" 19 | - /var/lib/docker 20 | tmpfs: 21 | - /run 22 | - /tmp 23 | command: "/usr/sbin/init" 24 | environment: 25 | container: docker 26 | provisioner: 27 | name: ansible 28 | log: True 29 | playbooks: 30 | vagrant: 31 | prepare: ../resources/playbooks/prepare.yml 32 | converge: ../resources/playbooks/playbook.yml 33 | verify: ../resources/playbooks/verify.yml 34 | lint: 35 | name: ansible-lint 36 | verifier: 37 | name: goss 38 | directory: ../resources/tests 39 | lint: 40 | name: yamllint 41 | -------------------------------------------------------------------------------- /roles/docker/molecule/default/molecule.yml: -------------------------------------------------------------------------------- 1 | --- 2 | dependency: 3 | name: galaxy 4 | role-file: requirements.yml 5 | driver: 6 | name: docker 7 | provider: 8 | name: docker 9 | lint: 10 | name: yamllint 11 | platforms: 12 | - name: docker-centos-76 13 | image: centos:7.6.1810 14 | dockerfile: ../resources/Dockerfile.j2 15 | privileged: True 16 | pre_build_image: False 17 | volume_mounts: 18 | - "/sys/fs/cgroup:/sys/fs/cgroup:rw" 19 | - /var/lib/docker 20 | tmpfs: 21 | - /run 22 | - /tmp 23 | command: "/usr/sbin/init" 24 | environment: 25 | container: docker 26 | provisioner: 27 | name: ansible 28 | log: True 29 | playbooks: 30 | vagrant: 31 | prepare: ../resources/playbooks/prepare.yml 32 | converge: ../resources/playbooks/playbook.yml 33 | verify: ../resources/playbooks/verify.yml 34 | lint: 35 | name: ansible-lint 36 | verifier: 37 | name: goss 38 | directory: ../resources/tests 39 | lint: 40 | name: yamllint 41 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/install_Fedora.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install VirtualBox on Fedora 3 | 4 | - name: setup VirtualBox yum repository on Fedora 30 5 | yum_repository: 6 | name: virtualbox 7 | description: Fedora $releasever - $basearch - VirtualBox 8 | baseurl: http://download.virtualbox.org/virtualbox/rpm/fedora/29/$basearch 9 | enabled: 1 10 | gpgcheck: 1 11 | repo_gpgcheck: 1 12 | gpgkey: https://www.virtualbox.org/download/oracle_vbox.asc 13 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_major_version']|int >= 30 14 | become: yes 15 | 16 | - name: install VirtualBox 17 | yum: 18 | name: "VirtualBox-{{ virtualbox_version }}.{{ ansible_architecture }}" 19 | state: present 20 | become: yes 21 | 22 | - name: install VirtualBox vboxdrv requirements on Fedora 23 | yum: 24 | name: "{{ vboxdrv_required_packages_fedora_30 }}" 25 | state: present 26 | when: ansible_facts['distribution'] == "Fedora" and ansible_facts['distribution_major_version']|int >= 30 27 | become: yes 28 | -------------------------------------------------------------------------------- /ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | #strategy = free 3 | strategy = linear 4 | 5 | # Facts gathering and caching 6 | gathering = smart 7 | fact_caching_timeout = 86400 8 | fact_caching = jsonfile 9 | fact_caching_connection = /tmp/ansible_facts_cache.json 10 | 11 | # Callback and logging 12 | stdout_callback = debug 13 | nocows = 1 14 | log_path = /tmp/ansible.log 15 | display_skipped_hosts = no 16 | display_args_to_stdout = False 17 | deprecation_warnings = True 18 | #callback_whitelist = profile_tasks 19 | 20 | # Inventory and connectivity 21 | inventory = hosts 22 | remote_user = vagrant 23 | host_key_checking = False 24 | forks = 20 25 | pipelining = True 26 | remote_tmp = /tmp/.ansible 27 | #ansible_python_interpreter = /usr/bin/python3 28 | 29 | [privilege_escalation] 30 | become = True 31 | become_method = sudo 32 | become_user = root 33 | become_ask_pass = False 34 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/install_Ubuntu.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install VirtualBox on Ubuntu 3 | 4 | - name: Install packages to allow apt to use a repository over HTTPS 5 | package: 6 | name: "{{ ubuntu_prereq_packages }}" 7 | state: present 8 | become: yes 9 | 10 | - name: add Virtualbox apt signing key 11 | apt_key: 12 | url: "{{ item }}" 13 | state: present 14 | with_items: 15 | - https://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc 16 | - https://download.virtualbox.org/virtualbox/debian/oracle_vbox_2016.asc 17 | become: yes 18 | 19 | - name: setup VirtualBox apt repository on Ubuntu 20 | apt_repository: 21 | repo: "deb https://download.virtualbox.org/virtualbox/debian bionic contrib" 22 | state: present 23 | become: yes 24 | 25 | - name: install VirtualBox 26 | package: 27 | name: "virtualbox-{{ virtualbox_version }}" 28 | state: present 29 | become: yes 30 | 31 | - name: install VirtualBox vboxdrv requirements on Ubuntu 32 | package: 33 | name: "{{ vboxdrv_required_packages_ubuntu_1804 }}" 34 | state: present 35 | become: yes 36 | -------------------------------------------------------------------------------- /roles/vmtools/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for vmtools 3 | 4 | - name: assert supported distributions and versions 5 | assert: 6 | that: 7 | - ( ansible_distribution == "RedHat" and ( ansible_distribution_major_version == '8' ) 8 | ) or 9 | ( ansible_distribution == "CentOS" and ( ansible_distribution_major_version >= "7" ) 10 | ) or 11 | ( ansible_distribution == "Fedora" and ( ansible_distribution_major_version == "30" ) 12 | ) or 13 | ( ansible_distribution == "Debian" and ( ansible_distribution_major_version == "9" or ansible_distribution_major_version == "10" ) 14 | ) or 15 | ( ansible_distribution == "Ubuntu" and ( ansible_distribution_version == "18.04" ) 16 | ) 17 | - ansible_virtualization_role == "guest" 18 | 19 | # VirtualBox 20 | - include: VirtualBox.yml 21 | when: ansible_virtualization_type == "virtualbox" 22 | 23 | # VMware 24 | - include: VMware.yml 25 | when: ansible_virtualization_type == "vmware" 26 | 27 | # KVM 28 | - include: KVM.yml 29 | when: ansible_virtualization_type == "kvm" 30 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/extensions.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Create extensions temporary directory 3 | file: 4 | path: /tmp/vbox-extpacks 5 | state: directory 6 | mode: '0777' 7 | 8 | - name: download extpack 9 | get_url: 10 | dest: /tmp/vbox-extpacks/ 11 | url: "{{ item }}" 12 | with_items: "{{ virtualbox_extpack_urls }}" 13 | 14 | - name: List downloaded extpacks 15 | find: 16 | paths: /tmp/vbox-extpacks 17 | register: extpacks 18 | 19 | # - debug: 20 | # var: item.path 21 | # with_items: "{{ extpacks.files }}" 22 | 23 | - name: check installed extpacks 24 | shell: | 25 | set -o pipefail 26 | vboxmanage list extpacks | grep Usable 27 | args: 28 | executable: /bin/bash 29 | register: extpack_installed 30 | ignore_errors: yes 31 | changed_when: False 32 | 33 | - name: install extpacks 34 | command: VBoxManage extpack install --replace "{{ item.path }}" --accept-license=56be48f923303c8cababb0bb4c478284b688ed23f16d775d729b89a2e8e5f9eb 35 | with_items: "{{ extpacks.files }}" 36 | when: "'false' not in extpack_installed.stdout" 37 | become: yes 38 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/install_Debian.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install VirtualBox on Debian 3 | 4 | - name: Install packages to allow apt to use a repository over HTTPS 5 | apt: 6 | update_cache: yes 7 | name: "{{ debian_prereq_packages }}" 8 | state: present 9 | become: yes 10 | 11 | - name: add Virtualbox apt signing key 12 | apt_key: 13 | url: "{{ item }}" 14 | state: present 15 | with_items: 16 | - https://www.virtualbox.org/download/oracle_vbox_2016.asc 17 | - https://www.virtualbox.org/download/oracle_vbox.asc 18 | become: yes 19 | 20 | - name: setup VirtualBox apt repository on Debian 21 | apt_repository: 22 | repo: "deb https://download.virtualbox.org/virtualbox/debian buster contrib" 23 | state: present 24 | become: yes 25 | 26 | - name: install VirtualBox 27 | apt: 28 | update_cache: yes 29 | name: "virtualbox-{{ virtualbox_version }}" 30 | state: present 31 | become: yes 32 | 33 | - name: install VirtualBox vboxdrv requirements on Debian 34 | apt: 35 | name: "{{ vboxdrv_required_packages_debian_10 }}" 36 | state: present 37 | when: ansible_facts['distribution'] == "Debian" 38 | become: yes 39 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/install_CentOS.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install VirtualBox on CentOS 3 | 4 | - name: setup VirtualBox yum repository on CentOS 7 5 | yum_repository: 6 | name: virtualbox 7 | description: Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox 8 | baseurl: http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch 9 | enabled: 1 10 | gpgcheck: 1 11 | repo_gpgcheck: 1 12 | gpgkey: https://www.virtualbox.org/download/oracle_vbox.asc 13 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_major_version']|int == 7 14 | become: yes 15 | 16 | - name: enable epel repository 17 | yum: 18 | name: epel-release 19 | state: present 20 | become: yes 21 | 22 | - name: install VirtualBox 23 | yum: 24 | name: "VirtualBox-{{ virtualbox_version }}.{{ ansible_architecture }}" 25 | state: present 26 | become: yes 27 | 28 | - name: install VirtualBox vboxdrv requirements on CentOS 7 29 | yum: 30 | name: "{{ vboxdrv_required_packages_centos_7 }}" 31 | state: present 32 | when: ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_major_version']|int == 7 33 | become: yes 34 | -------------------------------------------------------------------------------- /roles/vmtools/tasks/VirtualBox.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for packages 3 | 4 | - name: install epel-release on CentOS 5 | package: 6 | name: epel-release 7 | state: present 8 | when: ansible_distribution == "CentOS" 9 | become: yes 10 | 11 | - name: install VirtualBox tools prereq packages 12 | package: 13 | name: "{{ packages_virtualbox_tools }}" 14 | state: present 15 | become: yes 16 | 17 | - name: download VirtualBox guest additions iso 18 | get_url: 19 | url: https://download.virtualbox.org/virtualbox/6.0.10/VBoxGuestAdditions_6.0.10.iso 20 | checksum: sha256:c8a686f8c7ad9ca8375961ab19815cec6b1f0d2496900a356a38ce86fe8a1325 21 | dest: /tmp/VBoxGuestAdditions_6.0.10.iso 22 | 23 | - name: create VirtualBox guest additions mountpoint 24 | file: 25 | name: /tmp/vbox 26 | state: directory 27 | 28 | - name: mount VirtualBox guest additions iso 29 | mount: 30 | name: /tmp/vbox 31 | src: "/tmp/VBoxGuestAdditions_6.0.10.iso" 32 | opts: loop 33 | state: mounted 34 | fstype: iso9660 35 | become: yes 36 | 37 | - name: install VirtualBox guest additions 38 | command: /tmp/vbox/VBoxLinuxAdditions.run 39 | args: 40 | creates: 41 | - /sbin/rcvboxadd 42 | register: command_result 43 | failed_when: "'FAILED' in command_result.stderr" 44 | become: yes 45 | -------------------------------------------------------------------------------- /roles/virtualbox/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for virtualbox 3 | 4 | # Packages to allow apt over https 5 | ubuntu_prereq_packages: 6 | - apt-transport-https 7 | - ca-certificates 8 | - curl 9 | - gnupg-agent 10 | - software-properties-common 11 | 12 | # Packages to allow apt over https 13 | debian_prereq_packages: 14 | - apt-transport-https 15 | - ca-certificates 16 | - curl 17 | - gnupg-agent 18 | - software-properties-common 19 | 20 | vboxdrv_required_packages_centos_7: 21 | - binutils 22 | - qt 23 | - gcc 24 | - make 25 | - patch 26 | - libgomp 27 | - glibc-headers 28 | - glibc-devel 29 | - "kernel-headers-{{ ansible_kernel }}" 30 | - "kernel-devel-{{ ansible_kernel }}" 31 | - dkms 32 | 33 | vboxdrv_required_packages_rhel_8: 34 | - binutils 35 | - qt 36 | - gcc 37 | - make 38 | - patch 39 | - libgomp 40 | - glibc-headers 41 | - glibc-devel 42 | - "kernel-headers-{{ ansible_kernel }}" 43 | - "kernel-devel-{{ ansible_kernel }}" 44 | - dkms 45 | 46 | vboxdrv_required_packages_fedora_30: 47 | - binutils 48 | - qt 49 | - gcc 50 | - make 51 | - patch 52 | - libgomp 53 | - glibc-headers 54 | - glibc-devel 55 | - "kernel-headers-{{ ansible_kernel }}" 56 | - "kernel-devel-{{ ansible_kernel }}" 57 | - dkms 58 | 59 | vboxdrv_required_packages_ubuntu_1804: 60 | - build-essential 61 | - gcc 62 | - "linux-headers-{{ ansible_kernel }}" 63 | 64 | vboxdrv_required_packages_debian_10: 65 | - build-essential 66 | - gcc 67 | - "linux-headers-{{ ansible_kernel }}" 68 | -------------------------------------------------------------------------------- /roles/kvm/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for kvm 3 | 4 | centos_packages: 5 | - policycoreutils-python 6 | - qemu-kvm 7 | - qemu-img 8 | - libvirt 9 | - libvirt-client 10 | - libvirt-python 11 | - libvirt-nss 12 | - libguestfs-tools 13 | - virt-install 14 | - bridge-utils 15 | - virt-top 16 | - genisoimage 17 | 18 | redhat_packages: 19 | - policycoreutils-python-utils 20 | - qemu-kvm 21 | - qemu-img 22 | - libvirt 23 | - libvirt-client 24 | - python3-libvirt 25 | - libvirt-nss 26 | - libguestfs-tools 27 | - virt-install 28 | - virt-top 29 | - genisoimage 30 | 31 | fedora_packages: 32 | - policycoreutils-python-utils 33 | - qemu-kvm 34 | - qemu-img 35 | - libvirt 36 | - libvirt-client 37 | - python3-libvirt 38 | - libvirt-nss 39 | - libguestfs-tools 40 | - virt-install 41 | - virt-top 42 | - genisoimage 43 | 44 | debian_packages: 45 | - policycoreutils-python-utils 46 | - qemu-kvm 47 | - qemu-utils 48 | - libvirt-clients 49 | - libvirt-daemon-system 50 | - bridge-utils 51 | - python3-libvirt 52 | - libnss-libvirt 53 | - libguestfs-tools 54 | - virtinst 55 | - virt-top 56 | - genisoimage 57 | 58 | ubuntu_packages: 59 | - policycoreutils-python-utils 60 | - qemu-kvm 61 | - qemu-utils 62 | - libvirt-clients 63 | - libvirt-daemon-system 64 | - bridge-utils 65 | - python3-libvirt 66 | - libnss-libvirt 67 | - libguestfs-tools 68 | - virtinst 69 | - virt-top 70 | - genisoimage 71 | 72 | selinux_booleans: 73 | - {name: staff_use_svirt, state: yes, persistent: yes} 74 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | -------------------------------------------------------------------------------- /roles/docker/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | 28 | -------------------------------------------------------------------------------- /roles/kvm/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | 28 | -------------------------------------------------------------------------------- /roles/lxd/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | 28 | -------------------------------------------------------------------------------- /roles/packer/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | 28 | -------------------------------------------------------------------------------- /roles/podman/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | 28 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | -------------------------------------------------------------------------------- /roles/vmware/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | 28 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | 28 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/resources/Dockerfile.j2: -------------------------------------------------------------------------------- 1 | # Molecule managed 2 | 3 | {% if item.registry is defined %} 4 | FROM {{ item.registry.url }}/{{ item.image }} 5 | {% else %} 6 | FROM {{ item.image }} 7 | {% endif %} 8 | 9 | RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ 10 | elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash python3-libselinux && dnf clean all; \ 11 | elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ 12 | elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \ 13 | elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \ 14 | elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi 15 | 16 | # Create `ansible` user with sudo permissions and membership in `DEPLOY_GROUP` 17 | ENV ANSIBLE_USER=ansible DEPLOY_GROUP=deployer 18 | RUN set -xe \ 19 | && if [ $(getent group wheel) ]; then export SUDO_GROUP=wheel; fi \ 20 | && if [ $(getent group sudo) ]; then export SUDO_GROUP=sudo; fi \ 21 | && groupadd -r ${ANSIBLE_USER} \ 22 | && groupadd -r ${DEPLOY_GROUP} \ 23 | && useradd -m -g ${ANSIBLE_USER} ${ANSIBLE_USER} \ 24 | && usermod -aG ${SUDO_GROUP} ${ANSIBLE_USER} \ 25 | && usermod -aG ${DEPLOY_GROUP} ${ANSIBLE_USER} \ 26 | && sed -i "/^%${SUDO_GROUP}/s/ALL\$/NOPASSWD:ALL/g" /etc/sudoers 27 | 28 | -------------------------------------------------------------------------------- /roles/virtualbox/tasks/install_RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Install VirtualBox on RedHat 3 | 4 | - name: setup VirtualBox yum repository on RHEL <= 7 5 | yum_repository: 6 | name: virtualbox 7 | description: Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox 8 | baseurl: http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch 9 | enabled: 1 10 | gpgcheck: 1 11 | repo_gpgcheck: 1 12 | gpgkey: https://www.virtualbox.org/download/oracle_vbox.asc 13 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_major_version']|int <= 7 14 | become: yes 15 | 16 | # Temporary fix, for RHEL 8 (currently, distribution is not available) 17 | - name: setup VirtualBox yum repository on RHEL 8 (using Fedora 29 repo) 18 | yum_repository: 19 | name: virtualbox 20 | description: Fedora $releasever - $basearch - VirtualBox 21 | baseurl: http://download.virtualbox.org/virtualbox/rpm/fedora/29/$basearch 22 | enabled: 1 23 | gpgcheck: 1 24 | repo_gpgcheck: 1 25 | gpgkey: https://www.virtualbox.org/download/oracle_vbox.asc 26 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_major_version']|int == 8 27 | become: yes 28 | 29 | - name: install VirtualBox 30 | package: 31 | name: "VirtualBox-{{ virtualbox_version }}.{{ ansible_architecture }}" 32 | state: present 33 | become: yes 34 | 35 | - name: install VirtualBox vboxdrv requirements on RHEL 36 | package: 37 | name: "{{ vboxdrv_required_packages_rhel_8 }}" 38 | state: present 39 | when: ansible_facts['distribution'] == "RedHat" and ansible_facts['distribution_major_version']|int == 8 40 | become: yes 41 | -------------------------------------------------------------------------------- /roles/vmtools/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for vmtools: VirtualBox 3 | # VirtualBox tools prereq packages to install 4 | _packages_virtualbox_tools: 5 | all: 6 | - bzip2 7 | - gcc 8 | - make 9 | Debian: 10 | - build-essential 11 | - "linux-headers-{{ ansible_kernel }}" 12 | Ubuntu: 13 | - build-essential 14 | - "linux-headers-{{ ansible_kernel }}" 15 | CentOS: 16 | - dkms 17 | - "kernel-headers-{{ ansible_kernel }}" 18 | - "kernel-devel-{{ ansible_kernel }}" 19 | RedHat: 20 | - "kernel-headers-{{ ansible_kernel }}" 21 | - "kernel-devel-{{ ansible_kernel }}" 22 | Fedora: 23 | - dkms 24 | - "kernel-headers-{{ ansible_kernel }}" 25 | - "kernel-devel-{{ ansible_kernel }}" 26 | 27 | packages_virtualbox_tools: "{{ _packages_virtualbox_tools['all'] + ( _packages_virtualbox_tools[ansible_distribution] | default([]) ) }}" 28 | 29 | # vars file for vmtools: KVM 30 | # Service name: qemu-guest-agent 31 | _service_name_kvm_tools: 32 | default: qemu-guest-agent 33 | 34 | service_name_kvm_tools: "{{ _service_name_kvm_tools[ansible_distribution] | default(_service_name_kvm_tools['default']) }}" 35 | 36 | # KVM tools packages to install 37 | _packages_kvm_tools: 38 | all: 39 | - "qemu-guest-agent" 40 | 41 | packages_kvm_tools: "{{ _packages_kvm_tools['all'] + ( _packages_kvm_tools[ansible_distribution] | default([]) ) }}" 42 | 43 | # vars file for vmtools: VMware 44 | # Service name: vmtoolsd, vgauthd.service 45 | _service_name_vmware_tools: 46 | default: vmtoolsd 47 | Debian: open-vm-tools 48 | Ubuntu: open-vm-tools 49 | 50 | service_name_vmware_tools: "{{ _service_name_vmware_tools[ansible_distribution] | default(_service_name_vmware_tools['default']) }}" 51 | 52 | # VMware Tools packages to install: open-vm-tools-desktop 53 | _packages_vmware_tools: 54 | all: 55 | - open-vm-tools 56 | Fedora: 57 | - open-vm-tools 58 | - open-vm-tools-desktop 59 | 60 | packages_vmware_tools: "{{ _packages_vmware_tools['all'] + ( _packages_vmware_tools[ansible_distribution] | default([]) ) }}" 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Ansible Virtualization Collection 2 | ================================= 3 | 4 | [Ansible Galaxy Collection: Virtualization](https://galaxy.ansible.com/crivetimihai/virtualization): 5 | 6 | - KVM 7 | - VirtualBox 8 | - VMware Workstation 9 | - LXC/LXD 10 | - Docker-CE 11 | - Podman (with Buildah and Skopeo) 12 | - Packer 13 | - Vagrant 14 | - VM Tools (VMware, VirtualBox and KVM) 15 | - VMVagrant: setup a virtual machine for vagrant (user, ssh key, etc) 16 | 17 | Tested on: 18 | ---------- 19 | 20 | - CentOS 7 21 | - RHEL 8 22 | - Fedora 30 23 | - Ubuntu 18.04 24 | - Debian 10 25 | 26 | Example 27 | ------- 28 | 29 | ### Install the role: 30 | 31 | ```bash 32 | pip install --upgrade ansible 33 | ansible-galaxy collection install crivetimihai.virtualization 34 | ``` 35 | 36 | 37 | ### playbook.yml example 38 | 39 | ```yaml 40 | - name: setup a virtualization environment 41 | hosts: all 42 | connection: local 43 | become: yes 44 | gather_facts: yes 45 | roles: 46 | - role: crivetimihai.virtualization.kvm 47 | - role: crivetimihai.virtualization.lxd 48 | - role: crivetimihai.virtualization.vmware 49 | - role: crivetimihai.virtualization.virtualbox 50 | - role: crivetimihai.virtualization.podman 51 | - role: crivetimihai.virtualization.docker 52 | - role: crivetimihai.virtualization.packer 53 | - role: crivetimihai.virtualization.vagrant 54 | ``` 55 | 56 | ### Running the playbook 57 | 58 | > Change to the python interpreter location on the target system. 59 | 60 | 61 | ```bash 62 | ansible-playbook -i localhost, playbook.yml \ 63 | -e "vmware_workstation_license_key='XXXXX-XX...'" \ 64 | -e "ansible_python_interpreter=/usr/bin/python3" 65 | ``` 66 | 67 | ### Running tests 68 | 69 | ``` 70 | molecule --debug create 71 | molecule --debug converge 72 | molecule login 73 | molecule destroy 74 | 75 | # Test one scenario: 76 | molecule converge -s rhel-8 77 | 78 | # Create a new role 79 | molecule init role -r new_role -d docker 80 | ``` 81 | 82 | # See also: 83 | 84 | - [Ansible Workstation Collection](https://galaxy.ansible.com/crivetimihai/workstation) 85 | -------------------------------------------------------------------------------- /roles/docker/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/kvm/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/lxd/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/packer/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/podman/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/vagrant/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/vmtools/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/vmware/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/virtualbox/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /roles/vmvagrant/molecule/resources/playbooks/verify.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Verify 3 | hosts: all 4 | gather_facts: true # required 5 | become: true 6 | vars: 7 | goss_version: v0.3.7 8 | goss_arch: amd64 9 | goss_bin: /usr/local/bin/goss 10 | goss_sha256sum: 357f5c7f2e7949b412bce44349cd32ab19eb3947255a8ac805f884cc2c326059. 11 | goss_test_directory: /tmp/molecule/goss 12 | goss_format: documentation 13 | tasks: 14 | - name: Download and install Goss 15 | get_url: 16 | url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" 17 | dest: "{{ goss_bin }}" 18 | sha256sum: "{{ goss_sha256sum }}" 19 | mode: 0755 20 | 21 | - name: Create Molecule directory for test files 22 | file: 23 | path: "{{ goss_test_directory }}" 24 | state: directory 25 | 26 | - name: Find Goss tests on localhost 27 | find: 28 | paths: "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}" 29 | patterns: 30 | - "test[-.\\w]*.yml" 31 | - "test_host_{{ ansible_hostname }}[-.\\w]*.yml" 32 | excludes: 33 | - "test_host_(?!{{ ansible_hostname }})[-.\\w]*.yml" 34 | use_regex: true 35 | delegate_to: localhost 36 | register: test_files 37 | changed_when: false 38 | become: false 39 | 40 | - name: debug 41 | debug: 42 | msg: "{{ test_files.files }}" 43 | verbosity: 3 44 | 45 | - name: Copy Goss tests to remote 46 | copy: 47 | src: "{{ item.path }}" 48 | dest: "{{ goss_test_directory }}/{{ item.path | basename }}" 49 | with_items: 50 | - "{{ test_files.files }}" 51 | 52 | - name: Register test files 53 | shell: "ls {{ goss_test_directory }}/test_*.yml" 54 | register: test_files 55 | 56 | - name: Execute Goss tests 57 | command: "{{ goss_bin }} -g {{ item }} validate --format {{ goss_format }}" 58 | register: test_results 59 | with_items: "{{ test_files.stdout_lines }}" 60 | ignore_errors: true 61 | 62 | - name: Display details about the Goss results 63 | debug: 64 | msg: "{{ item.stdout_lines }}" 65 | with_items: "{{ test_results.results }}" 66 | 67 | - name: Fail when tests fail 68 | fail: 69 | msg: "Goss failed to validate" 70 | when: item.rc != 0 71 | with_items: "{{ test_results.results }}" 72 | -------------------------------------------------------------------------------- /docs/mkdocs.yml: -------------------------------------------------------------------------------- 1 | # Project Information 2 | site_name: Ansible Galaxy Collection - Virtualization 3 | site_url: https://github.com/crivetimihai/ansible_virtualization 4 | site_description: Ansible Collection of Virtualization Tools (VirtualBox, KVM, VMware Workstation, Docker, Podman) for RHEL, CentOS, Fedora and Ubuntu Linux 5 | site_author: Mihai Criveti 6 | copyright: Mihai Criveti 7 | 8 | # Repository Information 9 | repo_name: 'crivetimihai/ansible_virtualization' 10 | repo_url: 'https://github.com/crivetimihai/ansible_virtualization' 11 | edit_uri: 'edit/master/docs' 12 | docs_dir: 'docs' 13 | site_dir: 'site' 14 | remote_branch: 'gh-pages' 15 | remote_name: 'origin' 16 | 17 | # Server info 18 | dev_addr: '127.0.0.1:8001' 19 | #prebuild_index: true 20 | 21 | # Copyright 22 | copyright: Author and Contact - Mihai Criveti. 23 | 24 | # Theme 25 | theme: 26 | name: material 27 | feature: 28 | tabs: true 29 | # custom_dir: theme 30 | palette: 31 | primary: 'indigo' 32 | accent: 'blue' 33 | font: 34 | text: 'IBM Plex Sans' 35 | code: 'IBM Plex Mono' 36 | logo: 37 | icon: 'cloud' 38 | favicon: 'theme/favicon.ico' 39 | 40 | # Extra stylesheet 41 | extra_css: 42 | - 'extra-uml.css' 43 | - 'pdf.css' 44 | - 'mermaid.css' 45 | 46 | extra_javascript: 47 | - 'extra-uml.js' 48 | - 'raphael.min.js' 49 | - 'underscore-min.js' 50 | - 'sequence-diagram-min.js' 51 | - 'flowchart.min.js' 52 | - 'mermaid.min.js' 53 | 54 | # Plugins 55 | plugins: 56 | - git-revision-date 57 | - search 58 | - pdf-export: 59 | verbose: true 60 | media_type: print 61 | enabled_if_env: ENABLE_PDF_EXPORT 62 | combined: false 63 | 64 | # Extra 65 | extra: 66 | repo_icon: 'github' 67 | social: 68 | - type: 'github' 69 | link: 'https://github.com/crivetimihai' 70 | - type: 'linkedin' 71 | link: 'https://www.linkedin.com/in/crivetimihai/' 72 | - type: 'twitter' 73 | link: 'https://twitter.com/CrivetiMihai' 74 | - type: 'globe' 75 | link: 'http://blog.boreas.ro/' 76 | 77 | 78 | # Navigation 79 | nav: 80 | - Ansible Collection: 81 | - Introduction: index.md 82 | - Virtualization: 83 | - VirtualBox: virtualization/virtualbox.md 84 | - KVM: virtualization/kvm.md 85 | - VMware: virtualization/vmware.md 86 | - VMware: virtualization/lxd.md 87 | - Podman: virtualization/podman.md 88 | - Docker: virtualization/docker-ce.md 89 | 90 | # Markdown extensions 91 | markdown_extensions: 92 | - markdown_blockdiag: 93 | format: svg 94 | - markdown.extensions.toc: 95 | slugify: !!python/name:pymdownx.slugs.uslugify 96 | permalink: "\ue157" 97 | - markdown.extensions.admonition: 98 | - markdown.extensions.smarty: 99 | smart_quotes: false 100 | - pymdownx.betterem: 101 | - pymdownx.critic: 102 | - markdown.extensions.attr_list: 103 | - markdown.extensions.def_list: 104 | - markdown.extensions.tables: 105 | - markdown.extensions.abbr: 106 | - markdown.extensions.footnotes: 107 | - pymdownx.extrarawhtml: 108 | - pymdownx.superfences: 109 | preserve_tabs: true 110 | custom_fences: 111 | - name: flow 112 | class: uml-flowchart 113 | format: !!python/name:pymdownx.superfences.fence_code_format 114 | - name: sequence 115 | class: uml-sequence-diagram 116 | format: !!python/name:pymdownx.superfences.fence_code_format 117 | - name: mermaid 118 | class: mermaid 119 | format: !!python/name:pymdownx.superfences.fence_div_format 120 | - pymdownx.highlight: 121 | css_class: codehilite 122 | extend_pygments_lang: 123 | - name: php-inline 124 | lang: php 125 | options: 126 | startinline: true 127 | - name: pycon3 128 | lang: pycon 129 | options: 130 | python3: true 131 | linenums_style: pymdownx-inline 132 | - pymdownx.inlinehilite 133 | - pymdownx.magiclink: 134 | repo_url_shortener: true 135 | repo_url_shorthand: true 136 | social_url_shorthand: true 137 | user: facelessuser 138 | repo: pymdown-extensions 139 | - pymdownx.tilde: 140 | - pymdownx.caret: 141 | - pymdownx.smartsymbols: 142 | - pymdownx.emoji: 143 | emoji_generator: !!python/name:pymdownx.emoji.to_png 144 | - pymdownx.escapeall: 145 | hardbreak: True 146 | nbsp: True 147 | - pymdownx.tasklist: 148 | custom_checkbox: true 149 | - pymdownx.progressbar: 150 | - pymdownx.arithmatex: 151 | - pymdownx.mark: 152 | - pymdownx.striphtml: 153 | - pymdownx.snippets: 154 | base_path: docs/src/markdown/_snippets 155 | - pymdownx.keys: 156 | separator: "\uff0b" 157 | - pymdownx.details: 158 | --------------------------------------------------------------------------------