# setup hypervisor hosts - AlmaLinux 8, minimal install - LVM, root uses 30G, no home volume, all remaining disk provisioned by ceph - 3 nodes - 192.168.140.1-3/24 - user: ansible, has password-less sudo and ssh keys setup ## network ```sh nmcli con add type ethernet ifname ens1 con-name ctlplane connection.autoconnect yes ip4 192.168.140.41/24 gw4 192.168.140.1 ipv4.dns 1.1.1.1,8.8.8.8 ipv4.dns-search local nmcli con del ens1 && reboot ``` ## ansible user ```sh groupadd -r -g 1001 ansible && useradd -r -u 1001 -g 1001 -m -s /bin/bash ansible ;\ echo "%ansible ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ansible ;\ chmod 0440 /etc/sudoers.d/ansible ;\ passwd ansible ;\ hostnamectl set-hostname qemu01.local ;\ hostnamectl set-hostname --transient qemu01.local ;\ hostnamectl set-hostname --pretty qemu01 ;\ hostnamectl ssh-copy-id -i ~/.ssh/id_rsa.pub ansible@192.168.140.41 ``` # setup python venv Setup a venv the easy way. ```sh sudo apt-get update sudo apt-get install python3-dev libffi-dev gcc libssl-dev sudo apt install python3-venv mkdir -p /home/tseed/ansible/venv python3 -m venv /home/tseed/ansible/venv source /home/tseed/ansible/venv/bin/activate ``` # setup ansible environment ## install additional ansible galaxy collection ansible-galaxy collection install community.general ## record collections file for replicating this environment nano -cw requirements.yml ```sh collections: - name: community.general ``` ## install requirements from file on new environment ```sh ansible-galaxy collection install -r requirements.yml ansible-galaxy collection install community.general --upgrade dnf install sshpass / apt-get install sshpass pip install jmespath ``` # run playbook ## start venv ```sh source /home/tseed/ansible/venv/bin/activate ``` ## run hypervisor build playbook This only builds hypervisors up to Ceph RBD, VM provisioning not complete ```sh ansible-playbook bootstrap_hypervisors.yml ``` ## run dynamic roles from XCAT inventory for the various provisioned VMs Used in production stack to provision various node classes, there are no real roles in this repo - just framework stuff and ntp/os_packages ```sh ansible-playbook -l all site.yml ```