finish os stage 3 download extract, configure mount and chroot

This commit is contained in:
Antoine 2020-03-11 00:43:33 +01:00
parent 3ee290940d
commit 933cd014fa
13 changed files with 250 additions and 9 deletions

View File

@ -18,6 +18,13 @@ RUN addgroup -g 1000 "${GROUP}" && \
echo "$USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$USER && \
chmod 0440 /etc/sudoers.d/$USER
# setup mitogen to enhance ansible speed
ENV MITOGEN_VERSION="0.2.9"
RUN wget https://networkgenomics.com/try/mitogen-${MITOGEN_VERSION}.tar.gz && \
tar xvf mitogen-${MITOGEN_VERSION}.tar.gz && \
mv mitogen-${MITOGEN_VERSION} /mitogen && \
rm mitogen-${MITOGEN_VERSION}.tar.gz
USER "${USER}"
ENV PACKER_LOG=1

View File

@ -1,2 +1,5 @@
[defaults]
host_key_checking = false
host_key_checking = false
strategy_plugins = /mitogen/ansible_mitogen/plugins/strategy
strategy = mitogen_linear

View File

@ -1,4 +1,4 @@
[default]
100.64.0.24 ansible_ssh_pass=toor ansible_ssh_port=5556 ansible_user=root
#192.168.1.24 ansible_ssh_pass=toor ansible_ssh_port=5556 ansible_user=root
100.64.0.24 ansible_ssh_pass=toor ansible_ssh_port=5556 ansible_user=root debug=true
;192.168.1.24 ansible_ssh_pass=toor ansible_ssh_port=5556 ansible_user=root debug=true
;192.168.1.22 ansible_ssh_pass=toor ansible_ssh_port=5556 ansible_user=root debug=true

View File

@ -24,7 +24,6 @@ devices_system:
part_end: 100%
fstype: "lvm"
vg_name: vg_system
lvs:
- name: "swap"
size: "1G"
@ -34,8 +33,13 @@ lvs:
size: "22G"
type: "ext4"
descr: "Root partition"
mount_dir: "{{ mount_base_dir }}"
- name: "home"
size: "7G"
type: "ext4"
descr: "home partition"
mount_dir: "{{ mount_base_dir }}/home"
# default swapiness value
swapiness: "60"
gentoo_version: "lastest"

View File

@ -0,0 +1,69 @@
---
# configure and setup os
- name:
set_fact:
make_conf:
- path: "GENTOO_MIRRORS=\"{{ mirror_source }}\""
regexp: "^GENTOO_MIRRORS=\".*\""
- path: "COMMON_FLAGS=\"{{ gcc_common_args }}\""
regexp: "^COMMON_FLAGS="
- path: "MAKEOPTS=\"{{ make_opts }}\""
regexp: "^MAKEOPTS="
tags:
- configure
- name: "Configure Gentoo_mirrors"
lineinfile:
path: "{{ mount_base_dir }}/etc/portage/make.conf"
regexp: "{{ item.regexp }}"
line: "{{ item.path }}"
state: present
loop: "{{ make_conf }}"
tags:
- configure
- name: "Create portage repo conf dir"
file:
path: "{{ portage_conf_dir_path }}"
state: directory
tags:
- configure
- name: "Copy portage conf file"
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
remote_src: yes
loop:
- src: "{{ mount_base_dir }}/usr/share/portage/config/repos.conf"
dest: "{{ portage_conf_dir_path }}/gentoo.conf"
- src: "/etc/resolv.conf"
dest: "{{ mount_base_dir }}/etc/resolv.conf"
tags:
- configure
#- name: create portage directory
# command: chroot /mnt/gentoo bash -c 'source /etc/profile; mkdir /usr/portage' creates=/mnt/gentoo/usr/portage
# tags:
# - chroot
#
#- name: emerge-webrsync
# command: chroot /mnt/gentoo bash -c 'source /etc/profile; /usr/bin/emerge-webrsync' creates=/mnt/gentoo/usr/portage/xfce-extra
# tags:
# - chroot
#
#- name: set zoneinfo
# command: chroot /mnt/gentoo bash -c 'cp /usr/share/zoneinfo/{{ timezone }} /etc/localtime; echo "{{ timezone }}" > /etc/timezone'
# tags:
# - chroot
#
#- name: Configure Hosts File
# template: src=hosts dest=/mnt/gentoo/etc/hosts
#
#- name: Set Hostname
# template: src=hostname dest=/mnt/gentoo/etc/conf.d/hostname
#
#
#- name: Configure Fstab
# copy: src=fstab dest=/mnt/gentoo/etc/fstab

View File

@ -2,6 +2,9 @@
# setup gentoo
- import_tasks: partition.yml
- import_tasks: mount.yml
- import_tasks: os.yml
- import_tasks: configure.yml
#- import_tasks: users.yml
#- import_tasks: security.yml

View File

@ -0,0 +1,43 @@
---
- name: "Enable swap partition"
command: "swapon /dev/{{ vg_name }}/{{ item.name }}"
loop: "{{ lvs }}"
when: "'swap' in item.type"
tags:
- mount
- name: "Set swappiness value"
sysctl:
name: vm.swappiness
value: "{{ swapiness }}"
state: present
tags:
- mount
- name: "Create mountpoints base dir"
file:
path: "{{ mount_base_dir }}"
state: directory
tags:
- mount
- name: "Create mountpoints"
file:
path: "{{ item.mount_dir }}"
state: directory
loop: "{{ lvs }}"
when: "item.mount_dir is defined"
tags:
- mount
- name: "Mount partition"
mount:
path: "{{ item.mount_dir }}"
src: "/dev/{{ vg_name }}/{{ item.name }}"
fstype: "{{ item.type }}"
state: mounted
loop: "{{ lvs }}"
when: "item.mount_dir is defined"
tags:
- mount

