update
This commit is contained in:
parent
c417a6f3f9
commit
33a439173c
17 changed files with 1298 additions and 95 deletions
|
@ -28,9 +28,92 @@ AGI_install_network_interfaces:
|
|||
config: dhcp
|
||||
AGI_container_disk: /dev/vda
|
||||
|
||||
AGI_install_root_password: root
|
||||
AGI_install_syslog_daemon: syslog-ng # app-admin/sysklogd
|
||||
AGI_install_cron_daemon: sys-process/cronie
|
||||
AGI_install_cron_daemon: cronie
|
||||
AGI_install_bootloader: syslinux
|
||||
|
||||
AGI_install_syslinux_kernel_line:
|
||||
# this is required I think
|
||||
- console=tty1
|
||||
# this is required I think
|
||||
- text
|
||||
# adjust these to suit
|
||||
- lang=en
|
||||
- keymap=us
|
||||
- rootfstype=ext2
|
||||
# remove this if you want IPV6
|
||||
- ipv6.disable=1
|
||||
# fsck should NOT be done by the bootloader
|
||||
- rd.skipfsck=1
|
||||
# =0x37f works too
|
||||
- vga=789
|
||||
# these may not all be needed or useful in a container
|
||||
- pti=on
|
||||
- iommu=pt
|
||||
- amd_iommu=on
|
||||
- intel_iommu=on
|
||||
- debug
|
||||
|
||||
# remove the unused ones:
|
||||
AGI_install_syslinux_c32:
|
||||
- vesa.c32
|
||||
- vesainfo.c32
|
||||
- vesamenu.c32
|
||||
- cat.c32
|
||||
- chain.c32
|
||||
- cmd.c32
|
||||
- cmenu.c32
|
||||
- cptime.c32
|
||||
- cpu.c32
|
||||
- cpuid.c32
|
||||
- cpuidtest.c32
|
||||
- debug.c32
|
||||
- dir.c32
|
||||
- disk.c32
|
||||
- dmi.c32
|
||||
- dmitest.c32
|
||||
- elf.c32
|
||||
- ethersel.c32
|
||||
- gfxboot.c32
|
||||
- gpxecmd.c32
|
||||
- hdt.c32
|
||||
- host.c32
|
||||
- ifcpu.c32
|
||||
- ifcpu64.c32
|
||||
- ifmemdsk.c32
|
||||
- ifplop.c32
|
||||
- kbdmap.c32
|
||||
- kontron_wdt.c32
|
||||
- ldlinux.c32
|
||||
- lfs.c32
|
||||
- libcom32.c32
|
||||
- libgpl.c32
|
||||
- liblua.c32
|
||||
- libmenu.c32
|
||||
- libutil.c32
|
||||
- linux.c32
|
||||
- ls.c32
|
||||
- mboot.c32
|
||||
- meminfo.c32
|
||||
- menu.c32
|
||||
- pci.c32
|
||||
- pcitest.c32
|
||||
- pmload.c32
|
||||
- poweroff.c32
|
||||
- prdhcp.c32
|
||||
- pwd.c32
|
||||
- pxechn.c32
|
||||
- reboot.c32
|
||||
- rosh.c32
|
||||
- sanboot.c32
|
||||
- sdi.c32
|
||||
- sysdump.c32
|
||||
- syslinux.c32
|
||||
- vpdtest.c32
|
||||
- whichsys.c32
|
||||
|
||||
|
||||
AGI_install_root_password: root
|
||||
|
||||
AGI_bootstrap_mountpoints: []
|
||||
|
||||
|
|
|
@ -7,35 +7,107 @@
|
|||
|
||||
- name: test we are in the chroot
|
||||
shell: |
|
||||
df | grep {{AGI_NBD_MP}} && exit 1
|
||||
df | grep {{AGI_install_disk}} && exit 1
|
||||
check_mode: false
|
||||
|
||||
- name: install grub
|
||||
- name: install grub or syslinx
|
||||
portage:
|
||||
package: sys-boot/grub:2
|
||||
package: sys-boot/{{AGI_install_bootloader}}
|
||||
state: installed
|
||||
|
||||
- name: install grub to MBR
|
||||
command: grub-install {{ AGI_install_disk }}
|
||||
args:
|
||||
creates: /boot/grub
|
||||
- block:
|
||||
|
||||
- name: generate grub config
|
||||
shell: grub-mkconfig -o /boot/grub/grub.cfg
|
||||
args:
|
||||
creates: /boot/grub/grub.cfg
|
||||
- name: setup syslinux
|
||||
shell: |
|
||||
[ -d /boot/syslinux ] || mkdir /boot/syslinux
|
||||
[ -f /boot/syslinux/syslinux.cfg ] || \
|
||||
cat > /boot/syslinux/syslinux.cfg << EOF
|
||||
# -*-mode: sh; tab-width: 8; coding: utf-8-dos -*-
|
||||
default vesamenu.c32
|
||||
prompt 0
|
||||
# timeout 150
|
||||
|
||||
menu title nbd2
|
||||
menu background splash.png
|
||||
menu color title 1;36;44 #c0ffffff #00000000 std
|
||||
menu color sel 7;37;40 #e0000000 #20ECEAC7 all
|
||||
menu rows 15
|
||||
menu tabmsgrow 21
|
||||
menu timeoutrow 23
|
||||
menu helpmsgrow 23
|
||||
|
||||
# drm.debug=0xe
|
||||
# rd.shell rd.debug
|
||||
|
||||
label pentoo2019-Pen19-6.1.52-pentoo_2023_09_30_0x037f
|
||||
menu label pentoo2019_Pen19_6.1.52-pentoo_2023_09_30_0x037f
|
||||
menu default
|
||||
kernel vmlinuz-6.1.52-pentoo_2023_09_30
|
||||
INITRD initramfs-pentoo-x86_64-6.1.52-pentoo_2023_09_30.img
|
||||
# was vga=0x315
|
||||
APPEND root=LABEL=root {{''.join(AGI_install_syslinux_kernel_commands)}}
|
||||
|
||||
label MAIN hd0 MBR
|
||||
menu label MAIN hd0 0
|
||||
com32 chain.c32
|
||||
APPEND hd0
|
||||
|
||||
EOF
|
||||
[ ! -d /usr/share/syslinux/ ] || \
|
||||
for elt in {{' '.join(AGI_install_syslinux_c32)}}; do
|
||||
[ -f /boot/syslinux/$elt ] && continue
|
||||
cp -np /usr/share/syslinux/$elt /boot/syslinux
|
||||
done
|
||||
exit 0
|
||||
|
||||
- name: edit grub config
|
||||
shell: |
|
||||
[ -f /etc/default/grub.dst ] || cp -p /etc/default/grub /etc/default/grub.dst
|
||||
a=$(cat /proc/cmdline | sed -e 's/ BOOT_IMAGE=[^ ]*/ /' \
|
||||
-e 's/ initrd=[^ ]*/ /'
|
||||
-e 's/ resume=[^ ]*/ /'
|
||||
-e 's/ root=[^ ]*/ /')
|
||||
sed -e "s/^#*GRUB_CMDLINE_LINUX=\"\"/GRUB_CMDLINE_LINUX=\"$a\"/" \
|
||||
-i /etc/default/grub
|
||||
grub-script-check /etc/default/grub
|
||||
- name: do syslinux install manually
|
||||
shell: |
|
||||
df | grep {{AGI_install_disk}} && \
|
||||
echo ERROR: somethings wrong - {{AGI_install_disk}} isnt mounted
|
||||
&& exit 1
|
||||
# should unmount it?
|
||||
dd if={{AGI_install_disk}}p1 count=440 bs=1|strings|grep SYSLINUX
|
||||
[ $? -eq 0 ] && exit 0
|
||||
echo HALT: YOU MUST INSTALL THE MBR YOURSELF - do this
|
||||
echo dd if=/usr/share/syslinux/mbr.bin of={{AGI_install_disk}}p1 count=440 bs=1 conv=notrunc
|
||||
echo HALT: YOU MUST INSTALL SYSLINUX YOURSELF - do this
|
||||
syslinux -d syslinux --install {{AGI_install_disk}}p1
|
||||
exit 999
|
||||
register: syslinux_out
|
||||
failed_when: false
|
||||
|
||||
- name: install syslinux install manually
|
||||
fail:
|
||||
msg: "HALT: install syslinux install manually"
|
||||
when: syslinux_out.rc != 0
|
||||
|
||||
when: AGI_install_bootloader == 'syslinux'
|
||||
|
||||
- block:
|
||||
|
||||
- name: install grub to MBR
|
||||
command: grub-install {{ AGI_install_disk }}
|
||||
args:
|
||||
creates: /boot/grub
|
||||
|
||||
- name: generate grub config
|
||||
shell: grub-mkconfig -o /boot/grub/grub.cfg
|
||||
args:
|
||||
creates: /boot/grub/grub.cfg
|
||||
|
||||
- name: edit grub config
|
||||
shell: |
|
||||
[ -f /etc/default/grub.dst ] || cp -p /etc/default/grub /etc/default/grub.dst
|
||||
a=$(cat /proc/cmdline | sed -e 's/ BOOT_IMAGE=[^ ]*/ /' \
|
||||
-e 's/ initrd=[^ ]*/ /'
|
||||
-e 's/ resume=[^ ]*/ /'
|
||||
-e 's/ root=[^ ]*/ /')
|
||||
sed -e "s/^#*GRUB_CMDLINE_LINUX=\"\"/GRUB_CMDLINE_LINUX=\"$a\"/" \
|
||||
-i /etc/default/grub
|
||||
grub-script-check /etc/default/grub
|
||||
|
||||
when: AGI_install_bootloader == 'grub:2'
|
||||
|
||||
- name: fstab root
|
||||
lineinfile:
|
||||
dest: /etc/fstab
|
||||
|
@ -80,6 +152,27 @@
|
|||
line: 'consolefont="ter-v{{AGI_consolefont_font_size}}b"'
|
||||
regexp: '^consolefont=.*'
|
||||
|
||||
- name: /etc/default/grub
|
||||
lineinfile:
|
||||
dest: /etc/default/grub
|
||||
line: '{{item.from}}="{{item.to}}"'
|
||||
regexp: '^#*{{item.from}}=.*'
|
||||
with_items:
|
||||
# Append parameters to the linux kernel command line for non-recovery entries
|
||||
- from: GRUB_CMDLINE_LINUX_DEFAULT
|
||||
to: " rd.skipfsck=1 ipv6.disable=1 console=tty1 lang=en keymap=us intel_iommu=on vga=0x315 text"
|
||||
# The resolution used on graphical terminal.
|
||||
# Note that you can use only modes which your graphic card supports via VBE.
|
||||
# You can see them in real GRUB with the command `vbeinfo'.
|
||||
- from: GRUB_GFXMODE
|
||||
to: 640x480
|
||||
# Set to 'text' to force the Linux kernel to boot in normal text
|
||||
- from: GRUB_GFXPAYLOAD_LINUX
|
||||
to: text
|
||||
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to kernel
|
||||
- from: GRUB_DISABLE_LINUX_UUID
|
||||
to: true
|
||||
|
||||
- name: roles/ansible-gentoo_install/tasks/
|
||||
shell: |
|
||||
LINE="rd.skipfsck=1 ipv6.disable=1 console=tty1 lang=en keymap=us "
|
||||
|
@ -88,11 +181,13 @@
|
|||
df | grep /boot || mount /dev/vda1 /boot
|
||||
[ -d /boot/grub ] || exit 2
|
||||
[ -f /boot/grub/grub.cfg ] || exit 3
|
||||
sed -e "s@ ro *$@ $LINE ro@" -i /boot/grub/grub.cfg
|
||||
cd /
|
||||
# ln -s boot/vmlinuz* vmlinuz
|
||||
# boot/initramfs-pentoo-x86_64-6.1.52-pentoo_2023_09_30.img
|
||||
ln -s boot/initramfs* initrd.img
|
||||
|
||||
- name: consolefont
|
||||
shell: |
|
||||
rc-update add consolefont
|
||||
cat >> /etc/rc.local << EOF
|
||||
/etc/init.d consolefont stop
|
||||
/etc/init.d consolefont start
|
||||
|
@ -103,6 +198,7 @@
|
|||
|
||||
- name: rc-update add bootlogd boot
|
||||
shell: |
|
||||
rc-update add consolefont
|
||||
rc-update | grep -q 'bootlogd .* boot' || \
|
||||
rc-update add bootlogd boot
|
||||
exit 0
|
||||
|
|
|
@ -16,8 +16,16 @@
|
|||
[ -d "{{AGI_GENTOO_FROM_MP}}" ] || exit 5
|
||||
check_mode: false
|
||||
|
||||
- name: check for partitions
|
||||
shell: |
|
||||
grep '/dev/{{AGI_NBD_DEV}}p3' /proc/partitions && exit 0
|
||||
exit 1
|
||||
register: partitions_out
|
||||
failed_when: false
|
||||
|
||||
- block:
|
||||
|
||||
# old code
|
||||
|
||||
- name: create disklabel
|
||||
command: parted -s {{ AGI_install_disk }} mklabel {{ AGI_install_disklabel }}
|
||||
register: disklabel_out
|
||||
|
@ -44,7 +52,7 @@
|
|||
# able to install to the MBR
|
||||
- name: create boot partition
|
||||
shell: |
|
||||
parted -s {{ AGI_install_disk }} mkpart primary ext2 1M 200M
|
||||
parted -s {{ AGI_install_disk }} mkpart primary {{'ext2' if AGI_install_bootloader != 'syslinux' else 'fat32'}} 1M 200M
|
||||
args:
|
||||
creates: "{{ AGI_install_disk }}p1"
|
||||
|
||||
|
@ -65,7 +73,7 @@
|
|||
creates: "{{ AGI_install_disk }}p3"
|
||||
|
||||
- name: format boot partition
|
||||
filesystem: dev={{ AGI_install_disk }}p1 fstype=ext2 force=yes
|
||||
filesystem: dev={{ AGI_install_disk }}p1 fstype={{'ext2' if AGI_install_bootloader != 'syslinux' else 'vfat'}} force=yes
|
||||
check_mode: false
|
||||
when: not ansible_check_mode
|
||||
|
||||
|
@ -85,7 +93,15 @@
|
|||
e2label {{ AGI_install_disk }}p3 root
|
||||
e2label {{ AGI_install_disk }}p1 boot
|
||||
mkswap -L swap "{{ AGI_install_disk }}p2"
|
||||
sync
|
||||
when: AGI_install_bootloader != 'syslinux'
|
||||
|
||||
- name: label partitions syslinux
|
||||
shell: |
|
||||
partprobe
|
||||
fatlabel {{ AGI_install_disk }}p3 root
|
||||
e2label {{ AGI_install_disk }}p1 boot
|
||||
mkswap -L swap "{{ AGI_install_disk }}p2"
|
||||
when: AGI_install_bootloader == 'syslinux'
|
||||
|
||||
when: false
|
||||
|
||||
|
@ -100,15 +116,29 @@
|
|||
unit: sectors
|
||||
sector-size: 512
|
||||
|
||||
{{ AGI_install_disk }}p1 : start= 2048, size= 819200, type=83, bootable
|
||||
{{ AGI_install_disk }}p1 : start= 2048, size= 819200, type={{'83' if AGI_install_bootloader != 'syslinux' else 'c'}}, bootable
|
||||
{{ AGI_install_disk }}p2 : start= 821248, size= 4096000, type=82
|
||||
{{ AGI_install_disk }}p3 : start= 4917248, size= 37025792, type=83
|
||||
EOF
|
||||
partprobe
|
||||
|
||||
- name: format disk partitions grub:2
|
||||
shell: |
|
||||
mke2fs -L boot {{ AGI_install_disk }}p1
|
||||
mke2fs -L root {{ AGI_install_disk }}p3
|
||||
mkswap -L swap "{{ AGI_install_disk }}p2"
|
||||
sync
|
||||
|
||||
when: true
|
||||
|
||||
when: AGI_install_bootloader != 'syslinux'
|
||||
|
||||
- name: format disk partitions syslinux
|
||||
shell: |
|
||||
mkfs.vfat -F 32 -n boot {{ AGI_install_disk }}p1
|
||||
mke2fs -L root {{ AGI_install_disk }}p3
|
||||
mkswap -L swap "{{ AGI_install_disk }}p2"
|
||||
|
||||
when: AGI_install_bootloader == 'syslinux'
|
||||
|
||||
when:
|
||||
- partitions_out.rc != 0
|
||||
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@
|
|||
|
||||
check_mode: false
|
||||
when:
|
||||
- "ansible_connection in ['chroot'] or (ansible_connection in ['local'] or and chroot_out.rc|default(1) == 0)"
|
||||
- "ansible_connection in ['chroot'] or (ansible_connection in ['local'] and chroot_out.rc|default(1) == 0)"
|
||||
rescue:
|
||||
- debug:
|
||||
msg: "ERROR: error during chroot execution"
|
||||
|
|
|
@ -113,7 +113,8 @@
|
|||
action: status
|
||||
loglevel: "{{BOX_NBD_LOGLEVEL}}"
|
||||
threads: 1
|
||||
config: "{{AGI_GENTOOIMGR_CONFIGFILE}}" # base.json - bare filename in configs
|
||||
# base.json - bare filename in configs
|
||||
config: "{{AGI_GENTOOIMGR_CONFIGFILE}}"
|
||||
profile: "{{BOX_NBD_BASE_PROFILE}}"
|
||||
kernel_dir: "{{BOX_NBD_KERNEL_DIR}}"
|
||||
portage: "{{BOX_NBD_PORTAGE_FILE}}"
|
||||
|
|
|
@ -86,6 +86,13 @@
|
|||
user:
|
||||
name: gentoo
|
||||
password: "{{ gentoo_password_out.stdout }}"
|
||||
group: "{{ BOX_USER_GROUP }}"
|
||||
append: true
|
||||
groups: ['{{ BOX_ALSO_GROUP }}', 'wheel']
|
||||
create_home: yes
|
||||
shell: /bin/bash
|
||||
#? usermod: user vagrant is currently used by process 2190
|
||||
ignore_errors: true
|
||||
|
||||
- name: configure sudoers
|
||||
lineinfile:
|
||||
|
@ -96,6 +103,13 @@
|
|||
owner: root
|
||||
mode: '0640'
|
||||
|
||||
- name: make symlinks
|
||||
shell: |
|
||||
[ -e /var/db/repos/gentoo ] || \
|
||||
ln -s /usr/portage /var/db/repos/gentoo
|
||||
grep -q ^tmpfs /etc/fstab || \
|
||||
echo >> /etc/fstab 'tmpfs /dev/shm tmpfs defaults,noexec,size=5% 0 0'
|
||||
|
||||
- block:
|
||||
|
||||
- name: make symlinks
|
||||
|
|
|
@ -5,11 +5,6 @@
|
|||
verbosity: 1
|
||||
msg: "DEBUG: ansible-gentoo_install portage ansible_shell_executable={{ansible_shell_executable}}"
|
||||
|
||||
- name: reenable chroot wrapper
|
||||
set_fact:
|
||||
ansible_shell_executable: /var/tmp/chroot_wrapper.sh
|
||||
ansible_python_interpreter: "/usr/bin/python3"
|
||||
|
||||
- name: test we are in the chroot
|
||||
shell: |
|
||||
df | grep /mnt/gentoo && exit 1
|
||||
|
|
|
@ -16,6 +16,7 @@ AGI_install_portage_makeconf_default:
|
|||
MAKEOPTS: "-j{{ ansible_processor_vcpus | default(1) }}"
|
||||
USE: "-X verify-sig"
|
||||
CFLAGS: "-march=native -O2 -pipe"
|
||||
|
||||
AGI_install_portage_conf_files:
|
||||
'package.accept_keywords': |
|
||||
=sys-kernel/genkernel-4.3* ~amd64
|
||||
|
@ -41,6 +42,8 @@ AGI_bootstrap_dirs:
|
|||
- etc/portage/repos.conf
|
||||
- etc/portage/savedconfig
|
||||
- etc/portage/sets
|
||||
- usr/local/tmp/bootstrap/logs
|
||||
- usr/local/tmp/bootstrap/distfiles
|
||||
|
||||
AGI_bootstrap_files:
|
||||
- usr/local/etc/local.d/local.bash
|
||||
|
@ -59,8 +62,9 @@ AGI_bootstrap_pkgs:
|
|||
- app-editors/mg
|
||||
- qemu-guest-agent
|
||||
- app-admin/logrotate
|
||||
- "{{ AGI_install_cron_daemon }}"
|
||||
- "{{AGI_install_syslog_daemon}}"
|
||||
- "sys-process/{{ AGI_install_cron_daemon }}"
|
||||
- "{{ AGI_install_syslog_daemon}}"
|
||||
- "sys-boot/{{ AGI_install_bootloader }}"
|
||||
- media-fonts/terminus-font
|
||||
- sys-apps/gptfdisk
|
||||
- net-analyzer/openbsd-netcat
|
||||
|
@ -68,7 +72,7 @@ AGI_bootstrap_pkgs:
|
|||
- dev-util/strace
|
||||
- sys-libs/gpm
|
||||
- app-portage/eix
|
||||
- www-client/lynx
|
||||
- net-misc/curl
|
||||
- linux-firmware
|
||||
|
||||
AGI_cloud_pkgs:
|
||||
|
@ -83,12 +87,11 @@ AGI_cloud_pkgs:
|
|||
- tmux
|
||||
- app-misc/screen
|
||||
- dev-vcs/git
|
||||
- net-misc/curl
|
||||
- usbutils
|
||||
- pciutils
|
||||
- net-misc/ntp
|
||||
- net-fs/nfs-utils
|
||||
# get these from config.json
|
||||
- app-emulation/cloud-init
|
||||
- sys-block/open-iscsi
|
||||
# - app-emulation/cloud-init
|
||||
# - sys-block/open-iscsi
|
||||
|
||||
|
|
|
@ -23,11 +23,22 @@ yamllint -c $BASE_SRC_ANSIBLE/.yamllint.rc $BASE_SRC_ANSIBLE/hosts.yml|| {
|
|||
|
||||
# put these values in $BASE_SRC_ANSIBLE/hosts.yml
|
||||
[ -n "$BOX_NBD_OVERLAY_NAME" ] || \
|
||||
BOX_NBD_OVERLAY_NAME=$( /usr/local/bin/ansible_get_inventory.bash BOX_NBD_OVERLAY_NAME $BOX)
|
||||
BOX_NBD_OVERLAY_NAME=$( /usr/local/bin/ansible_get_inventory.bash BOX_NBD_OVERLAY_NAME $BOX)
|
||||
|
||||
if virsh list | grep "$BOX_NBD_OVERLAY_NAME" ; then
|
||||
ERROR "$BOX_NBD_OVERLAY_NAME" is running - please virsh destroy "$BOX_NBD_OVERLAY_NAME"
|
||||
exit 2
|
||||
fi
|
||||
if virsh list --all | grep "$BOX_NBD_OVERLAY_NAME" ; then
|
||||
ERROR "$BOX_NBD_OVERLAY_NAME" is running - please virsh undefine "$BOX_NBD_OVERLAY_NAME"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
|
||||
[ -n "$BOX_NBD_BASE_PUBKEY" ] || \
|
||||
BOX_NBD_BASE_PUBKEY=$( /usr/local/bin/ansible_get_inventory.bash BOX_NBD_BASE_PUBKEY $BOX)
|
||||
[ -n "$BOX_NBD_BASE_QCOW" ] || \
|
||||
BOX_NBD_BASE_QCOW=$( /usr/local/bin/ansible_get_inventory.bash BOX_NBD_BASE_QCOW $BOX)
|
||||
[ -n "$BOX_NBD_OVERLAY_BASE" ] || \
|
||||
BOX_NBD_OVERLAY_BASE=$( /usr/local/bin/ansible_get_inventory.bash BOX_NBD_OVERLAY_BASE $BOX)
|
||||
[ -n "$BOX_NBD_OVERLAY_GB" ] || \
|
||||
BOX_NBD_OVERLAY_GB=$( /usr/local/bin/ansible_get_inventory.bash BOX_NBD_OVERLAY_GB $BOX)
|
||||
[ -n "$BOX_NBD_OVERLAY_CPUS" ] || \
|
||||
|
@ -43,8 +54,8 @@ yamllint -c $BASE_SRC_ANSIBLE/.yamllint.rc $BASE_SRC_ANSIBLE/hosts.yml|| {
|
|||
[ -n "$BOX_NBD_OVERLAY_PASS" ] || \
|
||||
BOX_NBD_OVERLAY_PASS=$( /usr/local/bin/ansible_get_inventory.bash BOX_NBD_OVERLAY_PASS $BOX)
|
||||
|
||||
[ ! -f "$BOX_NBD_BASE_QCOW" ] && \
|
||||
ERROR BOX_NBD_BASE_QCOW=$BOX_NBD_BASE_QCOW must exist && exit 3
|
||||
[ ! -f "$BOX_NBD_OVERLAY_BASE" ] && \
|
||||
ERROR BOX_NBD_OVERLAY_BASE=$BOX_NBD_OVERLAY_BASE must exist && exit 3
|
||||
[ ! -d "$BOX_NBD_OVERLAY_DIR" ] && \
|
||||
ERROR BOX_NBD_OVERLAY_DIR=$BOX_NBD_OVERLAY_DIR must exist && exit 5
|
||||
|
||||
|
@ -58,7 +69,7 @@ export BOX_NBD_OVERLAY_DIR
|
|||
DBUG bash toxcore_create-vm.bash \
|
||||
-n $BOX_NBD_OVERLAY_NAME \
|
||||
-k $BOX_NBD_BASE_PUBKEY \
|
||||
-i $BOX_NBD_BASE_QCOW \
|
||||
-i $BOX_NBD_OVERLAY_BASE \
|
||||
-s $BOX_NBD_OVERLAY_GB \
|
||||
-b $BOX_NBD_OVERLAY_BR \
|
||||
-c $BOX_NBD_OVERLAY_CPUS \
|
||||
|
@ -69,7 +80,7 @@ DBUG bash toxcore_create-vm.bash \
|
|||
bash toxcore_create-vm.bash \
|
||||
-n $BOX_NBD_OVERLAY_NAME \
|
||||
-k $BOX_NBD_BASE_PUBKEY \
|
||||
-i $BOX_NBD_BASE_QCOW \
|
||||
-i $BOX_NBD_OVERLAY_BASE \
|
||||
-s $BOX_NBD_OVERLAY_GB \
|
||||
-b $BOX_NBD_OVERLAY_BR \
|
||||
-c $BOX_NBD_OVERLAY_CPUS \
|
||||
|
@ -83,8 +94,8 @@ retval=$?
|
|||
INFO $BOX_NBD_OVERLAY_DIR/images/$BOX_NBD_OVERLAY_NAME.img || {
|
||||
ERROR NO $BOX_NBD_OVERLAY_DIR/images/$BOX_NBD_OVERLAY_NAME.img ; exit 2$retval ; }
|
||||
|
||||
INFO virsh define $BOX_NBD_OVERLAY_NAME
|
||||
virsh define $BOX_NBD_OVERLAY_DIR/$BOX_NBD_OVERLAY_NAME.img
|
||||
INFO virsh define $BOX_NBD_OVERLAY_DIR/xml/$BOX_NBD_OVERLAY_NAME.xml
|
||||
virsh define $BOX_NBD_OVERLAY_DIR/xml/$BOX_NBD_OVERLAY_NAME.xml
|
||||
sleep 5
|
||||
INFO virsh net-dhcp-leases default
|
||||
sudo virsh net-dhcp-leases default
|
||||
|
|
|
@ -13,6 +13,11 @@
|
|||
prog=`basename $0 .bash`
|
||||
PREFIX=/usr/local
|
||||
ROLE=toxcore
|
||||
if which genisoimage >/dev/null 2>/dev/null ; then
|
||||
have_genisoimage=true
|
||||
else
|
||||
have_genisoimage=false
|
||||
fi
|
||||
|
||||
# create-vm - Quickly create guest VMs using cloud image files and cloud-init.
|
||||
|
||||
|
@ -136,8 +141,11 @@ mkdir -p "$BOX_NBD_OVERLAY_DIR"/{images,xml,init,base} || exit 2
|
|||
|
||||
echo "Creating a qcow2 image file ${BOX_NBD_OVERLAY_DIR}/images/${HOSTNAME}.img that uses the cloud image file ${IMG_FQN} as its base"
|
||||
|
||||
INFO qemu-img create -b "${IMG_FQN}" -f qcow2 -F qcow2 "${BOX_NBD_OVERLAY_DIR}/images/${HOSTNAME}.img" "${STORAGE}G"
|
||||
qemu-img create -b "${IMG_FQN}" -f qcow2 -F qcow2 "${BOX_NBD_OVERLAY_DIR}/images/${HOSTNAME}.img" "${STORAGE}G" || exit 3
|
||||
INFO qemu-img create -b "${IMG_FQN}" -f qcow2 -F qcow2 \
|
||||
"${BOX_NBD_OVERLAY_DIR}/images/${HOSTNAME}.img" "${STORAGE}G"
|
||||
qemu-img create -b "${IMG_FQN}" -f qcow2 -F qcow2 \
|
||||
"${BOX_NBD_OVERLAY_DIR}/images/${HOSTNAME}.img" "${STORAGE}G" || \
|
||||
exit 3
|
||||
|
||||
echo "Creating meta-data file $BOX_NBD_OVERLAY_DIR/init/meta-data"
|
||||
cat > "$BOX_NBD_OVERLAY_DIR/init/meta-data" << EOF
|
||||
|
@ -246,6 +254,7 @@ done
|
|||
#grep gentoo /etc/shadow
|
||||
EOF
|
||||
|
||||
if $have_genisoimage ; then
|
||||
echo "Generating the cidata ISO file $BOX_NBD_OVERLAY_DIR/images/${HOSTNAME}-cidata.iso"
|
||||
(
|
||||
cd "$BOX_NBD_OVERLAY_DIR/init/"
|
||||
|
@ -257,6 +266,7 @@ echo "Generating the cidata ISO file $BOX_NBD_OVERLAY_DIR/images/${HOSTNAME}-cid
|
|||
-input-charset utf-8 \
|
||||
user-data meta-data
|
||||
) || exit 5
|
||||
fi
|
||||
|
||||
MACCMD=
|
||||
if [[ -n $MAC ]]; then
|
||||
|
@ -264,7 +274,9 @@ if [[ -n $MAC ]]; then
|
|||
fi
|
||||
|
||||
[ -f ${BOX_NBD_OVERLAY_DIR}/images/${HOSTNAME}.img ] || exit 5
|
||||
[ -f $BOX_NBD_OVERLAY_DIR/images/${HOSTNAME}-cidata.img ] || exit 6
|
||||
if $have_genisoimage ; then
|
||||
[ -f $BOX_NBD_OVERLAY_DIR/images/${HOSTNAME}-cidata.img ] || exit 6
|
||||
fi
|
||||
|
||||
# libvirt.libvirtError: /usr/lib/qemu/qemu-bridge-helper --use-vnet --br=-c --fd=31: failed to communicate with bridge helper: stderr=failed to parse default acl file `/etc/qemu/bridge.conf'
|
||||
if [ ! -f "/etc/qemu/bridge.conf" ] ; then
|
||||
|
@ -288,38 +300,14 @@ sudo ifconfig -a | grep $BRIDGE && \
|
|||
NETWORK="--network bridge=${BRIDGE},model=virtio" || \
|
||||
WARN bridge $BRIDGE not running. not adding a network
|
||||
NETWORK="--network network=default,model=virtio"
|
||||
NETWORK="--interface type=network,source.network=default,model.type=virtio"
|
||||
|
||||
INFO virt-install \
|
||||
--name="${HOSTNAME}" \
|
||||
--osinfo "$OSINFO" \
|
||||
--import \
|
||||
--name="${HOSTNAME}" \
|
||||
--disk "path=${BOX_NBD_OVERLAY_DIR}/images/${HOSTNAME}.img,format=qcow2" \
|
||||
--disk "path=$BOX_NBD_OVERLAY_DIR/images/${HOSTNAME}-cidata.img,device=cdrom" \
|
||||
--ram="${RAM}" \
|
||||
--vcpus="${VCPUS}" \
|
||||
--autostart \
|
||||
--hvm \
|
||||
--arch x86_64 \
|
||||
--accelerate \
|
||||
--check-cpu \
|
||||
--force \
|
||||
--watchdog=default \
|
||||
--graphics spice,listen=socket \
|
||||
--channel spicevmc,target.type=virtio,target.name=com.redhat.spice.0 \
|
||||
--channel type=unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \
|
||||
--network "bridge=${BRIDGE},model=virtio" \
|
||||
--rng /dev/urandom \
|
||||
--os-variant detect=on,name=$OSINFO \
|
||||
--noautoconsole
|
||||
|
||||
# squelch warnings
|
||||
python3.sh `which virt-install` \
|
||||
declare -a LARGS
|
||||
LARGS=(
|
||||
--name="${HOSTNAME}" \
|
||||
--osinfo "$OSINFO" \
|
||||
--import \
|
||||
--disk "path=${BOX_NBD_OVERLAY_DIR}/images/${HOSTNAME}.img,format=qcow2" \
|
||||
--disk "path=$BOX_NBD_OVERLAY_DIR/images/${HOSTNAME}-cidata.img,device=cdrom" \
|
||||
--ram="${RAM}" \
|
||||
--vcpus="${VCPUS}" \
|
||||
--autostart \
|
||||
|
@ -332,12 +320,24 @@ python3.sh `which virt-install` \
|
|||
--graphics spice,listen=socket \
|
||||
--filesystem /,/mnt/linuxPen19 \
|
||||
--channel spicevmc,target.type=virtio,target.name=com.redhat.spice.0 \
|
||||
--channel unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \
|
||||
$NETWORK \
|
||||
--channel type=unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \
|
||||
--rng /dev/urandom \
|
||||
--os-variant detect=on,name=$OSINFO \
|
||||
--noautoconsole \
|
||||
|| exit 7
|
||||
)
|
||||
if [ -n "$NETWORK" ] ; then
|
||||
LARGS+=(
|
||||
$NETWORK \
|
||||
)
|
||||
if $have_genisoimage ; then
|
||||
LARGS+=(
|
||||
--disk "path=$BOX_NBD_OVERLAY_DIR/images/${HOSTNAME}-cidata.img,device=cdrom" \
|
||||
)
|
||||
fi
|
||||
|
||||
INFO virt-install "${LARGS[@]}"
|
||||
# squelch warnings
|
||||
python3.sh `which virt-install` "${LARGS[@]}" || exit 7
|
||||
# --debug
|
||||
#? --shmem name=shmem_server,type="memfd",mode="shared"
|
||||
# --shmem name=shmem0 ivshmem device is not supported with this QEMU binary
|
||||
|
|
11
roles/toxcore/overlay/Linux/usr/local/bin/toxcore_libvirt_test_ga.bash
Executable file
11
roles/toxcore/overlay/Linux/usr/local/bin/toxcore_libvirt_test_ga.bash
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
ROLE=toxcore
|
||||
MODE=host
|
||||
TOX_PLAY=/o/var/local/src/play_tox
|
||||
|
||||
sudo virsh list | grep running | while read a elt b ; do
|
||||
echo INFO testing $elt
|
||||
ansible -i $TOX_PLAY/hosts.yml -c libvirt_qemu -m setup $elt
|
||||
done
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue