| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| | |
We were building it from a variable in some places and hardcoding it in
others; now we build it from a variable everywhere.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Move some code to the '.check' extension to verify that the deployment
can happen *before* spending 5 minutes unpacking and configuring the
rootfs.
This is not a perfect solution yet because when multiple systems are
being deployed in a cluster, we do not check all systems and then
deploy them all. Instead, we check one, then deploy it, then check the
second, etc.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There is no longer a default /etc/fstab in the Baserock fhs-dirs chunk,
and the nfsboot.write extension does not use the default Btrfs system
layout so no entry is added for / to /etc/fstab at deploy-time.
We cannot have / in /etc/fstab for nfsboot deployments because it
causes systemd to remount / during bootup, which breaks everything.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This moves the deployed system to somewhere on the host.
Any existing contents of the directory is deleted, so don't try to be
clever and deploy a new system on top of / in place of a proper upgrade.
It can be used to deploy a chroot, sysroot or container, but its
current use is to allow for nested deployments to include another
system in itself, since the parent deployment's "$1" is prepended to
the sub-deployment's "$2".
|
| |
| |
| |
| |
| |
| |
| | |
If the disk image was not yet created then the os.remove() call fails
and the original exception gets lost, causing confusion and sadness.
Also print status earlier on failure
|
| |
| |
| |
| |
| | |
Most write extensions don't handle both initial deployments and upgrades
of a system.
|
| |
| |
| |
| |
| | |
Now you can deploy an upgrade, set it to be the default version and reboot
into it all with one call to `morph deploy`.
|
| |
| |
| |
| |
| | |
Also, be more flexible when parsing environment booleans -- convert to
lower case and match 0/1 and true/false as well as yes/no.
|
| | |
|
| |
| |
| |
| |
| |
| | |
We now have a OS version manager tool in Baserock (in tbdiff.git). The
code to deploy a new base OS version should live there, to minimise
duplication between write extensions.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The shared state directories defined in writeexts.py (/var, /home etc.)
are now separate Btrfs subvolumes that are mounted in place using fstab.
There are some warnings on mounting /var and /srv about the mountpoint
not being empty. Not yet investigated.
If a configure extension has already added / to the fstab, use the
device it chose rather than assuming /dev/sda. This is required for the
vdaboot.configure extension that we use for OpenStack deployments.
Similarly, if a configure extension has added an entry for a state
directory in /etc/fstab already, we don't replace it with a /state/xxx
directory. That's only done as a default behaviour.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
VirtualBox changed a command line option in 4.3 incompatibly, so we now
have to check the version number and change an option from --sataportcount
to --portcount if the version of VirtualBox running on the target is at
least 4.3
This turns the version into a tuple and compares it against another,
since it's more reliable than comparing strings, which will count '1.10'
as earlier than '1.2', and more convenient than comparing the digits
individually.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This option lets the install-files config extension overwrite existing files.
A file will only be overwritten if the overwrite flag is specified for that file.
Since the overwrite arg is optionally prepended to the manifest line,
this patch should not break existing manifests
With this patch default config files can be replaced with project specific
config files
|
| |\ |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Reviewed-by: Richard Maw
At his suggestion, fixed the call to sorted() to be a call
to asciibetical().
|
| | |
| | |
| | |
| | |
| | | |
This will allow the user to append text to /etc/fstab during a
deployment, without having to write custom configuration extensions.
|
| |/ |
|
| |
| |
| |
| |
| | |
This snuck in since the test suite could not be run when TMPDIR was
on a tmpfs.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
openstackssh.write: Write extension which deploy a raw image of baserock
directly to an OpenStack machine using python-glanceclient. The raw image
deployed has modified its bootloader to use virtio disks.
vdaboot.configure: Configuration extension to change the mount point of
"/" to use virtio disks (/dev/vda).
|
| |
| |
| |
| | |
Patch from Paul Sherwood.
|
| | |
|
| | |
|
| |
| |
| |
| | |
systems.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Accordingly the rsync manual:
"A trailing slash on the source changes this behavior to avoid
creating an additional directory level at the destination. You can
think of a trailing / on a source as meaning "copy the contents of
this directory" as opposed to "copy the directory by name".
|
| |
| |
| |
| | |
Unmounting the root disk as the side effect of turn it to be read only
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Or else this
ln -s -f update1 /mp/systems/default
will do this
'/pp/systems/default/update1' -> 'update1
When we want
'/pp/systems/default' -> 'update1
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
-s, or --protect-args prevents the file path components of destination
or source paths being interpreted by the remote shell.
This is for wildcards or other shell features, but it breaks when paths
have whitespace.
We tend to always use absolute paths, so all uses of rsync now pass -s.
kvm.write needs it, since the disk can be written to a path with spaces.
Nfsboot and ssh-rsync need it because version labels are used, which may
have spaces, and temporary directories are used, which could have spaces
in weird TMPDIR configurations.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Verify if are using and older extlinux configuration and upgrade it
if the case, by checking if the "default" symbolic link exists on the target.
Note that with the symbolic link we don't need to update extlinux configuration after an upgrade
|
| |
| |
| |
| | |
systems.
|
| | |
|
| |\
| | |
| | |
| | |
| | |
| | | |
git://git.baserock.org/baserock/baserock/morph
Reviewed by Richard Maw, Lars Wirzenis, Daniel Silverstone and Jonathan Maw.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The VirtualBox deployment write extension will configure networking in
the following manner:
- One host-only network interface will be used to group the virtual
machines together (and to give access between the host and the virtual
machines). It will be bound to eth0 of the virtual machine.
- One NAT (or Bridge) network interface will be used to allow the
virtual machines access to the wider network. This will be bound to eth1
of the virtual machine.
Now deployment to virtual box will require that both HOST_IPADDR and NETMASK
environment variables be set, and also configuration for eth0 and eth1 is
expected in the NETWORK_CONFIG environment variable.
This commit also replaces some run_cmd with ssh_runcmd.
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | | |
git://git.baserock.org/baserock/baserock/morph
Reviewed by Richard Maw and Lars Wirzenius
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | | |
deployments
Also Change them to use the "default" symlink in the extlinux.conf they
create, instead of hardcoding the current system version name
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
With this we'll have "default -> factory" instead of
"default-run" -> "factory/run".
Also change to use VERSION_LABEL instead of VERSION and
"factory" instead of "version1", to be more consistent with
other parts of the code.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This is used to perform upgrades on running baserock systems. It requires rsync
on the target system
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
morphlib/app.py
Also fixed copyright year in tests/trove-id.script, which was not from
Richard's patch, but from an earlier commit, and all my own fault.
|
| | | |
|
| |/ |
|