Dnf #1
2 changed files with 45 additions and 15 deletions
|
|
@ -5,6 +5,7 @@ Use virt-install to create a VM suitable for installing a RHOSP/tripleo AIO
|
||||||
import argparse
|
import argparse
|
||||||
import pathlib
|
import pathlib
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
MD_PATH = "./meta-data"
|
MD_PATH = "./meta-data"
|
||||||
UD_PATH = "./user-data"
|
UD_PATH = "./user-data"
|
||||||
|
|
@ -32,17 +33,39 @@ def parse_args():
|
||||||
parser.add_argument("--name", required=True)
|
parser.add_argument("--name", required=True)
|
||||||
parser.add_argument("--memory", default=16384) # , type="int")
|
parser.add_argument("--memory", default=16384) # , type="int")
|
||||||
parser.add_argument("--cpus", default=4) # , type="int")
|
parser.add_argument("--cpus", default=4) # , type="int")
|
||||||
parser.add_argument("--gateway", required=True)
|
parser.add_argument("--gateway")
|
||||||
parser.add_argument("--cidr-1", required=True)
|
parser.add_argument("--cidr-1")
|
||||||
parser.add_argument("--cidr-2", required=True)
|
parser.add_argument("--cidr-2")
|
||||||
parser.add_argument("--dns", required=True)
|
parser.add_argument("--mac-1",default="RANDOM")
|
||||||
parser.add_argument("--search-domain", required=True)
|
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("-v", "--verbose", action="store_true")
|
||||||
parser.add_argument("--rhn-user", required=True)
|
parser.add_argument("--rhn-user", required=True)
|
||||||
parser.add_argument("--rhn-password", required=True)
|
parser.add_argument("--rhn-password", required=True)
|
||||||
|
|
||||||
args = parser.parse_args()
|
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.public_key = args.public_key.read()
|
||||||
|
|
||||||
args.user_data = args.user_data.read()
|
args.user_data = args.user_data.read()
|
||||||
|
|
@ -67,10 +90,21 @@ def parse_args():
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
|
||||||
def write_user_data(user_data):
|
def write_user_data(data):
|
||||||
"""Write out a temporary user data file"""
|
"""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:
|
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):
|
def write_meta_data(meta_data):
|
||||||
|
|
@ -126,8 +160,8 @@ def virt_install_cmd(args):
|
||||||
--channel spicevmc \\
|
--channel spicevmc \\
|
||||||
--wait 0 \\
|
--wait 0 \\
|
||||||
--cloud-init meta-data=./meta-data,user-data=./user-data \\
|
--cloud-init meta-data=./meta-data,user-data=./user-data \\
|
||||||
--network bridge=bridge0 \\
|
--network bridge=bridge0,mac={args.mac_1} \\
|
||||||
--network bridge=bridge0
|
--network bridge=bridge0,mac={args.mac_2}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
print("running virt-install")
|
print("running virt-install")
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,7 @@ chpasswd: {{expire: False}}
|
||||||
ssh_pwauth: True
|
ssh_pwauth: True
|
||||||
ssh_authorized_keys:
|
ssh_authorized_keys:
|
||||||
- {data.public_key}
|
- {data.public_key}
|
||||||
bootcmd:
|
{bootmd}
|
||||||
- "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:
|
runcmd:
|
||||||
- "service sshd restart"
|
- "service sshd restart"
|
||||||
- "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'"
|
- "subscription-manager register --username {data.rhn_user} --password '{data.rhn_password}'"
|
||||||
|
|
@ -25,7 +21,7 @@ runcmd:
|
||||||
- "echo '***************************************************************************'"
|
- "echo '***************************************************************************'"
|
||||||
- "echo '*** ***'"
|
- "echo '*** ***'"
|
||||||
- "echo '*** ***'"
|
- "echo '*** ***'"
|
||||||
- "'echo *** DNF UPDATE COMPLETE - REBOOT NOW ***'"
|
- "echo '*** DNF UPDATE COMPLETE - REBOOT NOW ***'"
|
||||||
- "echo '*** ***'"
|
- "echo '*** ***'"
|
||||||
- "echo '*** ***'"
|
- "echo '*** ***'"
|
||||||
- "echo '***************************************************************************'"
|
- "echo '***************************************************************************'"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue