From 3d938e33719f1aa13ac45b074a20b1a24f2c6c39 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 10:48:04 +1000 Subject: [PATCH 01/20] Fix userdata template - 3 --- src/virt-install/user-data.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 89cffe2..f9344b0 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -13,7 +13,7 @@ bootcmd: - "nmcli con add con-name eth0 ifname eth0 type ethernet ip4 {data.cidr_1} gw4 {data.gateway} ipv4.dns {data.dns}" - "nmcli con add con-name eth1 ifname eth1 type ethernet ip4 {data.cidr_2} gw4 {data.gateway} ipv4.dns {data.dns}" runcmd: - - "subscription-manager register --username {data.rhn_username} --password '{data.rhn_password}'" + - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" - "subscription-manager release --set=8.4" - "dnf install -y dnf-utils" - "subscription-manager repos --disable=*" -- 2.52.0 From 4ad081122c5dc2e634181a1885c550830e8b81ef Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 13:34:29 +1000 Subject: [PATCH 02/20] Add vpcu parameter, change default memory, add reboot --- src/tripleo_aio_helpers/create_aio_vm.py | 4 +++- src/virt-install/user-data.tpl | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 96ee4a1..468e385 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -30,7 +30,8 @@ def parse_args(): parser.add_argument("--input-image", required=True) parser.add_argument("--os-variant", required=True) parser.add_argument("--name", required=True) - parser.add_argument("--memory", default=2048) # , type="int") + parser.add_argument("--memory", default=16384) # , type="int") + parser.add_argument("--cpus", default=4) # , type="int") parser.add_argument("--gateway", required=True) parser.add_argument("--cidr-1", required=True) parser.add_argument("--cidr-2", required=True) @@ -117,6 +118,7 @@ def virt_install_cmd(args): --name {args.name} \\ --memory {args.memory} \\ --disk {args.output_image} \\ + --vcpus {args.cpus} \\ --import \\ --graphics spice,listen=127.0.0.1 \\ --video virtio \\ diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index f9344b0..0b24be6 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -20,4 +20,12 @@ runcmd: - "subscription-manager repos --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms --enable=openstack-16.2-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms" - "dnf module disable -y container-tools:rhel8" - "dnf module enable -y container-tools:3.0" - - "dnf update -y" \ No newline at end of file + - "dnf update -y" + - "echo ***************************************************************************" + - "echo *** ***" + - "echo *** ***" + - "echo *** DNF UPDATE COMPLETE - REBOOT NOW ***" + - "echo *** ***" + - "echo *** ***" + - "echo ***************************************************************************" + - "reboot" -- 2.52.0 From 7eca3fb0d07231c00de62a146edec051a1bb8e99 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 18:23:26 +1000 Subject: [PATCH 03/20] Another network config attempt --- src/virt-install/user-data.tpl | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 0b24be6..4df6ea1 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -7,11 +7,11 @@ chpasswd: {{expire: False}} ssh_pwauth: True ssh_authorized_keys: - {data.public_key} -bootcmd: - - "nmcli conn delete 'System eth0'" - - "nmcli conn delete 'Wired connection 1'" - - "nmcli con add con-name eth0 ifname eth0 type ethernet ip4 {data.cidr_1} gw4 {data.gateway} ipv4.dns {data.dns}" - - "nmcli con add con-name eth1 ifname eth1 type ethernet ip4 {data.cidr_2} gw4 {data.gateway} ipv4.dns {data.dns}" +# bootcmd: +# - "nmcli conn delete 'System eth0'" +# - "nmcli conn delete 'Wired connection 1'" +# - "nmcli con add con-name eth0 ifname eth0 type ethernet ip4 {data.cidr_1} gw4 {data.gateway} ipv4.dns {data.dns}" +# - "nmcli con add con-name eth1 ifname eth1 type ethernet ip4 {data.cidr_2} gw4 {data.gateway} ipv4.dns {data.dns}" runcmd: - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" - "subscription-manager release --set=8.4" @@ -29,3 +29,21 @@ runcmd: - "echo *** ***" - "echo ***************************************************************************" - "reboot" +network: + version: 1 + config: + - type: physical + name: eth0 + subnets: + - type: static + address: {data.cidr_1} + gateway: {data.gateway} + dns: {data.dns} + - type: physical + name: eth1 + subnets: + - type: static + address: {data.cidr_2} + gateway: {data.gateway} + dns: {data.dns} + -- 2.52.0 From 492e2d3959234b43fe6217f05ff03a74cd6b82e3 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 18:50:00 +1000 Subject: [PATCH 04/20] Another network config attempt - 2 --- src/virt-install/user-data.tpl | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 4df6ea1..763c214 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -12,23 +12,6 @@ ssh_authorized_keys: # - "nmcli conn delete 'Wired connection 1'" # - "nmcli con add con-name eth0 ifname eth0 type ethernet ip4 {data.cidr_1} gw4 {data.gateway} ipv4.dns {data.dns}" # - "nmcli con add con-name eth1 ifname eth1 type ethernet ip4 {data.cidr_2} gw4 {data.gateway} ipv4.dns {data.dns}" -runcmd: - - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" - - "subscription-manager release --set=8.4" - - "dnf install -y dnf-utils" - - "subscription-manager repos --disable=*" - - "subscription-manager repos --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms --enable=openstack-16.2-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms" - - "dnf module disable -y container-tools:rhel8" - - "dnf module enable -y container-tools:3.0" - - "dnf update -y" - - "echo ***************************************************************************" - - "echo *** ***" - - "echo *** ***" - - "echo *** DNF UPDATE COMPLETE - REBOOT NOW ***" - - "echo *** ***" - - "echo *** ***" - - "echo ***************************************************************************" - - "reboot" network: version: 1 config: @@ -46,4 +29,21 @@ network: address: {data.cidr_2} gateway: {data.gateway} dns: {data.dns} +# runcmd: +# - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" +# - "subscription-manager release --set=8.4" +# - "dnf install -y dnf-utils" +# - "subscription-manager repos --disable=*" +# - "subscription-manager repos --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms --enable=openstack-16.2-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms" +# - "dnf module disable -y container-tools:rhel8" +# - "dnf module enable -y container-tools:3.0" +# - "dnf update -y" +# - "echo '***************************************************************************'" +# - "echo '*** ***'" +# - "echo '*** ***'" +# - "'echo *** DNF UPDATE COMPLETE - REBOOT NOW ***'" +# - "echo '*** ***'" +# - "echo '*** ***'" +# - "echo '***************************************************************************'" +# - "reboot" -- 2.52.0 From d1c3da0128487a047e95f7b414d33d02d4b7ba97 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 19:03:50 +1000 Subject: [PATCH 05/20] Another network config attempt - 3 --- src/virt-install/user-data.tpl | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 763c214..0b29168 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -1,5 +1,22 @@ #cloud-config system_info: + network: + version: 1 + config: + - type: physical + name: eth0 + subnets: + - type: static + address: {data.cidr_1} + gateway: {data.gateway} + dns: {data.dns} + - type: physical + name: eth1 + subnets: + - type: static + address: {data.cidr_2} + gateway: {data.gateway} + dns: {data.dns} default_user: name: stack password: {data.password} @@ -12,23 +29,6 @@ ssh_authorized_keys: # - "nmcli conn delete 'Wired connection 1'" # - "nmcli con add con-name eth0 ifname eth0 type ethernet ip4 {data.cidr_1} gw4 {data.gateway} ipv4.dns {data.dns}" # - "nmcli con add con-name eth1 ifname eth1 type ethernet ip4 {data.cidr_2} gw4 {data.gateway} ipv4.dns {data.dns}" -network: - version: 1 - config: - - type: physical - name: eth0 - subnets: - - type: static - address: {data.cidr_1} - gateway: {data.gateway} - dns: {data.dns} - - type: physical - name: eth1 - subnets: - - type: static - address: {data.cidr_2} - gateway: {data.gateway} - dns: {data.dns} # runcmd: # - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" # - "subscription-manager release --set=8.4" -- 2.52.0 From 2d886a4567c5a6508cfa947e750396bd2702f3f1 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 19:49:19 +1000 Subject: [PATCH 06/20] Another network config attempt - 3 --- src/virt-install/user-data.tpl | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 0b29168..3e5b9a9 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -1,22 +1,5 @@ #cloud-config system_info: - network: - version: 1 - config: - - type: physical - name: eth0 - subnets: - - type: static - address: {data.cidr_1} - gateway: {data.gateway} - dns: {data.dns} - - type: physical - name: eth1 - subnets: - - type: static - address: {data.cidr_2} - gateway: {data.gateway} - dns: {data.dns} default_user: name: stack password: {data.password} @@ -24,11 +7,11 @@ chpasswd: {{expire: False}} ssh_pwauth: True ssh_authorized_keys: - {data.public_key} -# bootcmd: -# - "nmcli conn delete 'System eth0'" -# - "nmcli conn delete 'Wired connection 1'" -# - "nmcli con add con-name eth0 ifname eth0 type ethernet ip4 {data.cidr_1} gw4 {data.gateway} ipv4.dns {data.dns}" -# - "nmcli con add con-name eth1 ifname eth1 type ethernet ip4 {data.cidr_2} gw4 {data.gateway} ipv4.dns {data.dns}" +bootcmd: + - "nmcli con modify "System eth0" ipv4.address {data.cidr_1} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" + - "nmcli con modify "Wired connection 1" ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" + - "nmcli networking off" + - "nmcli networking on" # runcmd: # - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" # - "subscription-manager release --set=8.4" -- 2.52.0 From 5aa8dc36b7eebaa31472d37194785522fb55f1c9 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 19:53:46 +1000 Subject: [PATCH 07/20] Another network config attempt - 4 --- src/virt-install/user-data.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 3e5b9a9..c4ca521 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -8,8 +8,8 @@ ssh_pwauth: True ssh_authorized_keys: - {data.public_key} bootcmd: - - "nmcli con modify "System eth0" ipv4.address {data.cidr_1} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" - - "nmcli con modify "Wired connection 1" ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" + - "nmcli con modify 'System eth0' ipv4.address {data.cidr_1} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" + - "nmcli con modify 'Wired connection 1' ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" - "nmcli networking off" - "nmcli networking on" # runcmd: -- 2.52.0 From d9329734b3ab6b73b0ae72cdb4f041aab3124bae Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 19:58:01 +1000 Subject: [PATCH 08/20] Another network config attempt - 5 --- src/virt-install/user-data.tpl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index c4ca521..5bb01db 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -12,6 +12,7 @@ bootcmd: - "nmcli con modify 'Wired connection 1' ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" - "nmcli networking off" - "nmcli networking on" + - "service sshd restart" # runcmd: # - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" # - "subscription-manager release --set=8.4" -- 2.52.0 From 9228b3df09f92771da364c13e388b22aafd2d37c Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 20:16:12 +1000 Subject: [PATCH 09/20] Another network config attempt - 6 --- src/tripleo_aio_helpers/create_aio_vm.py | 1 + src/virt-install/user-data.tpl | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 468e385..1dd4ba8 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -109,6 +109,7 @@ def create_image(args): if args.verbose: print(result) + print("Image resized") def virt_install_cmd(args): """Build and execute the virt-install command""" diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 5bb01db..f52e0ca 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -12,7 +12,7 @@ bootcmd: - "nmcli con modify 'Wired connection 1' ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" - "nmcli networking off" - "nmcli networking on" - - "service sshd restart" + # - "service sshd restart" # runcmd: # - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" # - "subscription-manager release --set=8.4" -- 2.52.0 From 4b469dffb9f4755ecf42f306c4f655b94e6ea4c4 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 20:23:11 +1000 Subject: [PATCH 10/20] Another network config attempt - 7 --- src/virt-install/user-data.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index f52e0ca..299e757 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -12,8 +12,8 @@ bootcmd: - "nmcli con modify 'Wired connection 1' ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" - "nmcli networking off" - "nmcli networking on" - # - "service sshd restart" -# runcmd: +runcmd: + - "service sshd restart" # - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" # - "subscription-manager release --set=8.4" # - "dnf install -y dnf-utils" -- 2.52.0 From b44b4978cdce1c9d47b5137ce70aaad8bfc1cb92 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Mon, 25 Sep 2023 20:27:04 +1000 Subject: [PATCH 11/20] Another network config attempt - 8 --- src/virt-install/user-data.tpl | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 299e757..383293e 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -14,20 +14,20 @@ bootcmd: - "nmcli networking on" runcmd: - "service sshd restart" -# - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" -# - "subscription-manager release --set=8.4" -# - "dnf install -y dnf-utils" -# - "subscription-manager repos --disable=*" -# - "subscription-manager repos --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms --enable=openstack-16.2-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms" -# - "dnf module disable -y container-tools:rhel8" -# - "dnf module enable -y container-tools:3.0" -# - "dnf update -y" -# - "echo '***************************************************************************'" -# - "echo '*** ***'" -# - "echo '*** ***'" -# - "'echo *** DNF UPDATE COMPLETE - REBOOT NOW ***'" -# - "echo '*** ***'" -# - "echo '*** ***'" -# - "echo '***************************************************************************'" -# - "reboot" + - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" + - "subscription-manager release --set=8.4" + - "dnf install -y dnf-utils" + - "subscription-manager repos --disable=*" + - "subscription-manager repos --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms --enable=openstack-16.2-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms" + - "dnf module disable -y container-tools:rhel8" + - "dnf module enable -y container-tools:3.0" + - "dnf update -y" + - "echo '***************************************************************************'" + - "echo '*** ***'" + - "echo '*** ***'" + - "'echo *** DNF UPDATE COMPLETE - REBOOT NOW ***'" + - "echo '*** ***'" + - "echo '*** ***'" + - "echo '***************************************************************************'" + - "reboot" -- 2.52.0 From 3f7eddb9782b4dffefdb8b11348b4c9a2203e444 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 10:01:47 +1000 Subject: [PATCH 12/20] Allow specifying MACs for network interfaces --- src/tripleo_aio_helpers/create_aio_vm.py | 52 ++++++++++++++++++++---- src/virt-install/user-data.tpl | 8 +--- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 1dd4ba8..6039231 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -5,6 +5,7 @@ Use virt-install to create a VM suitable for installing a RHOSP/tripleo AIO import argparse import pathlib import subprocess +import sys MD_PATH = "./meta-data" UD_PATH = "./user-data" @@ -32,17 +33,39 @@ def parse_args(): parser.add_argument("--name", required=True) parser.add_argument("--memory", default=16384) # , type="int") parser.add_argument("--cpus", default=4) # , type="int") - parser.add_argument("--gateway", required=True) - parser.add_argument("--cidr-1", required=True) - parser.add_argument("--cidr-2", required=True) - parser.add_argument("--dns", required=True) - parser.add_argument("--search-domain", required=True) + parser.add_argument("--gateway") + parser.add_argument("--cidr-1") + parser.add_argument("--cidr-2") + parser.add_argument("--mac-1",default="RANDOM") + parser.add_argument("--mac-2",default="RANDOM") + parser.add_argument("--dns",) + parser.add_argument("--search-domain") parser.add_argument("-v", "--verbose", action="store_true") parser.add_argument("--rhn-user", required=True) parser.add_argument("--rhn-password", required=True) args = parser.parse_args() + if (args.cidr_1 or args.cidr_2) and not (args.cidr_1 and args.cidr_2): + print("You must specify two addresses if you specify any addresses") + sys.exit(1) + + if args.cidr_1 and not args.gateway: + print("You must specify a gateway if you specify any addresses") + sys.exit(1) + + if args.cidr_1 and not args.search_domain: + print("You must specify a search domain if you specify any addresses") + sys.exit(1) + + if args.cidr_1 and not args.dns: + print("You must specify a DNS server if you specify any addresses") + sys.exit(1) + + if not (args.cidr_1 or args.cidr_2) and (args.dns or args.gateway or args.search_domain): + print("There's no point specifying DNS, gateway or search_domain if yoou don't specify addresses") + sys.exit(1) + args.public_key = args.public_key.read() args.user_data = args.user_data.read() @@ -67,10 +90,21 @@ def parse_args(): return args -def write_user_data(user_data): +def write_user_data(data): """Write out a temporary user data file""" + + data.boot_cmd="" + if data.cidr_1: + data.boot_cmd = ( + "bootcmd:\n" + f' - "nmcli con modify \'System eth0\' ipv4.address {data.cidr_1} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}"\n' + f' - "nmcli con modify \'Wired connection 1\' ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}"\n' + ' - "nmcli networking off"\n' + ' - "nmcli networking on"\n' + ) + with open(UD_PATH, "w", encoding="utf-8") as user_data_file: - user_data_file.write(user_data) + user_data_file.write(data) def write_meta_data(meta_data): @@ -126,8 +160,8 @@ def virt_install_cmd(args): --channel spicevmc \\ --wait 0 \\ --cloud-init meta-data=./meta-data,user-data=./user-data \\ - --network bridge=bridge0 \\ - --network bridge=bridge0 + --network bridge=bridge0,mac={args.mac_1} \\ + --network bridge=bridge0,mac={args.mac_2} """ print("running virt-install") diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 383293e..c6d7211 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -7,11 +7,7 @@ chpasswd: {{expire: False}} ssh_pwauth: True ssh_authorized_keys: - {data.public_key} -bootcmd: - - "nmcli con modify 'System eth0' ipv4.address {data.cidr_1} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" - - "nmcli con modify 'Wired connection 1' ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}" - - "nmcli networking off" - - "nmcli networking on" +{bootmd} runcmd: - "service sshd restart" - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" @@ -25,7 +21,7 @@ runcmd: - "echo '***************************************************************************'" - "echo '*** ***'" - "echo '*** ***'" - - "'echo *** DNF UPDATE COMPLETE - REBOOT NOW ***'" + - "echo '*** DNF UPDATE COMPLETE - REBOOT NOW ***'" - "echo '*** ***'" - "echo '*** ***'" - "echo '***************************************************************************'" -- 2.52.0 From 067b053c5ca5402704e3908e0ce5eb02a2758969 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 10:05:59 +1000 Subject: [PATCH 13/20] Fix typo --- src/virt-install/user-data.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index c6d7211..33cddfb 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -7,7 +7,7 @@ chpasswd: {{expire: False}} ssh_pwauth: True ssh_authorized_keys: - {data.public_key} -{bootmd} +{data.bootcmd} runcmd: - "service sshd restart" - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" -- 2.52.0 From e5359326ee3f6471bb5d93e1d76b3bf6ee1376c7 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 10:07:15 +1000 Subject: [PATCH 14/20] Fix typo - 2 --- src/tripleo_aio_helpers/create_aio_vm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 6039231..70460b5 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -93,9 +93,9 @@ def parse_args(): def write_user_data(data): """Write out a temporary user data file""" - data.boot_cmd="" + data.bootcmd="" if data.cidr_1: - data.boot_cmd = ( + data.bootcmd = ( "bootcmd:\n" f' - "nmcli con modify \'System eth0\' ipv4.address {data.cidr_1} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}"\n' f' - "nmcli con modify \'Wired connection 1\' ipv4.address {data.cidr_2} ipv4.method static ipv4.gateway {data.gateway} ipv4.dns {data.dns}"\n' -- 2.52.0 From ac86e51c2da034e55e30e67e14312bcda34b8cbf Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 10:30:35 +1000 Subject: [PATCH 15/20] Fix bootcmd parsing --- src/tripleo_aio_helpers/create_aio_vm.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 70460b5..6be52f8 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -69,6 +69,7 @@ def parse_args(): args.public_key = args.public_key.read() args.user_data = args.user_data.read() + generate_boot_cmd(args) args.user_data = args.user_data.format(data=args) args.meta_data = args.meta_data.read() @@ -89,10 +90,7 @@ def parse_args(): return args - -def write_user_data(data): - """Write out a temporary user data file""" - +def generate_boot_cmd(data): data.bootcmd="" if data.cidr_1: data.bootcmd = ( @@ -102,7 +100,10 @@ def write_user_data(data): ' - "nmcli networking off"\n' ' - "nmcli networking on"\n' ) - + +def write_user_data(data): + """Write out a temporary user data file""" + with open(UD_PATH, "w", encoding="utf-8") as user_data_file: user_data_file.write(data) -- 2.52.0 From f8db1c09345e3bceaf3dff5c69af10c8b46f233b Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 16:10:26 +1000 Subject: [PATCH 16/20] Fix hostname --- src/tripleo_aio_helpers/create_aio_vm.py | 5 ++--- src/tripleo_aio_helpers/prepare_deployment.py | 7 ++++++- src/virt-install/user-data.tpl | 1 - 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 6be52f8..95a088b 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -14,12 +14,11 @@ ND_PATH = "./network-config" def parse_args(): """Parse the command line arguments""" + import pdb;pdb.set_trace() parser = argparse.ArgumentParser() parser.add_argument("--password", required=True) parser.add_argument("--public-key", required=True, type=open) - parser.add_argument( - "--local-hostname", default="aio3.gpslab.cbr.redhat.com" - ) + parser.add_argument("--local-hostname", required=True) parser.add_argument("--user-data", default="./src/virt-install/user-data.tpl", type=open) parser.add_argument("--meta-data", default="./src/virt-install/meta-data.tpl", type=open) parser.add_argument( diff --git a/src/tripleo_aio_helpers/prepare_deployment.py b/src/tripleo_aio_helpers/prepare_deployment.py index 84ca42e..993805a 100644 --- a/src/tripleo_aio_helpers/prepare_deployment.py +++ b/src/tripleo_aio_helpers/prepare_deployment.py @@ -16,7 +16,7 @@ def parse_args(): parser.add_argument("-u", "--username", required=True) parser.add_argument("-p", "--password", required=True) parser.add_argument("-a", "--address", required=True) - parser.add_argument("-i", "--interface", default="enp1s0") + parser.add_argument("-i", "--interface", required=True) parser.add_argument("-m", "--netmask", default=24) parser.add_argument( "-d", "--dns", nargs="+", action="append", required=True @@ -151,6 +151,11 @@ def main(): deploy.write(deploy_sh(args)) print(f"deploy script written to {args.deploy}") + print("If you are running on a cloud image remenber to disable cloud-init before running the deploy.") + print("sudo systemctl stop cloud-init") + print("sudo systemctl disable cloud-init") + print("Make sure you have specifed the correct interface to use!") + if __name__ == "__main__": main() diff --git a/src/virt-install/user-data.tpl b/src/virt-install/user-data.tpl index 33cddfb..457d0f3 100644 --- a/src/virt-install/user-data.tpl +++ b/src/virt-install/user-data.tpl @@ -9,7 +9,6 @@ ssh_authorized_keys: - {data.public_key} {data.bootcmd} runcmd: - - "service sshd restart" - "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'" - "subscription-manager release --set=8.4" - "dnf install -y dnf-utils" -- 2.52.0 From 9832a6d4bb886e3c5ee4f128ed4ac0c2ddb2d886 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 16:16:06 +1000 Subject: [PATCH 17/20] Fix hostname 2 --- src/tripleo_aio_helpers/create_aio_vm.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 95a088b..d3c88a1 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -14,15 +14,16 @@ ND_PATH = "./network-config" def parse_args(): """Parse the command line arguments""" + template_path = pathlib.Path(__file__).parent / "virt-install" import pdb;pdb.set_trace() parser = argparse.ArgumentParser() parser.add_argument("--password", required=True) parser.add_argument("--public-key", required=True, type=open) parser.add_argument("--local-hostname", required=True) - parser.add_argument("--user-data", default="./src/virt-install/user-data.tpl", type=open) - parser.add_argument("--meta-data", default="./src/virt-install/meta-data.tpl", type=open) + parser.add_argument("--user-data", default=template_path / "user-data.tpl", type=open) + parser.add_argument("--meta-data", default=template_path / "/meta-data.tpl", type=open) parser.add_argument( - "--network-data", default="./src/virt-install/network-config.tpl", type=open + "--network-data", default=template_path / "network-config.tpl", type=open ) parser.add_argument("--instance-id", required=True, help="Hostname for the new VM") parser.add_argument("--output-image", required=True) -- 2.52.0 From f4f85b92b580b90a3635ad3957e8a3490f1813bb Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 16:23:58 +1000 Subject: [PATCH 18/20] Fix hostname 3 --- src/tripleo_aio_helpers/create_aio_vm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index d3c88a1..6c44a8b 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -14,7 +14,7 @@ ND_PATH = "./network-config" def parse_args(): """Parse the command line arguments""" - template_path = pathlib.Path(__file__).parent / "virt-install" + template_path = pathlib.Path(__file__).parent.parent / "virt-install" import pdb;pdb.set_trace() parser = argparse.ArgumentParser() parser.add_argument("--password", required=True) -- 2.52.0 From 47b559fbd08be00a2b22db68f87a7bb6b497b373 Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 16:31:18 +1000 Subject: [PATCH 19/20] Fix hostname 3 --- src/tripleo_aio_helpers/create_aio_vm.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 6c44a8b..693cd41 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -15,15 +15,14 @@ ND_PATH = "./network-config" def parse_args(): """Parse the command line arguments""" template_path = pathlib.Path(__file__).parent.parent / "virt-install" - import pdb;pdb.set_trace() parser = argparse.ArgumentParser() parser.add_argument("--password", required=True) parser.add_argument("--public-key", required=True, type=open) parser.add_argument("--local-hostname", required=True) - parser.add_argument("--user-data", default=template_path / "user-data.tpl", type=open) - parser.add_argument("--meta-data", default=template_path / "/meta-data.tpl", type=open) + parser.add_argument("--user-data", default=template_path / "user-data.tpl") + parser.add_argument("--meta-data", default=template_path / "/meta-data.tpl") parser.add_argument( - "--network-data", default=template_path / "network-config.tpl", type=open + "--network-data", default=template_path / "network-config.tpl" ) parser.add_argument("--instance-id", required=True, help="Hostname for the new VM") parser.add_argument("--output-image", required=True) @@ -68,14 +67,17 @@ def parse_args(): args.public_key = args.public_key.read() - args.user_data = args.user_data.read() + with open(args.user_data) as user_data: + args.user_data = user_data.read() generate_boot_cmd(args) args.user_data = args.user_data.format(data=args) - args.meta_data = args.meta_data.read() + with open(args.meta_data) as meta_data: + args.meta_data = meta_data.read() args.meta_data = args.meta_data.format(data=args) - args.network_data = args.network_data.read() + with open(args.network_data) as network_data: + args.network_data = network_data.read() args.network_data = args.network_data.format(data=args) output_image = pathlib.Path(args.output_image) -- 2.52.0 From 1dc256fd61f9b8b67c45e8a17d70dc7ade0ca8ab Mon Sep 17 00:00:00 2001 From: Neill Cox Date: Tue, 26 Sep 2023 16:32:03 +1000 Subject: [PATCH 20/20] Fix hostname 4 --- src/tripleo_aio_helpers/create_aio_vm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tripleo_aio_helpers/create_aio_vm.py b/src/tripleo_aio_helpers/create_aio_vm.py index 693cd41..98ac977 100644 --- a/src/tripleo_aio_helpers/create_aio_vm.py +++ b/src/tripleo_aio_helpers/create_aio_vm.py @@ -20,7 +20,7 @@ def parse_args(): parser.add_argument("--public-key", required=True, type=open) parser.add_argument("--local-hostname", required=True) parser.add_argument("--user-data", default=template_path / "user-data.tpl") - parser.add_argument("--meta-data", default=template_path / "/meta-data.tpl") + parser.add_argument("--meta-data", default=template_path / "meta-data.tpl") parser.add_argument( "--network-data", default=template_path / "network-config.tpl" ) -- 2.52.0