Changeset 37e71e4f


Ignore:
Timestamp:
07/07/14 09:58:40 (10 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, releng/10.0.3, releng/10.1, releng/10.1.1, releng/10.1.2
Children:
9b4817eb
Parents:
13cc681a
Message:

Add new -J option to pbi_add. Now we can create a new jail on the fly
and install PBIs into it automatically.

While here, add --autoipv4 option to warden create, which allows it to
automatically assign a IPv4 address from the pool

Location:
src-sh
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src-sh/pbi-manager/man1/pbi_add.1

    r0d4d3a70 r37e71e4f  
    1010.Op Fl i 
    1111.Op Fl j 
     12.Op Fl J 
    1213.Op Fl l 
    1314.Op Fl v 
     
    3940.It Fl j Ar jail 
    4041Install target PBI into jail <jail> 
     42.It Fl J 
     43Create a new jail automatically via Warden, and install PBI into it 
    4144.It Fl v 
    4245Enable verbose output 
  • src-sh/pbi-manager/pbi-manager

    r0098fdc r37e71e4f  
    3333  -i             -- Display information about this PBI 
    3434  -j <jail>      -- Install into jail 
     35  -J             -- Create a new jail (via warden) and install PBI into it 
    3536  -l             -- Display LICENSE text 
    3637  -v             -- Enable verbose output 
     
    190191                -j)     shift 
    191192                        set_jail_mode "$1" 
     193                        ;; 
     194                -J)     PBI_CREATE_NEW_JAIL="YES" 
    192195                        ;; 
    193196            --meta)     PBI_ADD_METADISPLAY="YES"  
     
    568571} 
    569572 
     573# Function to create a new jail via warden and setup install into it 
     574do_pbi_create_new_jail() { 
     575        # Look for the first available pbijail nickname 
     576        num=0 
     577        while : 
     578        do 
     579                warden list | grep -q "^pbijail${num}" 
     580                if [ $? -ne 0 ] ; then break ; fi 
     581                num=`expr $num + 1` 
     582        done 
     583 
     584        warden create pbijail${num} --autoipv4  --startauto --portjail 
     585        if [ $? -ne 0 ] ; then 
     586                exit_err "Failed creating new jail automatically!" 
     587        fi 
     588 
     589        set_jail_mode "pbijail${num}" 
     590} 
     591 
    570592# Start the pbi_add process 
    571593pbi_add_init() { 
     
    584606                exit_trap 
    585607        fi 
     608 
     609        if [ -n "${PBI_CREATE_NEW_JAIL}" ] ; then 
     610                do_pbi_create_new_jail 
     611        fi 
     612 
    586613        do_pbi_pkg_add 
    587614        exit_trap 
  • src-sh/warden/bin/warden

    rc63ce1b r37e71e4f  
    551551Available Flags: 
    552552  -32                          Create 32bit jail on 64bit system 
     553  --autoipv4                   Use the next available IPv4 address from the pool 
    553554  --ipv4=<ip/mask>             Set primary IPv4 address for jail 
    554555  --ipv6=<ip/mask>             Set primary IPv6 address for jail 
     
    10251026             --ports) PORTS="YES" ;; 
    10261027             --startauto) AUTOSTART="YES" ;; 
     1028             --autoipv4) AUTOIPV4="YES" ;; 
    10271029             --vanilla) VANILLA="YES" ;; 
    10281030             --portjail) JAILTYPE="portjail" ;; 
     
    11451147           if [ -e "${JDIR}/${JAILNAME}" ]; then exit_err "A jail with this name already exists!"; fi 
    11461148 
     1149           if [ -n "$AUTOIPV4" ] ; then 
     1150             # Get the pool addresses loaded 
     1151             if [ -z "$IP4POOL" ] ; then IP4POOL="$DEFAULT_IP4POOL"; fi 
     1152             curNum="`echo $IP4POOL | cut -d '.' -f 4`" 
     1153             baseIP="`echo $IP4POOL | cut -d '.' -f 1-3`" 
     1154             if [ ! $(is_num "$curNum") ] ; then exit_err "Invalid IPv4 pool number"; fi 
     1155 
     1156             # Get the next available IPv4 Address in this pool 
     1157             while : 
     1158             do 
     1159               ipConflict=0 
     1160               for i in `ls -d ${JDIR}/.*.meta 2>/dev/null` 
     1161               do 
     1162                if [ ! -e "${i}/ipv4" ] ; then continue ; fi 
     1163                if [ "`cat ${i}/ipv4`" = "${baseIP}.${curNum}/24" ] ; then 
     1164                   ipConflict=1 ; break 
     1165                fi 
     1166               done 
     1167               if [ $ipConflict -eq 0 ] ; then break; fi 
     1168               curNum=`expr $curNum + 1` 
     1169             done 
     1170 
     1171             # Set the next IP address 
     1172             IP4="${baseIP}.${curNum}/24" 
     1173           fi 
     1174 
    11471175           export IP4 IP6 
    11481176 
  • src-sh/warden/conf/warden.conf

    rc63ce1b r37e71e4f  
    1212JDIR: /usr/jails 
    1313 
    14 # Assign new IPv4 addresses from the following address space 
    15 # This is used when doing bulk-jail creation, and automatic PBI 
    16 # jail creation 
    17 IP4POOL: 127.0.0.2 
     14# When automatically creating jails with unspecified IPv4 addresses, use this 
     15# address at the starting point for new addresses 
     16IP4POOL: 192.168.0.220 
  • src-sh/warden/scripts/backend/functions.sh

    rc63ce1b r37e71e4f  
    3636DEFAULT_IP4POOL="$(grep ^IP4POOL: /usr/local/etc/warden.conf | cut -d' ' -f2)" 
    3737if [ -z "$DEFAULT_IP4POOL" ] ; then 
    38    DEFAULT_IP4POOL="127.0.0.2" 
     38   DEFAULT_IP4POOL="192.168.0.220" 
    3939fi 
    4040export DEFAULT_IP4POOL 
Note: See TracChangeset for help on using the changeset viewer.