From 3ee290940de15599334b5534c52f2fab2d0b789e Mon Sep 17 00:00:00 2001 From: Antoine Date: Tue, 3 Mar 2020 23:20:24 +0100 Subject: [PATCH] finish partitionning --- .gitignore | 3 ++ README.md | 4 ++ packer/Dockerfile | 2 +- packer/assets/ansible/ansible.cfg | 2 + packer/assets/ansible/inventory_test.ini | 3 +- packer/assets/ansible/playbook-test.yml | 32 +++++++++++ packer/assets/ansible/playbook.yml | 1 - .../ansible/roles/setup/defaults/main.yml | 32 +++++++---- .../ansible/roles/setup/tasks/partition.yml | 54 +++++++++++++------ packer/assets/ansible/run-ansible.sh | 6 ++- packer/assets/gentoo.json | 9 ++-- ...amd64-minimal-20200205T214502Z.iso.DIGESTS | 2 + packer/assets/run-packer.sh | 7 ++- 13 files changed, 117 insertions(+), 40 deletions(-) create mode 100644 packer/assets/ansible/ansible.cfg create mode 100644 packer/assets/ansible/playbook-test.yml create mode 100644 packer/assets/install-amd64-minimal-20200205T214502Z.iso.DIGESTS diff --git a/.gitignore b/.gitignore index 19a7483..b7c42ed 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ packer/assets/id_rsa_qemu* packer/assets/packer_cache/ packer/assets/output_gentoo_qcow2/ + +.idea/ +*.iml diff --git a/README.md b/README.md index 393e9c4..738a112 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,7 @@ Run packer into docker container with qemu to build qcow2 gentoo os ## use run `make up` to start container and build qcow2 + +## iso checksum + +`iso_checksum_url": "http://distfiles.gentoo.org/releases/amd64/autobuilds/current-install-amd64-minimal/install-amd64-minimal-{{user `version`}}.iso.DIGESTS` \ No newline at end of file diff --git a/packer/Dockerfile b/packer/Dockerfile index 27a7fd6..304b60a 100644 --- a/packer/Dockerfile +++ b/packer/Dockerfile @@ -11,7 +11,7 @@ WORKDIR /packer RUN apk add --update qemu qemu-system-x86_64 qemu-img \ vim htop util-linux gzip sysfsutils openssh-client \ - openssh-keygen sudo ansible sshpass + openssh-keygen sudo ansible sshpass curl RUN addgroup -g 1000 "${GROUP}" && \ adduser -u 1000 -D -G "${GROUP}" "${USER}" && \ diff --git a/packer/assets/ansible/ansible.cfg b/packer/assets/ansible/ansible.cfg new file mode 100644 index 0000000..d313d1b --- /dev/null +++ b/packer/assets/ansible/ansible.cfg @@ -0,0 +1,2 @@ +[defaults] +host_key_checking = false \ No newline at end of file diff --git a/packer/assets/ansible/inventory_test.ini b/packer/assets/ansible/inventory_test.ini index ec9a1e2..d5a8320 100644 --- a/packer/assets/ansible/inventory_test.ini +++ b/packer/assets/ansible/inventory_test.ini @@ -1,3 +1,4 @@ [default] -100.64.0.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 +#192.168.1.24 ansible_ssh_pass=toor ansible_ssh_port=5556 ansible_user=root diff --git a/packer/assets/ansible/playbook-test.yml b/packer/assets/ansible/playbook-test.yml new file mode 100644 index 0000000..a1ea589 --- /dev/null +++ b/packer/assets/ansible/playbook-test.yml @@ -0,0 +1,32 @@ +--- + +- hosts: localhost + vars: + my_loop: > + [ + {% for i in range(1, 2) %} + { + 'name':'prefix-{{ i }}' + } + {% if not loop.last %},{% endif %} + {% endfor %} + ] + ips_str: | + {% for idx in range(0,2) %} + - name: 192.168.100.{{ idx }} + test: {{ idx }} + {% endfor %} + ips: "{{ ips_str | from_yaml }}" + + tasks: + - debug: + msg: "{{ my_loop }}" + - debug: + msg: "{{ item.name }}" + loop: "{{ my_loop }}" + + - debug: + msg: "{{ ips }}" + - debug: + msg: "{{ item.name }}" + loop: "{{ ips }}" diff --git a/packer/assets/ansible/playbook.yml b/packer/assets/ansible/playbook.yml index d958e08..aea3e2e 100644 --- a/packer/assets/ansible/playbook.yml +++ b/packer/assets/ansible/playbook.yml @@ -3,7 +3,6 @@ - hosts: default become: true - become_method: su pre_tasks: - name: "check ansible required param" assert: diff --git a/packer/assets/ansible/roles/setup/defaults/main.yml b/packer/assets/ansible/roles/setup/defaults/main.yml index 9c10453..bc21c02 100644 --- a/packer/assets/ansible/roles/setup/defaults/main.yml +++ b/packer/assets/ansible/roles/setup/defaults/main.yml @@ -2,18 +2,30 @@ # default variable relative to paritionning devices_path: /dev/sda -devices_system: - - name: root +devices_system: + - name: bootloader dev: /dev/sda1 + label: gpt + flags: [ bios_grub ] + part_start: 0% + part_end: 2MiB + - name: boot + dev: /dev/sda2 + label: gpt + flags: [ boot, esp ] + part_start: 2MiB + part_end: 128MiB + fstype: "ext2" + - name: root + dev: /dev/sda3 + label: gpt + flags: [ lvm ] + part_start: 128MiB + part_end: 100% + fstype: "lvm" + +vg_name: vg_system lvs: - - name: "bios" - size: "2M" - type: "bootloader" - descr: "BIOS boot partition" - - name: "boot" - size: "128M" - type: "ext2" - descr: "Boot/EFI system partition" - name: "swap" size: "1G" type: "swap" diff --git a/packer/assets/ansible/roles/setup/tasks/partition.yml b/packer/assets/ansible/roles/setup/tasks/partition.yml index df4490c..c58b0e8 100644 --- a/packer/assets/ansible/roles/setup/tasks/partition.yml +++ b/packer/assets/ansible/roles/setup/tasks/partition.yml @@ -1,36 +1,58 @@ --- # partition disk to install gentoo -- name: "Create a new primary partition for LVM" +- name: "Create bios, boot and LVM partition" parted: device: "{{ devices_path }}" name: "{{ item.name }}" - label: gpt number: "{{ ansible_loop.index }}" - flags: [ lvm ] + label: "{{ item.label }}" + flags: "{{ item.flags }}" + part_start: "{{ item.part_start }}" + part_end: "{{ item.part_end }}" state: present - part_end: "100%" loop: "{{ devices_system }}" loop_control: extended: yes + tags: + - storage + +- name: "Format partition with fstype keyword" + filesystem: + dev: "{{ item.dev }}" + fstype: "{{ item.fstype }}" + force: yes + resizefs: yes + loop: "{{ devices_system }}" + when: "item.fstype is defined" + tags: + - storage - name: "Create vg and add disk to it" lvg: vg: vg_system - pvs: "{{ devices_system | map(attribute='dev') | join(',') }}" + pvs: "{{ item.dev }}" + force: yes + loop: "{{ devices_system }}" + when: "'lvm' in item.flags" + tags: + - storage - name: "Create list of lvs" lvol: - vg: "vg_system" - lv: "{{ item.name }}" - size: "{{ item.size }}" + vg: "{{ vg_name }}" + lv: "{{ item.name }}" + size: "{{ item.size }}" loop: "{{ lvs }}" + tags: + - storage - - - - - - - - +- name: "Format lvs partition" + filesystem: + fstype: "{{ item.type }}" + dev: "/dev/{{ vg_name }}/{{ item.name }}" + force: yes + resizefs: yes + loop: "{{ lvs }}" + tags: + - storage \ No newline at end of file diff --git a/packer/assets/ansible/run-ansible.sh b/packer/assets/ansible/run-ansible.sh index 07d6b12..92cb961 100755 --- a/packer/assets/ansible/run-ansible.sh +++ b/packer/assets/ansible/run-ansible.sh @@ -1,5 +1,7 @@ #!/bin/bash -# run playbook on aready running qemu vm -ansible-playbook -i inventory_test.ini playbook.yml --extra-vars "ssh_pub=$(cat ../id_rsa_qemu) generated_user=antoine generated_group=antoine" +PLAYBOOK="${1:-playbook.yml}" +DEBUG="-vvv" +# 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" diff --git a/packer/assets/gentoo.json b/packer/assets/gentoo.json index 04a5c2b..5f8618e 100644 --- a/packer/assets/gentoo.json +++ b/packer/assets/gentoo.json @@ -22,12 +22,11 @@ "disk_additional_size": [], "iso_urls": [ - "/packer/install-amd64-minimal-{{user `version`}}.iso", - "http://distfiles.gentoo.org/releases/amd64/autobuilds/{{user `version`}}/install-amd64-minimal-{{user `version`}}.iso" + "/packer/install-amd64-minimal-20200205T214502Z.iso", + "http://distfiles.gentoo.org/releases/amd64/autobuilds/current-install-amd64-minimal//install-amd64-minimal-{{user `version`}}.iso" ], - "iso_checksum_url": "http://distfiles.gentoo.org/releases/amd64/autobuilds/{{user `version`}}/install-amd64-minimal-{{user `version`}}.iso.DIGESTS.asc", "iso_checksum_type": "file", - + "iso_checksum_url": "/packer/install-amd64-minimal-20200205T214502Z.iso.DIGESTS", "vm_name": "gentoo_packer.qcow2", "output_directory": "output_gentoo_qcow2", @@ -87,7 +86,7 @@ "extra_arguments": [ "--extra-vars", "ssh_pub={{user `ssh_pub_key`}} generated_user={{user `generated_user`}} generated_group={{user `generated_group`}}" ], "groups": "default", "user": "root", - "ansible_env_vars": [ "ANSIBLE_HOST_KEY_CHECKING=False" ] + "ansible_env_vars": [ "ANSIBLE_CONFIG=/packer/ansible/ansible.cfg" ] } ], "variables": { diff --git a/packer/assets/install-amd64-minimal-20200205T214502Z.iso.DIGESTS b/packer/assets/install-amd64-minimal-20200205T214502Z.iso.DIGESTS new file mode 100644 index 0000000..0a09bff --- /dev/null +++ b/packer/assets/install-amd64-minimal-20200205T214502Z.iso.DIGESTS @@ -0,0 +1,2 @@ +9bea61ff620257c3343eb3c588c555800488ace01602b7a0e4f89d09a3f976851a81b6501d79cb3696696675b4724c9da82913e4a036f7874a55bfe2b91ee994 install-amd64-minimal-20200205T214502Z.iso + diff --git a/packer/assets/run-packer.sh b/packer/assets/run-packer.sh index 77b82f4..0a27608 100755 --- a/packer/assets/run-packer.sh +++ b/packer/assets/run-packer.sh @@ -1,12 +1,11 @@ #!/bin/bash - -#packer build --only=qemu --var outfile=boxen/gentoo-minimal-hyperv.box --var headless=true --var hyperv_switchname=Ethernet gentoo-minimal.json - +latest=$(curl -s http://distfiles.gentoo.org/releases/amd64/autobuilds/latest-install-amd64-minimal.txt \ + | grep "^[^#;]" | awk '{print $1}' | cut -d'/' -f1) SSH_PUB=$(cat ./id_rsa_qemu.pub) export PACKER_LOG=1; packer build --only=qemu \ - -var version="20200205T214502Z" \ + -var version="$latest" \ -var ssh_username="root" \ -var ssh_password="toor" \ -var ssh_pub_key="$SSH_PUB" \