141 lines
5.2 KiB
YAML
141 lines
5.2 KiB
YAML
# -*- mode: yaml; indent-tabs-mode: nil; tab-width: 2; coding: utf-8-unix -*-
|
|
---
|
|
- name: "DEBUG: ansible-gentoo_install nbd_disk ansible_connection"
|
|
debug:
|
|
verbosity: 0
|
|
msg: "DEBUG: ansible-gentoo_install nbd_disk={{ nbd_disk }} AGI_NBD_DISK={{AGI_NBD_DISK}} ansible_connection={{ ansible_connection }}"
|
|
check_mode: false
|
|
|
|
- set_fact:
|
|
AGI_target: Gentoo2
|
|
|
|
- name: look for nbd partitions
|
|
shell: |
|
|
grep nbd /proc/partitions | head -1|sed -e 's/.* //'
|
|
register: nbd_out
|
|
failed_when: false
|
|
check_mode: false
|
|
|
|
- name: "include base by-platform vars"
|
|
include_vars: "{{item}}.yml"
|
|
with_items:
|
|
- "Linux"
|
|
- "{{ ansible_distribution }}{{ ansible_distribution_major_version }}"
|
|
- "target_{{AGI_target}}"
|
|
tags: always
|
|
|
|
- name: find module gentooimgr
|
|
shell: |
|
|
echo nbd_disk={{ nbd_disk }} ansible_connection={{ ansible_connection }}
|
|
echo ansible_distribution={{ansible_distribution}} BOX_GENTOO_FROM_MP={{BOX_GENTOO_FROM_MP}}
|
|
[ -d '{{PLAY_ANSIBLE_SRC}}/src/ansible_gentooimgr' ] || exit 1
|
|
[ -f '{{PLAY_ANSIBLE_SRC}}/src/ansible_gentooimgr/__init__.py' ] || exit 2
|
|
[ -d '{{PLAY_ANSIBLE_SRC}}/src/ansible_gentooimgr/gentooimgr' ] || exit 3
|
|
[ -f '{{PLAY_ANSIBLE_SRC}}/src/ansible_gentooimgr/gentooimgr/__init__.py' ] || exit 4
|
|
{{ansible_python_interpreter}} \
|
|
-c "import os, sys; sys.path.append('{{PLAY_ANSIBLE_SRC}}/src/ansible_gentooimgr'); import gentooimgr; print(os.path.dirname(gentooimgr.__file__))" || exit 5
|
|
register: gentooimgr_out
|
|
check_mode: false
|
|
ignore_errors: true
|
|
|
|
- block:
|
|
|
|
- name: set AGI_gentooimgr_configs
|
|
set_fact:
|
|
AGI_gentooimgr_configs: "{{gentooimgr_out.stdout_lines[-1]}}/configs"
|
|
|
|
- name: check for a gentooimgr base config
|
|
shell: |
|
|
if [ -z "{{BOX_NBD_DEV}}" ] ; then
|
|
echo ERROR: empty "BOX_NBD_DEV" - define it in hosts.yml
|
|
exit 1
|
|
fi
|
|
if ! grep -q "{{BOX_NBD_DEV}}" /proc/partitions ; then
|
|
echo ERROR: not mounted BOX_NBD_DEV="{{BOX_NBD_DEV}}" - use qemu-nbd
|
|
echo qemu-img create -f qcow2 /a/tmp/GentooImgr/gentoo.qcow2 20G
|
|
echo qemu-nbd -n -f qcow2 -c /dev/nbd1 /a/tmp/GentooImgr/gentoo.qcow
|
|
exit 2
|
|
fi
|
|
exit 0
|
|
|
|
- name: make a gentooimgr base config
|
|
shell: |
|
|
base=base.json
|
|
tofile="{{AGI_GENTOOIMGR_CONFIGFILE}}"
|
|
todir=`dirname "$tofile"`
|
|
[ -d $todir ] || mkdir $todir
|
|
if [ ! -f "$tofile" ] ; then
|
|
if [ -f "{{AGI_gentooimgr_configs}}/$base" ] ; then
|
|
cp -p "{{AGI_gentooimgr_configs}}/$base" "$tofile" || exit 2
|
|
else
|
|
echo WARN: FNF "{{AGI_gentooimgr_configs}}/$base"
|
|
# use base.json
|
|
fi
|
|
fi
|
|
# should operate on json with jq
|
|
if [ -f "$tofile" ] ; then
|
|
# "imgsize": "20G",
|
|
sed -i -e 's@"imgsize": ".*"@"imgsize": "{{BOX_NBD_OVERLAY_GB}}"@' $tofile
|
|
# "memory": 4096,
|
|
sed -i -e 's@"memory": ".*"@"imgsize": "{{BOX_NBD_OVERLAY_RAM}}"@' $tofile
|
|
# "mountpoint": "/mnt/gentoo",
|
|
sed -i -e 's@"mountpoint": ".*"@"mountpoint": "{{BOX_NBD_MP}}"@' $tofile
|
|
# "imagename": null,
|
|
sed -i -e 's@"imagename": ".*"@"imagename": "{{BOX_NBD_OVERLAY_NAME}}"@' $tofile
|
|
# "initsys": "openrc",
|
|
sed -i -e 's@"initsys": ".*"@"initsys: "{{BOX_NBD_BASE_PROFILE}}"@' $tofile
|
|
# "iso": null,
|
|
# "portage": null,
|
|
sed -i -e 's@""portage": ".*"@""portage: "{{BOX_NBD_PORTAGE_FILE}}"@' $tofile
|
|
# "stage3": null,
|
|
sed -i -e 's@""stage3": ".*"@""stage3: "{{BOX_NBD_STAGE3_FILE}}"@' $tofile
|
|
# "partition": 1
|
|
sed -i -e 's@"partition": ".*"@"partition": 3@' $tofile
|
|
# but this is crucial
|
|
# "disk": "/dev/sda",
|
|
sed -i -e 's@"disk": ".*"@"disk": "{{BOX_NBD_DEV}}"@' $tofile
|
|
grep {{BOX_NBD_DEV}} $tofile || exit 4
|
|
fi
|
|
|
|
- name: check for library/ansible_gentooimgr.py
|
|
shell: |
|
|
# find it
|
|
[ -f '{{PLAY_ANSIBLE_SRC}}/library/ansible_gentooimgr.py' ] || exit 1
|
|
# run it
|
|
echo '{}' | \
|
|
{{ansible_python_interpreter}} \
|
|
'{{PLAY_ANSIBLE_SRC}}/library/ansible_gentooimgr.py' 2>&1| \
|
|
grep "Unable to figure out what parameters were passed" && exit 0
|
|
echo WARN: ansible_gentooimgr.py BROKEN
|
|
|
|
- name: ansible_gentooimgr NBD STATUS
|
|
ansible_gentooimgr:
|
|
action: status
|
|
loglevel: "{{BOX_NBD_LOGLEVEL}}"
|
|
threads: 1
|
|
# 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}}"
|
|
stage3: "{{BOX_NBD_STAGE3_FILE }}"
|
|
temporary_dir: "{{BOX_NBD_BASE_DIR}}"
|
|
download_dir: "{{AGI_NBD_FILES}}"
|
|
register: ansible_gentooimgr_out
|
|
ignore_errors: true
|
|
check_mode: false
|
|
|
|
- name: "DEBUG: ansible-gentoo_install nbd_disk ansible_connection"
|
|
debug:
|
|
verbosity: 0
|
|
var: ansible_gentooimgr_out
|
|
check_mode: false
|
|
|
|
- name: include_tasks local.yml
|
|
include_tasks: local.yml
|
|
|
|
when:
|
|
- ansible_connection in ['chroot', 'local']
|
|
- ansible_distribution == 'Gentoo' or BOX_GENTOO_FROM_MP not in ['/', '']
|
|
# - nbd_disk|default('') == AGI_NBD_DISK
|