View File

@ -0,0 +1,70 @@
---
# retrieve gentoo os and copy it
- name: "Set time"
command: "ntpd -q -g"
tags:
- os
- name: "Retrieve last version"
shell: >
curl {{ latest_url }} 2>&1 |
awk -F/ '/\/stage3-amd64-[0-9TZ]+.tar.xz/{print $1}'
args:
warn: no
when: "gentoo_version is not defined or gentoo_version == 'lastest'"
register: "stage_path"
tags:
- os
- set_fact:
url_dl: "{{ mirror_stage }}/releases/amd64/autobuilds/{{ stage_path.stdout | default(gentoo_version) }}/stage3-amd64-{{ stage_path.stdout | default(gentoo_version) }}.tar.xz"
tags:
- os
- name: "Download stage3 archive version {{ stage_path.stdout }}"
get_url:
url: "{{ url_dl }}"
dest: "/root/stage3-amd64.tar.xz"
register: "archive_downloaded_result"
tags:
- os
- name: "Extract stage3 archive"
unarchive:
src: "{{ archive_downloaded_result.dest }}"
dest: "{{ mount_base_dir }}"
remote_src: yes
creates: "{{ mount_base_dir }}/bin"
tags:
- os
- name: "Mount /proc"
mount:
src: /proc
path: "{{ mount_base_dir }}/proc"
state: mounted
fstype: proc
tags:
- os
- name: "Mount /dev bind volume"
mount:
src: "/{{ item.path }}"
path: "{{ mount_base_dir }}/{{ item.path }}"
opts: rbind,make-rslave
state: mounted
fstype: none
loop:
- path: dev
- path: sys
tags:
- os
- name: "Cleanup Stage3 Archive"
file:
path: "{{ archive_downloaded_result.dest }}"
state: absent
when: "debug is not defined or debug == false"
tags:
- os

View File

@ -38,6 +38,10 @@
tags:
- storage
- import_tasks: "umount.yml"
tags:
- storage
- name: "Create list of lvs"
lvol:
vg: "{{ vg_name }}"
@ -52,7 +56,6 @@
fstype: "{{ item.type }}"
dev: "/dev/{{ vg_name }}/{{ item.name }}"
force: yes
resizefs: yes
loop: "{{ lvs }}"
tags:
- storage

View File

@ -0,0 +1,16 @@
---
# umount and disabe swap
- name: "disable swap partition"
command: "swapoff -a"
tags:
- umount
- name: "Umount partition"
mount:
path: "{{ item.mount_dir }}"
state: "unmounted"
loop: "{{ lvs | reverse | list }}"
when: "item.mount_dir is defined"
tags:
- umount

View File

@ -0,0 +1,22 @@
---
# non overridable variable
vg_name: vg_system
mount_base_dir: /mnt/gentoo
mirror_stage: "https://gentoo.osuosl.org"
latest_url: "{{ mirror_stage }}/releases/amd64/autobuilds/latest-stage3.txt"
# compilation arguments
mirror_source: >
http://gentoo.mirrors.ovh.net/gentoo-distfiles/
ftp://ftp.free.fr/mirrors/ftp.gentoo.org/
http://ftp.free.fr/mirrors/ftp.gentoo.org/
https://mirrors.soeasyto.com/distfiles.gentoo.org/
http://mirrors.soeasyto.com/distfiles.gentoo.org/
ftp://mirrors.soeasyto.com/distfiles.gentoo.org/
http://gentoo.modulix.net/gentoo/
gcc_common_args: "-march=native -O2 -pipe"
make_opts: "-j2"
# portage variable
portage_conf_dir_path: "{{ mount_base_dir }}/etc/portage/repos.conf/"

View File

@ -1,7 +1,8 @@
#!/bin/bash
PLAYBOOK="${1:-playbook.yml}"
DEBUG="-vvv"
#DEBUG="-vvv"
TAGS="--tags configure"
# run playbook on aready running qemu vm
ansible-playbook -i inventory_test.ini "$PLAYBOOK" --extra-vars "ssh_pub=$(cat ../id_rsa_qemu) generated_user=antoine generated_group=antoine"
ansible-playbook $DEBUG -i inventory_test.ini $TAGS --extra-vars "ssh_pub=$(cat ../id_rsa_qemu) generated_user=antoine generated_group=antoine" $PLAYBOOK

View File

@ -83,7 +83,7 @@
{
"type": "ansible",
"playbook_file": "/packer/ansible/playbook.yml",
"extra_arguments": [ "--extra-vars", "ssh_pub={{user `ssh_pub_key`}} generated_user={{user `generated_user`}} generated_group={{user `generated_group`}}" ],
"extra_arguments": [ "--extra-vars", "ssh_pub={{user `ssh_pub_key`}} generated_user={{user `generated_user`}} generated_group={{user `generated_group`}} gentoo_version={{user `version`}}" ],
"groups": "default",
"user": "root",
"ansible_env_vars": [ "ANSIBLE_CONFIG=/packer/ansible/ansible.cfg" ]