Age | Commit message (Collapse) | Author |
|
Azure has or will be offering shortly the ability to directly define the SSH
key value instead of a fingerprint in the ovf-env.xml file. This patch
favors defined SSH keys over the fingerprint method (LP: #1506244).
|
|
#cloud-config
fan:
config: |
# fan 240
10.0.0.0/8 eth0/16 dhcp
10.0.0.0/8 eth1/16 dhcp off
# fan 241
241.0.0.0/8 eth0/16 dhcp
config_path: /etc/network/fan
LP: #1504604
|
|
if 'condition' is provided to config in power_state, then
consult it before powering off.
This allows the user to shut down only if a condition is met, and
leave the system in a debuggable state otherwise.
An example is as simple as:
power_state:
mode: poweroff
condition: ['sh', '-c', '[ -f /disable-poweroff ]']
|
|
the content of vendordata was was being assigned to vendordata,
rather than vendordata_raw. The result was that it is not processed
for includes or part handlers or other things as it is in other
datasources.
LP: #1493453
|
|
|
|
|
|
new format of config is namespaced under top level 'rsyslog'
rather than having 3 tokens in the top level namespace.
Additionally added here are:
* tests
* support for legacy config
* support for 'remotes' configuration allowing simple config like
rsyslog: remotes: {'myremote': "192.168.1.1"}
|
|
|
|
Azure's ephemeral disks are not guaranteed to be assigned the same name by
the kernel every boot. This causes problems on ~2% of Azure instances, and
can be fixed by using udev rules to give us a deterministic path to mount;
this patch introduces those udev rules and modifies the Azure data source
to use them.
Changes to a couple of config modules were also required. In some places,
they just needed to learn to dereference symlinks. In cc_mounts this
wasn't sufficient because the dereferenced device would have been put in
/etc/fstab (rather defeating the point of using the udev rules in the
first place). A fairly hefty refactor was required to separate "is this a
valid block device?" from "what shall I put in fstab?".
LP: #1411582
|
|
This makes the full data source available to the mirror selection code,
which means we can implement region logic on the data source for
everything to use rather than it being mirror-selection-specific.
It also implements that region logic for EC2 and GCE.
LP: #1470890
|
|
ssh: generate ed25519 host keys if supported
now we attempt to generate ed25519 host keys.
If ssh-keygen does not support it, a debug log message will be written.
LP: #1461242
|
|
LP: #1470880
|
|
Different versions of the CloudStack password server respond differently;
wget handles these nicely for us, so it's easier to just use wget.
LP: #1464253, #1440263
|
|
given config:
{'growpart': {'devices': ["/"]}}
the 'devices' was ignored, it was incorrectly read from the top
level non-namespaced location.
LP: #1465436
|
|
LP: #1463373
|
|
|
|
The existing code determines if systemd is in use by looking at the
distribution name and version. This is prone to error because:
- RHEL derivatives other than CentOS (e.g., Scientific Linux) will fail
this test
- Distributions that are not derived from RHEL also use systemd
This patch makes cloud-init use the same logic that is used in systemd's
sd_booted() method
http://www.freedesktop.org/software/systemd/man/sd_booted.html
LP: #1461201
|
|
|
|
The fabric provides the user password in plain text via the CDROM,
and cloud-init has previously wrote the ovf-env.xml in /var/lib/waagent
with the password in plain text. This change redacts the password.
LP: #1311827
|
|
eu-central-1 means that 'central' is a direction to update the
regular expression to understand.
LP: #1456684
|
|
This takes away our dependency on walinux-agent, by providing a builtin
path for doing cloud-init had delegated to it.
Currently the default is to still use the old path, but adding this code
in will allow us to move to the new code path with more confidence.
|
|
Also, on RHEL-type systems using systemd,
/var/lib/cloud/data/previous-hostname would never get created (because
rather then write to files, it was executing hostnamectl)
|
|
LP: #1424277
|
|
Due to the way the azure boot works, where we identify the hostname to the
fabric, we were inadvertently overwriting hostname that the user had set.
LP: #1375252
|
|
While booting a VM from a snapshot image, network service use to find the
residual network config scripts and use to configure the old IPs.
cloud-init-local use to run later and populate the config scripts with latest
information, which does not override the previous configuration.
To solve this, we are ensuring that cloud-init-local runs before network.
LP: #1275098
|
|
|
|
|
|
don't declare a Wants/Requires on network.target; this is a passive target
that should only be pulled in by implementors of the networking service.
The requirement for network needs to be expressed as a dependency on
network-online.target.
LP: #1440180
|
|
Some tests added here to make sure this works.
The install '--config' will only start to work with the next
version of snappy-go.
LP: #1437137
|
|
The intent has always been for the local datasource (NoCloud) to require
the provider of metadata to provide 'dsmode=local'. If that wasn't found,
then the default 'dsmode' would be 'net', and the NoCloudNet datasource
would then find the data.
The bug here was that the default 'net' wasn't being set when
data was found on a local source.
|
|
v2 metadata is described at
http://eng.joyent.com/mdata/protocol.html
LP: #1436417
|
|
* explicitly test compressed user-data.
* userdata_raw is now bytes
* add load_tfile_or_url for loading text file or url
* ec2_utils: all meta-data is text, remove non-obvious string translations
* DigitalOcean: adjust for ec2_utils
* DataSourceGCE, DataSourceMAAS: user-data is binary other fields are text.
* openstack.py: read paths without decoding to text. This is ok as paths
other than user-data are json, and load_json will handle
* load_file still returns text, and that is what most things use.
LP: #1424900
|
|
LP: #1422388
|
|
|
|
Specifically, this is to support Azure's G-series VMs (which come with
disks up to 6500GB).
|
|
This fixes the last set of WARN messages in my testing.
* open /dev/console in text mode
* move final message to be jinja template by default to avoid
a warning about lack of cheetah.
* write and read pickle'd contents in binary
* some logging tests
Also:
* add tool tox-venv for simple things like:
tox-venv py34 /bin/bash
|
|
This gives us functional python3 support. There are likely
still bugs, but instance boot on openstack is functional now.
LP: #1247132
|
|
on linux we can read dmi information from /sys rather than using
dmidecode binary, and thus removing a dependency.
|
|
on RHEL, we were writing to persistent configuration the fqdn, but
invoking 'hostname' on the first boot with just the shortname. On 'reboot',
then the hostname would differ.
Now, whatever we write, invoke hostname with.
Also remove some duplicate code.
LP: #1246485
|
|
This fixes a race condition that can cause cloud-init output to be spit out
over the login prompt on the console when booting under systemd.
|
|
Google Compute Engine fqdn hostnames are usually longer than 64 characters.
This causes issues with many tools (often Java based).
Note that per gethostname(2):
POSIX.1-2001 guarantees that "Host names (not including the terminating null
byte) are limed to HOST_NAME_MAX bytes". On Linux, HOST_NAME_MAX is defined
with the value 64.
LP: #1383794
|
|
Enable user-data encoding support for GCE. Extended and updated tests to
support checking the user-data encoding.
User can now pass in user-data encoded in base64 and indicate they've
done so by adding a tag 'user-data-encoding' with value 'base64'.
LP: #1404311
|
|
This is minor change which uses the new Chef (company) top
level domain for grabbing the Omnibus installation shell script.
|
|
Instead of only expected a list, tuple, or set type
allow for a string type and dict to be passed in for 'ssh_authorized_keys',
and add log message that occurs if some other type is used that
can not be correctly processed.
|
|
This fix handles '=' as a delimiter in SSH config and
adds appropriate test methods to ensure this functionality
continues to work correctly.
|
|
Add the following adjustments to the chef template and module:
- Make it so that the chef directories can be provided (defaults
to the existing directories)
- Make the params much more configurable, and if a parameter is
provided in the chef configuration it will override existing template
parameters.
- Make the template skip lines if the values are None in the configuration
so that template lines can be removed if/when this is desirable.
- Allow the firstboot json path to be configurable (defaults to the
existing location).
- Adds a basic set of tests to ensure that good things are happening.
- Make a helper function to tell if already installed.
- Have the install routine not run chef after installed but have it instead
return a result to tell the caller to run the chef program once completed.
- Use the generated_by() utility function to give the ruby template a
better header comment.
- Set special parameters after selecting the basic chef parameters.
- Allow for the running after install and run arguments to be configured.
- Allow the omnibus url fetching retries to be configurable.
- Move the chef running to its own helper function
- Add module docs
|
|
The digital ocean datasource test is using assertIs which
is only created/existent on py2.7, so for the older py2.6
we need to add similar logic so that the test works correctly
there.
|
|
To make it so that cloud-init is installable in a virtualenv
where it can be tested in an isolated scenario we need to avoid
using and including datafiles (which won't be written into the
virtualenv) and also avoid using our initsys helper class which
also adds on its own files when we are being ran from a virtualenv.
|
|
sources.list was where this showed itself, but all rendered files
would have their newline stripped.
LP: #1355343
|
|
Add the basics of docs that can be extracted from the code itself (also
impose a initial format that will be useful for further modules to
follow). In this initial addition modify the cc_debug.py and
cc_ubuntu_init_switch.py to use this new style.
LP: #1383510
|