summaryrefslogtreecommitdiff
path: root/cloudinit/distros
AgeCommit message (Collapse)Author
2016-06-06Rebase against masterJoshua Harlow
2016-05-31add renaming code for renaming interfacesScott Moser
currently does not work in lxc https://github.com/lxc/lxd/issues/2063
2016-05-25commit to push for fear of loss.Scott Moser
== background == DataSource Mode (dsmode) is present in many datasources in cloud-init. dsmode was originally added to cloud-init to specify when this datasource should be 'realized'. cloud-init has 4 stages of boot. a.) cloud-init --local . network is guaranteed not present. b.) cloud-init (--network). network is guaranteed present. c.) cloud-config d.) cloud-init final 'init_modules' [1] are run "as early as possible". And as such, are executed in either 'a' or 'b' based on the datasource. However, executing them means that user-data has been fully consumed. User-data and vendor-data may have '#include http://...' which then rely on the network being present. boothooks are an example of the things run in init_modules. The 'dsmode' was a way for a user to indicate that init_modules should run at 'a' (dsmode=local) or 'b' (dsmode=net) directly. Things were further confused when a datasource could provide networking configuration. Then, we needed to apply the networking config at 'a' but if the user had provided boothooks that expected networking, then the init_modules would need to be executed at 'b'. The config drive datasource hacked its way through this and applies networking if *it* detects it is a new instance. == Suggested Change == The plan is to 1. incorporate 'dsmode' into DataSource superclass 2. make all existing datasources default to network 3. apply any networking configuration from a datasource on first boot only apply_networking will always rename network devices when it runs. for bug 1579130. 4. run init_modules at cloud-init (network) time frame unless datasource is 'local'. 5. Datasources can provide a 'first_boot' method that will be called when a new instance_id is found. This will allow the config drive's write_files to be applied once. Over all, this will very much simplify things. We'll no longer have 2 sources like DataSourceNoCloud and DataSourceNoCloudNet, but would just have one source with a dsmode. == Concerns == Some things have odd reliance on dsmode. For example, OpenNebula's get_hostname uses it to determine if it should do a lookup of an ip address. == Bugs to fix here == http://pad.lv/1577982 ConfigDrive: cloud-init fails to configure network from network_data.json http://pad.lv/1579130 need to support systemd.link renaming of devices in container http://pad.lv/1577844 Drop unnecessary blocking of all net udev rules
2016-05-19Remerge against head/masterJoshua Harlow
2016-05-12Fix up a ton of flake8 issuesJoshua Harlow
2016-05-10Move net/renderers -> netJoshua Harlow
2016-05-10Fix up tests and debian distroJoshua Harlow
2016-05-09Rename renderer attribute to _net_rendererJoshua Harlow
2016-05-09Use the new renderer in the debian and stages filesJoshua Harlow
2016-04-15networking: no longer delete eth0.cfg on debian/ubuntuScott Moser
Ubuntu cloud images in created a file during build that would interfere with cloud-init's discovered or rendered networking. To avoid the issues, cloud-init was deleting /etc/network/interfaces.d/eth0.cfg . The build process no longer creates this file. However, to address any existing files cloud-init will still remove the file if it has known content and warn otherwise. LP: #1563487
2016-04-06Ensure that a resolve conf object is written as a string.Scott Moser
Instead of passing the raw object and expecting the write_file to work automatically make sure we explicitly pass the string version of it so that the write_file routine can correctly encode/decode it as needed. LP: #1479988
2016-04-06fix adding of users when no group is specifiedScott Moser
revision 1179 regressed adding a user that did not have a 'groups' entry present in cloud-config. This handles that correctly, making 'add_user' able to take: a.) groups="group1,group2" b.) groups=["group1", "group2"] c.) groups=None d.) no groups parameter Additionally, if a primary group is specified it will also be created. End result is that this is functional: #cloud-config groups: ["sudo"] users: - name: sysop primary-group: sysop groups: "sudo,adm" shell: /bin/bash - name: user1 primary-group: users groups: sudo - name: foo1 - name: bar gecos: Bar groups: ["bargroup"] Resulting in: $ groups sysop sysop : sysop adm sudo $ groups user1 user1 : users sudo $ groups foo1 foo1 : foo1 $ groups bar bar : bar bargroup LP: #1562918
2016-04-06support adding the primary group alsoScott Moser
2016-04-05write_files: fix decompression of contentScott Moser
When provided with gzipped data, an exception would be raised because of a conversion to string. This fixes the issue and adds a test for write_files. LP: #1565638
2016-04-04merge with trunkScott Moser
2016-03-30fix adding of users without a groupScott Moser
revision 1179 regressed adding a user that did not have a 'groups' entry present. This should handle that correctly, making 'add_user' able to take: a.) groups="group1,group2" b.) groups=["group1", "group2"] c.) groups=None d.) no groups parameter LP: #1562918
2016-03-29apply_network_config improvementsScott Moser
3 things here: a.) do not raise exception, only warn when trying to apply a network config for a distro that does not have an implementation. This is important since debian/ubuntu is the only one *with* an implementation at the moment b.) apply network config in 'cloud-init --local' even if there is no datasource found. c.) do not write 70-persistent-net.rules the code was writing both 70-persistent-net.rules and /etc/systemd/network/50-cloud-init-*.link files that would just be confusing.
2016-03-22write to 50-cloud-init.cfg and write systemd.link rules.Scott Moser
2016-03-22add code to invoke networking configScott Moser
there is no data source that has a populated network_config() so at this point this doesn't do anything.
2016-03-11fix toxScott Moser
2016-03-11minor changes use the helpers in cloudinit/netScott Moser
functional
2016-03-11fix use of network stateScott Moser
2016-03-11merge with trunkScott Moser
2016-03-10commit planned implementation of datasourcenocloudScott Moser
this adds the consumption of 'network-config' to the datasourcenocloud. There is an implementation of the network rendering taht is untested in distros/debian.
2016-03-09add default user to 'lxd' group and create groups when necessary.Scott Moser
This add 'lxd' to the list of groups that the default user is added to. It also changes behavior to create any necessary groups that are listed for the user rather than failing to add the user. Theres also a fix for usage of logexc that I found along the way. LP: #1539317
2016-03-04Enable password changing via a hashed stringDaniel Watkins
2016-03-03Apply pep8, pyflakes fixes for python2 and 3 Ryan Harper
Update make check target to use pep8, pyflakes, pyflakes3.
2016-03-03Update pep8 runner and fix pep8 issuesRyan Harper
2016-03-02Used keyword for parameter in order to make it clearer what it represents.Alex Sirbu
2016-03-02Added the hashed_passwd argument for the function create_user, which uses ↵Alex Sirbu
the already implemented functionality of changing the password with a hashed string, but which wasn't used anywhere.
2016-03-01timezone: use a symlink when updating /etc/localtimeScott Moser
Unless /etc/localtime is an existing file and not a symlink, then we will symlink instead of copying the tz_file to /etc/localtime. The copy was due to an old bug in Ubuntu, symlink should be preferred. LP: #1543025
2015-07-30Ensure that when a resolve conf object is written we pass the str() version ↵Joshua Harlow
of it Instead of passing the raw object and expecting the write_file to work automatically make sure we explicitly pass the string version of it so that the write_file routine can correctly encode/decode it as needed. LP: #1479988
2015-07-22Add DataSource.region and use it in mirror selection.Daniel Watkins
Also implement DataSource.region for EC2 and GCE data sources.
2015-07-22Make full data source available to code that handles mirror selection.Daniel Watkins
2015-06-02check for systemd using sd_booted() semanticsLars Kellogg-Stedman
The existing cloud-init 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, and - 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
2015-05-19EC2: be aware of eu-central-1 availability zoneScott Moser
eu-central-1 means that 'central' is a direction to update the regular expression to understand. LP: #1456684
2015-05-15pep8 fixesScott Moser
2015-05-15detect that CentOS 7 uses systemd, write previous-hostname in that case.Scott Moser
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)
2015-04-21Don't overwrite the hostname if the user has changed it after we set itJoshua Harlow
2015-04-15Don't overwrite the hostname if the user has changed it after we set itbrak
2015-04-15CentOS 7 uses systemd. RHEL distributions using systemd were not properly ↵brak
saving the previous-hostname data
2015-04-14Add functionality to fixate the uid of a newly added user.Gerhard Muntingh
2015-01-27Respond to review:Barry Warsaw
- Remove str() wrappers to second argument to write_files() where it is no longer necessary. Also: Fixed a couple of other octal literals which clearly weren't being tested.
2015-01-26More test repairs.Barry Warsaw
2015-01-23* Fix the filter() imports.Barry Warsaw
* In Py3, pass universal_newlines to subprocess.Popen()
2015-01-22Low hanging Python 3 fruit.Barry Warsaw
2015-01-21Largely merge lp:~harlowja/cloud-init/py2-3 albeit manually because it seemedBarry Warsaw
to be behind trunk. `tox -e py27` passes full test suite. Now to work on replacing mocker.
2015-01-21More octal literal fixes.Barry Warsaw
2015-01-21Fix file modes to be Python 2/3 compatible.Barry Warsaw
2015-01-20More FreeBSD improvementsBen Arblaster
- Implement set_passwd - Implement set_timezone - Use /bin/tcsh as default user shell (FreeBSD default) - Change default username to freebsd - Enable set-passwords, package-update-upgrade-install and timezone modules - Remove trailing whitespace