Commit Graph

2252 Commits

Author SHA1 Message Date
lxc@zitta.fr
f8d0243a78 gentoo: Initial template
Signed-off-by: gza <lxc@zitta.fr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-14 16:45:51 -05:00
Serge Hallyn
c8ad5f4623 api change: default container->daemonize to true
Pretty much the only case where we do NOT want to daemonize
a container start is lxc-start.  So make c->daemonize true
by default, and have lxc-start set it to false.

If there are existing API users who rely on daemonize by
default, then they will be broken by this.  It seems we should
do this before beta1 if we're going to do it.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-14 16:25:58 -05:00
Chris Glass
4213a747e8 Make ubuntu templates squid-deb-proxy-client aware
This makes the ubuntu and ubuntu-cloud templates automatically aware of apt
proxy settings when the LXC host has "squid-deb-proxy-client" installed. This
makes installations *much* faster when a suitable squid-deb-proxy is
found on the network (or installed on the host).

Signed-off-by: Chris Glass <tribaal@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-14 16:20:52 -05:00
Elan Ruusamäe
17abf2784d handle simple bashisms:
- [[ ]] -> [ ]
- == -> =
- source -> .
- redirect of fd 200 is error in mksh, use fd 9
- &> /dev/null -> > /dev/null 2>&1
- useless function keyword
- echo -e -> printf

still left bash shebang which did not validate with checkbashism, mostly
due 'type' being reported as bashism

Signed-Off-By: Elan Ruusamäe <glen@delfi.ee>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-14 16:16:00 -05:00
Åsmund Grammeltvedt
3aa0acaf0c lxc-start-ephemeral: Fix syntax error in aufs
Signed-off-by: Åsmund Grammeltvedt <asmundg@snap.tv>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-14 16:12:14 -05:00
Stéphane Graber
9accc2efea download: Improve cache handling
This adds a new --force-cache parameter which will force use of the
cache even for expired images.

