====== Ansible-kvm Dev ====== Working dir /mnt/nfv/ansible_quicklabs_ws Currently is being dev under /mnt/nfv/ansible_quicklabs_ws/ansible_quicklabs/library_ext/ansible-kvm and not yet version controlled. ====== KVM Network ====== * http://localhost/~dang/wiki/doku.php?id=virtualization:kvm_network ====== Prepare Images Cloud-init ====== {{tag>cloud-init}} Download cloud image * http://www.projectatomic.io/blog/2014/10/getting-started-with-cloud-init/ * https://cloud.centos.org/centos/7/images/ Cloud-init notwork? try guestfish * https://access.redhat.com/discussions/664843 sudo LIBGUESTFS_BACKEND=direct guestfish --rw -a instances/controller.qcow2 > run > list-filesystems /dev/sda1: xfs > mount /dev/sda1 / > openssl passwd -1 changeme $1$QiSwNHrs$uID6S6qOifSNZKzfXsmQG1 * or https://scottlinux.com/2017/05/08/set-password-or-ssh-key-for-centos-cloud-images/ Create cloud-init iso http://giovannitorres.me/create-a-linux-lab-on-kvm-using-cloud-images.html ==== user-data ==== cat > user-data << _EOF_ #cloud-config # Hostname management preserve_hostname: False hostname: default-host fqdn: default-host.example.local # Remove cloud-init when finished with it (optional) runcmd: - [ yum, -y, remove, cloud-init ] # Configure where output will go output: all: ">> /var/log/cloud-init.log" # configure interaction with ssh server ssh_svcname: ssh ssh_deletekeys: True ssh_genkeytypes: ['rsa', 'ecdsa'] # Install my public ssh key to the first user-defined user configured # in cloud.cfg in the template (which is centos for CentOS cloud images) ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBil2QzORhDcnKiVVNpO5daOSYVp8nshcIc7aTEkdlqCRir2Oni8BEStK7x7bvh0jrp9KptlHPeos87fQs//VXEb1FEprL2c6fPWmVdtjmYw3yzSkaFKMksL7FdUoEiwF6t8pQAg2mU0Qj9emSHBKg5ttdGqNoSvXc92k7iOzgauda7jdNak+Dx9dPhR3FJwHMcZSlQHO4cweZcK63bZitxlFkJ/FJdry/TBirDhRcXslOJ3ECU2xiyRXJVPs3VNLjMdOTTAoMmZj+GraUBbQ9VIqe683xe02sM83th5hj2C4gW3qXUoFkNLfKAMRxXLRMEwI3ABFB/AAUhACxyTJp giovanni@throwaway # Send pre-generated ssh private keys to the server # If these are present, they will be written to /etc/ssh and # new random keys will not be generated # in addition to 'rsa' and 'dsa' as shown below, 'ecdsa' is also supported ssh_keys: rsa_private: | -----BEGIN RSA PRIVATE KEY----- MIIBxwIBAAJhAKD0YSHy73nUgysO13XsJmd4fHiFyQ+00R7VVu2iV9Qcon2LZS/x 1cydPZ4pQpfjEha6WxZ6o8ci/Ea/w0n+0HGPwaxlEG2Z9inNtj3pgFrYcRztfECb 1j6HCibZbAzYtwIBIwJgO8h72WjcmvcpZ8OvHSvTwAguO2TkR6mPgHsgSaKy6GJo PUJnaZRWuba/HX0KGyhz19nPzLpzG5f0fYahlMJAyc13FV7K6kMBPXTRR6FxgHEg L0MPC7cdqAwOVNcPY6A7AjEA1bNaIjOzFN2sfZX0j7OMhQuc4zP7r80zaGc5oy6W p58hRAncFKEvnEq2CeL3vtuZAjEAwNBHpbNsBYTRPCHM7rZuG/iBtwp8Rxhc9I5w ixvzMgi+HpGLWzUIBS+P/XhekIjPAjA285rVmEP+DR255Ls65QbgYhJmTzIXQ2T9 luLvcmFBC6l35Uc4gTgg4ALsmXLn71MCMGMpSWspEvuGInayTCL+vEjmNBT+FAdO W7D4zCpI43jRS9U06JVOeSc9CDk2lwiA3wIwCTB/6uc8Cq85D9YqpM10FuHjKpnP REPPOyrAspdeOAV+6VKRavstea7+2DZmSUgE -----END RSA PRIVATE KEY----- rsa_public: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEAoPRhIfLvedSDKw7XdewmZ3h8eIXJD7TRHtVW7aJX1ByifYtlL/HVzJ09nilCl+MSFrpbFnqjxyL8Rr/DSf7QcY/BrGUQbZn2Kc22PemAWthxHO18QJvWPocKJtlsDNi3 smoser@localhost dsa_private: | -----BEGIN DSA PRIVATE KEY----- MIIBuwIBAAKBgQDP2HLu7pTExL89USyM0264RCyWX/CMLmukxX0Jdbm29ax8FBJT pLrO8TIXVY5rPAJm1dTHnpuyJhOvU9G7M8tPUABtzSJh4GVSHlwaCfycwcpLv9TX DgWIpSj+6EiHCyaRlB1/CBp9RiaB+10QcFbm+lapuET+/Au6vSDp9IRtlQIVAIMR 8KucvUYbOEI+yv+5LW9u3z/BAoGBAI0q6JP+JvJmwZFaeCMMVxXUbqiSko/P1lsa LNNBHZ5/8MOUIm8rB2FC6ziidfueJpqTMqeQmSAlEBCwnwreUnGfRrKoJpyPNENY d15MG6N5J+z81sEcHFeprryZ+D3Ge9VjPq3Tf3NhKKwCDQ0240aPezbnjPeFm4mH bYxxcZ9GAoGAXmLIFSQgiAPu459rCKxT46tHJtM0QfnNiEnQLbFluefZ/yiI4DI3 8UzTCOXLhUA7ybmZha+D/csj15Y9/BNFuO7unzVhikCQV9DTeXX46pG4s1o23JKC /QaYWNMZ7kTRv+wWow9MhGiVdML4ZN4XnifuO5krqAybngIy66PMEoQCFEIsKKWv 99iziAH0KBMVbxy03Trz -----END DSA PRIVATE KEY----- dsa_public: ssh-dss AAAAB3NzaC1kc3MAAACBAM/Ycu7ulMTEvz1RLIzTbrhELJZf8Iwua6TFfQl1ubb1rHwUElOkus7xMhdVjms8AmbV1Meem7ImE69T0bszy09QAG3NImHgZVIeXBoJ/JzByku/1NcOBYilKP7oSIcLJpGUHX8IGn1GJoH7XRBwVub6Vqm4RP78C7q9IOn0hG2VAAAAFQCDEfCrnL1GGzhCPsr/uS1vbt8/wQAAAIEAjSrok/4m8mbBkVp4IwxXFdRuqJKSj8/WWxos00Ednn/ww5QibysHYULrOKJ1+54mmpMyp5CZICUQELCfCt5ScZ9GsqgmnI80Q1h3Xkwbo3kn7PzWwRwcV6muvJn4PcZ71WM+rdN/c2EorAINDTbjRo97NueM94WbiYdtjHFxn0YAAACAXmLIFSQgiAPu459rCKxT46tHJtM0QfnNiEnQLbFluefZ/yiI4DI38UzTCOXLhUA7ybmZha+D/csj15Y9/BNFuO7unzVhikCQV9DTeXX46pG4s1o23JKC/QaYWNMZ7kTRv+wWow9MhGiVdML4ZN4XnifuO5krqAybngIy66PMEoQ= smoser@localhost _EOF_ echo "instance-id: default-instance; local-hostname: default-host" > meta-data * More example: https://cloudinit.readthedocs.io/en/latest/topics/examples.html * centos uses v 0.7.5, aware of the format: * https://cloudinit.readthedocs.io/en/0.7.7/topics/examples.html * https://docs.platform9.com/support/customize-a-virtual-machine-instance-with-cloud-init/ Create iso genisoimage -output default-cidata.iso -volid cidata -joliet -rock user-data meta-data ===== Debug cloud init ===== #on centos less /var/log/message # search CLOUDINIT /var/log/cloud-init.log sudo cloud-init --debug --file user-data single --name write_files --frequency=always ; echo $? Test Run image or use ansible module qemu-img create -f qcow2 -o backing_file=fedora-atomic-rawhide-20141008.0.qcow2 hda.qcow2 qemu-kvm -name atomic-cloud-host -m 768 -hda hda.qcow2 -cdrom atomic01-cidata.iso -netdev bridge,br=virbr0,id=net0 -device virtio-net-pci,netdev=net0 -display sdl ====== Running / Testing Module Command ====== cd /mnt/nfv/ansible_quicklabs_ws ls # ansible-kvm ansible-nmcli ansible_quicklabs ansible_src source ansible_src/ansible/hacking/env-setup ===== Create workspace for cloud_lab ===== ansible-playbook -i inventory/vi_nodes quicklab_kvm_openstack.yml --tags prepair -vvv ===== Create instance ===== sudo ansible_src/ansible/hacking/test-module -m ansible_quicklabs/library_ext/ansible-kvm/library/kvm_cmd.py -a "action='instance-create' image_base='/mnt/nfv/kvm_openstack_lab/images/Fedora-Cloud-Base-24-1.2.x86_64.qcow2' image_format='qcow2' instance_name='/mnt/nfv/kvm_openstack_lab/instances/controller.qcow2' image_size=8G" ===== Boot instance ===== sudo ansible_src/ansible/hacking/test-module -m ansible_quicklabs/library_ext/ansible-kvm/library/kvm_cmd.py \ -a "action='boot' instance_name='/mnt/nfv/kvm_openstack_lab/instances/controller.qcow2' instance_cpus=1 instance_ram=1024 instance_vnc=:1 instance_cdrom=/mnt/nfv/kvm_openstack_lab/cloud-init/default/default-cidata.iso" ===== SSH ===== http://docs.ansible.com/ansible/intro_adhoc.html#parallelism-and-shell-commands ===== Errors ===== ==== restart dnsmasqd.service on host machine ====