Hi Serge, >> to assist to avoid such problems i would propose to introduce macro >> expansion (of the own tags but also by incorporating the >environment variables) into the configuration argument parser and to provide >some useful basics like the container name. Then one may >use e.g. >> >> lxc.hook.mount = $MYCONTAINER_HOME/hooks/$lxc.name > >That sounds good. Would you be able to post a patch to do this?
I'm very sorry, I'm no C code developer but a system engineer. I understand a lot of different code just from reading and may even point out bugs. Or more abstract things like this :} >And if you had this, you'd be able to simply use lxc-start without >the -s? That sounds worthwhile then. > >Can you show us an example of a pre-parsed config, and the final >executed lxc-start command? I'm using the standard lxc configuration file just for the general setup. The concrete details are in an additional file per container. But a concrete containers extra config file might be a symlink to a file describing the configuration for a class of containers. Also, the container standard config file normally is a symlink to a central version. By cheating around with such symlinks, I'm easily able to test out and migrate then to new configuration scenarios . In my central lxc command script, i don't have realized the expansion of "internal" lxc tags, but of environment variables.There's a section to gather the additional config to the array EXTRA_CONFIG, which is appended later to the arguments of lxc-start. LXCBASE="/etc/lxc" [...] CONTAINERBASE="$LXCBASE/$CONTAINER" [ ! -d "$CONTAINERBASE" ] && LOG "unknown container \"$CONTAINER\" (no LXC basedir found) !" 1>&2 && exit 1 [...] # build/check standard and extra configuration declare -a EXTRA_OPTS [ -e "$CONTAINERBASE/fstab" ] && EXTRA_OPTS=("-s lxc.mount=$CONTAINERBASE/fstab") # use a central fstab if exist EXTRA_CONFIG="$CONTAINERBASE/config.$CONTAINER" [ -f "$EXTRA_CONFIG" ] && while read LINE; do LINE="${LINE%%#*}" # delete comments [ -z "$LINE" ] && continue # skip empty lines TAG=${LINE%%=*}; TAG=`echo $TAG` # split and remove surrounding whitespace VALUE=${LINE##*=}; VALUE=`echo $VALUE`; eval VALUE=$VALUE; # same to and evaluate [ -n "$VALUE" ] && EXTRA_OPTS=("${EXTRA_OPTS[@]}" "-s $TAG=$VALUE") # push to array done <$EXTRA_CONFIG && LOG "extra config processed." [...] LOG "starting container \"$CONTAINER\" ..." lxc-start \ -n $CONTAINER -d \ -l $LXCLOGLEVEL -o "/var/log/lxc/$CONTAINER.log" -c "/var/log/lxc/$CONTAINER.out" \ -f $CONTAINERBASE/config \ -s lxc.utsname=$CONTAINER \ -s lxc.rootfs=$CONTAINERBASE/rootfs \ -s lxc.pivotdir=$CONTAINER \ -s lxc.network.link=$BRIDGE \ -s lxc.network.hwaddr=$HWADDR \ -s lxc.network.veth.pair=$CONTAINER \ -s lxc.mount.entry="$CGROUPPATH/$CONTAINER cgroup none ro,bind 0 0" \ "${EXTRA_OPTS[@]}"; RC=$? [...] An additional config file containing # sample lxc.cgroup.memory.limit_in_bytes = 9G lxc.cgroup.memory.soft_limit_in_bytes = 8G lxc.editor=$EDITOR # just an senseless example for expansion would be translated to the "extra options" -s lxc.cgroup.memory.limit_in_bytes=9G -s lxc.cgroup.memory.soft_limit_in_bytes=8G -s lxc.editor=vim ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ Lxc-users mailing list Lxc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-users