An expired image is now only flushed from the cache once a new one is
successfuly downloaded (to avoid destroying the local cache when the
host doesn't have internet connectivity).

The ID of the build in cache is also tracked so that we don't
re-download something we already have (should only happen if we don't
have a new build published by the time the previous one expires).

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-14 15:58:03 -05:00
Stéphane Graber
10a5fab6f3 download: Support listing available images
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-14 15:58:01 -05:00
Stéphane Graber
fecf101cc4 download: Don't use an hardcoded exclude list
Instead of hardcoding --exclude=./dev/*, use a new metadata file
"excludes" which lists all the paths or patterns to exclude during
extraction (one per line).

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-14 15:57:59 -05:00
Stéphane Graber
33aa351ac1 download: Fix download_sig logic
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-14 15:57:51 -05:00
KATOH Yasufumi
83b4b1dca8 doc: Update lxc.conf(5)
* Update Japanese lxc.conf(5) for commit 508c263ee6
* Remove duplicate line in English lxc.conf(5)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-14 09:50:43 -05:00
Dwight Engen
fad9676698 download: don't download signatures when --no-validate given
- show full path to failed download location

- change test to -f in case meta.tar.xz:templates has a blank line it
  won't attempt to sed a directory

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-13 21:17:39 -05:00
Stéphane Graber
cb13115193
Add minimal userns config for plamo
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-13 17:06:01 -05:00
Serge Hallyn
484ed03088 cgroup: move all some functions into cgroup.h
Some functions which wanted to know about cgroup paths were located
in other files.  Move them into cgroup.c, so that all knowledge of
the cgroup backend can be colocated.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-13 16:35:53 -05:00
Luka Perkov
40131a0367 include: remove duplicates
Signed-off-by: Luka Perkov <luka.perkov@sartura.hr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-13 16:35:50 -05:00
Luka Perkov
0f71e1bf61 include: cleanup unnecessary getline defines
The removed chunk is already defined in utils.h which
is included in modified files.

Signed-off-by: Luka Perkov <luka.perkov@sartura.hr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-13 16:35:48 -05:00
Dwight Engen
b9fdb6928d fix bug setting autodef in config
Introduced in commit df2d4205.

Reported-by: S.Çağlar Onur <caglar@10ur.org>
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-13 12:51:58 -05:00
S.Çağlar Onur
710bde5e52 introduce a simple test for testing add_device_node and remove_device_node
Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-13 10:11:47 -06:00
Serge Hallyn
508c263ee6 This change introduce mac address templating.
By setting lxc.network.hwaddr to something like fe:xx:xx:xx:xx:xx each
"x" will be replaced by a random value.  If less significant bit of
first byte is "templated", it will be set to 0.

This change introduce also a common randinit() function that could be
used to initialize random generator.

Signed-off-by: gza <lxc@zitta.fr>
Acked-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-13 10:04:10 -06:00
KATOH Yasufumi
bf3e09c00e plamo: Update template to use lxc.include and add plamo.common.conf
Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-13 09:14:04 -06:00
Serge Hallyn
d08363afbb introduce lxc-unpriv test
It simply creates a test user and tries to create and start
a container as that user.  Tries to lxc-attach to that
container to test network connectivity.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-13 09:02:30 -06:00
Serge Hallyn
8d4b877a3f usernsexec: don't fail if we can't open pty
It's nice if we can do it, but not required.  Exiting on this
failure causes lxc-create started by root as a less-privileged
userid to fail.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-13 09:02:24 -06:00
Dwight Engen
df2d420507 ensure all config items are duplicated on clone/write_config
Since previously I had found a config item that wasn't being propagated
by lxc-clone, I went through all the config items and made sure that:
 a) Each item is documented in lxc.conf
 b) Each item is written out by write_config

The only one that isn't is lxc.include, which by its nature only pulls
in other config item types.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-12 19:25:47 -05:00
Serge Hallyn
603c64c289 cgroup: recursively delete cgroups when asked
Currently when a container is shut down, lxc walks the set of all
cgroup paths it created, in reverse order, and tries to remove them.
This doesn't suffice if the container has also created new cgroups.

It'd be impolite to recursively remove all the cgroup paths we created,
since this can include '/lxc' and thereunder all other containers
started since.

This patch changes container shutdown to only delete the container's own
path, but do so recursively.  Note that if we fail during startup,
the container won't have created any cgroup paths so it the old
way works fine.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-12 19:25:08 -05:00
Stéphane Graber
71d3a6590f download: Initial template
This adds a new template called "download". It's a fairly simple
template with a minimal set of dependency which will grab any pre-built
image available on https://images.linuxcontainers.org
Note that the serverside is still work in progress (missing SSL support).

Access is done over https by default with a warning being emitted if
fallback to http was required (may be needed for testing, when behind
proxy and with private servers). All index files and tarballs are
gpg-signed with the default pubkeyid contained in the template itself.

The main benefit of this template is to be entirely
distribution-agnostic, any template that can be integrated with the
server build infrastructure will then work on any LXC machine when using
the download template. This template is also compatible with user
namespaces and will hopefully help widden the number of distros that may
work in unprivileged LXC.

This commit also bundles a small change to the template configs to have
the ubuntu template (used by the download template) to work with
unprivileged LXC.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-12 19:21:49 -05:00
Stéphane Graber
3f5f5d99b0 Fix some typos
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-12 19:21:36 -05:00
Stéphane Graber
2e59ba029e One more rename of the system options
This should be the last change of name for those options. This change
basically move them all to lxc.bdev.<backend>.<option>.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-10 23:25:19 -05:00
Serge Hallyn
cd43d2d1b9 Fix bug in preserve_ns
If /proc/self/ns does not exist, then preserve_ns was failing to
initialize the saved_ns[i] to -1.  This caused attach_ns() to try
and attach, and of course fail.

Initialize the saved ns values before returning an error.

The return values of preserve_ns and attach_ns were also being
ignored.  Honor them.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-10 23:24:59 -05:00
Stéphane Graber
dad87e3bd1 Drop usage of LXC_DEFAULT_CONFIG in our code
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-10 11:16:09 -05:00
Stéphane Graber
593e84786e Re-organize API for global lxc.conf config
Instead of having one function for each possible key in lxc.conf which
doesn't really scale and requires an API update for every new key,
switch to a generic lxc_get_global_config_item() function which takes a
key name as argument.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-10 11:16:06 -05:00
Stéphane Graber
9e8be78115 Add lxc.default_config to LXC's own config
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-10 11:16:03 -05:00
Stéphane Graber
2b425d512a Rename all lxc.conf options to lxc.<key>
This is a first step in bringing the lxc.conf configfile in line with
the container's format.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-10 11:15:53 -05:00
KATOH Yasufumi
d7768b9096 doc: Remove unneeded "SEE ALSO" part in lxc-ls(1)
The old version of lxc-ls is the wrapper of ls(1). But now it is
python script, so "see also ls(1)" is not needed.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-09 10:35:07 -05:00
Stephen Ayotte
d659597e03 Support large bdevs on 32-bit; MB units by default.
Change all instances of "unsigned long" where referring to a bdev size
to uint64_t; this fixes some overflows on 32-bit machines, where
"unsigned long" is uint32_t. Support all unit-sizes supported by LVM
except 's' and 'e' [bkmgt]. Print a warning and use default bdev-size if
invalid unit-size specified.

Signed-off-by: Stephen Ayotte <stephen.ayotte@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-08 12:31:50 -05:00
Qiang Huang
6f63931122 lxc-ls.sgml.in: fix the format issue
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-08 09:49:16 -05:00
Stéphane Graber
2e3b013411
travis: Use NOTICE instead of PRIVMSG on IRC
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-07 12:14:15 -05:00
Stéphane Graber
ddb9359321
Move pkg-config init to way earlier
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-07 11:24:36 -05:00
Jiri Slaby
cc33e055dd lxc-opensuse: add perl-base to prerequisities
It is needed by insserv-compat.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-07 11:24:05 -05:00
Jiri Slaby
12dcc8928f configure: find seccomp using pkg-config
On suse we have the header in a subdir inside /usr/include, so
pkgconfig has to be used to find out proper CFLAGS.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-07 11:23:57 -05:00
Stéphane Graber
baeebd0d79
man: Fix comment syntax
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-07 10:26:16 -05:00
Serge Hallyn
d745b820c2 lxclock: fix stupid scope error
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-07 09:20:25 -06:00
Serge Hallyn
8c9c2c6d74 lxclock: fall back to /tmp if xdg_rundir is not writeable
This happens for instance if you run a test under sudo which
then runs lxc commands under 'su - <someuser>'

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-07 09:22:52 -05:00
KATOH Yasufumi
38d626f8be doc: Update Japanese lxc-stop(1), lxc.conf(5), lxc-start-ephemeral(1)
* nokill option of lxc-stop (commit 84fbfcb434)
* lxc.haltsignal in lxc.conf (commit f0f1d8c076)
* fix sgml (commit d438f5a0ef)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-07 09:22:06 -05:00
S.Çağlar Onur
29b10e4f47 Setting lxc.console = none causes startup failures for the containers that runs in user namespace
Setting "lxc.console = none" causes following failure during startup

      lxc-start 1389039861.061 INFO     lxc_start_ui - using rcfile lxcpath/original/config
      lxc-start 1389039861.062 INFO     lxc_confile - read uid map: type u nsid 0 hostid 260000 range 10000
      lxc-start 1389039861.062 INFO     lxc_confile - read uid map: type g nsid 0 hostid 260000 range 10000
      lxc-start 1389039861.062 WARN     lxc_log - lxc_log_init called with log already initialized
      lxc-start 1389039861.065 INFO     lxc_lsm - LSM security driver AppArmor
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/0' (5/6)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/7' (7/8)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/8' (9/10)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/9' (11/12)
      lxc-start 1389039861.066 INFO     lxc_conf - tty's configured
      lxc-start 1389039861.066 DEBUG    lxc_start - sigchild handler set
      lxc-start 1389039861.066 ERROR    lxc_conf - Error chowning
      lxc-start 1389039861.066 ERROR    lxc_conf - Failed to chown
      lxc-start 1389039861.066 ERROR    lxc_start - Failed to shift tty into container
      lxc-start 1389039861.066 ERROR    lxc_start - failed to initialize the container
      lxc-start 1389039861.067 INFO     lxc_monitor - using monitor sock name lxc/0863ffed81827105/lxcpath

fix it by checking the console.name before using it.

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-06 18:11:14 -06:00
S.Çağlar Onur
65b8ba1a4e disable generating documentation for travis
doxygen and graphviz causes travis vm to download ~400 MB from internet
and causes travis builds to timeouts occasionally.

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-06 15:26:17 -05:00
Dwight Engen
89f79f6baf allow multiple types of init scripts to be configured
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-06 14:24:53 -05:00
Qiang Huang
6424619e40 configure.ac: add docbook-to-man to dbparsers
Debian and Ubuntu uses docbook2x-man, but some other distr like suse
uses docbook-to-man. I think all of them should work on LXC.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-06 13:02:19 -06:00
Dwight Engen
f0f1d8c076 add lxc.haltsignal for soft shutdown
- use this in the busybox template since busybox's init expects
  to receive SIGUSR1 to halt

- fix lxc.stopsignal to be output by write_config so lxcapi_clone()
  and lxcapi_save_config() will output it

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-06 12:49:44 -05:00
Nick Huber
19a85f1f8f Use the cgroup name for cpuset for lxc-ps
On my Ubuntu 13.10 system, lxc-ps was always giving empty output. The
output of /proc/$initpid/cgroup was

11:name=systemd:/user/1000.user/c3.session
10:hugetlb:/container
9:perf_event:/container
8:blkio:/container
7:freezer:/container
6:devices:/container
5:memory:/container
4:cpuacct:/container
3:cpu:/container
2:cpuset:/container

Using the cpuset line should be a safer option.

Signed-off-by: Nick Huber <nicholashuber@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-06 10:34:51 -05:00
Qiang Huang
d438f5a0ef lxc-start-ephemeral: fix the man page
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-06 10:21:11 -05:00
Dwight Engen
84fbfcb434 rename lxc-stop shutdown argument to nokill
This makes the arguments between lxc-stop and lxc-autostart more
consistent, so that --shutdown doesn't have two different meanings.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-06 10:06:05 -05:00