]> Frank Brehm's Git Trees - config/samara/etc.git/commitdiff
committing changes in /etc after emerge run
authorfbrehm <fbrehm@samara.profitbricks.localdomain>
Mon, 16 Apr 2012 13:38:34 +0000 (15:38 +0200)
committerroot <root@samara.profitbricks.localdomain>
Mon, 16 Apr 2012 13:38:34 +0000 (15:38 +0200)
Package changes:
+sys-apps/ppd-9999

._cfg0000_ppd.cfg.default [new file with mode: 0644]
.etckeeper
conf.d/ppd [new file with mode: 0644]
cron.d/py-provisioning-daemon [new file with mode: 0644]
init.d/ppd [new file with mode: 0755]
multipath.conf [new file with mode: 0644]
ppd.cfg [new file with mode: 0644]
sudoers.d/ppd [new file with mode: 0644]
udev/rules.d/60-kpartx.rules [new file with mode: 0644]
udev/rules.d/60-persistent-storage-dm.rules [new file with mode: 0644]
udev/rules.d/70-iscsi.rules [new file with mode: 0644]

diff --git a/._cfg0000_ppd.cfg.default b/._cfg0000_ppd.cfg.default
new file mode 100644 (file)
index 0000000..4c946bc
--- /dev/null
@@ -0,0 +1,230 @@
+[General]
+
+; type of operations of this provisioning daemon
+; possible values: 'pserver', 'storage', 'loadbalancer', 'gw'
+;operation_type = pserver
+
+; Base directory for all operations in file system
+base_dir = /var/lib/py-provisioning-daemon
+
+; directory containing all trace files
+trace_dir = %(base_dir)s/trace
+
+; performing tracing of jobs
+do_trace = yes
+
+; where to find provisioning plugins
+plugin_dir = /usr/share/py-provisioning-daemon/plugins
+
+; The log file for stderr messages
+error_log = %(base_dir)s/error.log
+
+; the port number, where the daemon is listening
+;port = 8073
+
+; an IP address (IPv4 or IPv6) to use for socket bind to listen on a port,
+; if not given or '*', the listening socket will binded to all
+; available IP addresses (0.0.0.0 and ::)
+;listen_address = *
+
+; The client port to use for broadcasting messages to peers
+; it may not be the same like port
+;udp_client_port = 8074
+
+; the maximum number of child processes (must be between 1 and 999)
+;max_children = 20
+
+; maximum timeout on collecting finished children per stage
+; if there are too many child processes
+; on every stage an increased level of signal is sent
+; to all child processes (None -> SIGHUP -> SIGTERM -> SIGKILL)
+;timeout_collect_childs = 10
+
+; the user, the daemon should running as
+;user = ppd
+
+; the group, the daemon should running as
+;group = users
+
+; flag for logging all XML traffic under base_dir
+;xml_log = False
+
+; buffer_size: The size of the buffer for receiving data from sockets
+;buffer_size = 8192
+
+; the name of the current node if it shoul be different
+; to socket.gethostname()
+;node_name = Pserver22
+
+; the broadcast address, where to send all UDP peer request
+; and publishing messages
+; IT MUST BE SET
+broadcast_address = 10.33.255.255
+
+; an own address to publish as the IP of the current node
+; to publish to the other peers
+; IT MUST BE SET
+mgmt_address = 10.33.64.52
+
+; request_timeout: timout in communication with requestor (if working
+; as a socket client)
+;request_timeout = 30
+
+; the standard time intervall for looking for new requests
+;polling_interval = 0.2
+
+; the maximum number of queued connections (between 0 and 5)
+;request_queue_size = 5
+
+; interval in seconds between publications of the current node to the peers
+;minimum_publishing_interval = 3600
+
+; maximum second to change the publishing_interval from one publication
+; to the next publication in a randomized way
+;publishing_jitter = 300
+
+; the minimum interval in second from one publication of itself
+; to the next publication, to avoid broadcast storms
+;minimum_publishing_interval = 60
+
+; timeout for receiving UDP responses
+;udp_rcv_timeout = 2
+
+; number of tries to get a response to UDP requests
+;udp_rcv_tries = 3
+
+; a maybe additional storage server configuration file
+;add_storage_server_config =
+
+; flag, whether to get the informations from configuration files
+; instead from SOAP PdtService 
+;info_from_config = False
+
+[ProvWebService]
+
+; The URL of the provisioning web service for sending status messages
+url = https://appserver/ProvisioningService/ProvisioningServiceWSService
+
+; the user name for authentication to the web service
+user = profitbricks-vcb
+
+; the password for authentication to the web service
+pwd = ProfitBricks-VCB
+
+; timeout on connection to the webservice
+timeout = 30
+
+[PdtService]
+
+; The URL of the WSDL of the PDT Web service
+;url = https://appserver/PDTService/PDTService?wsdl
+
+; the user name for authentication to the web service
+;user = profitbricks-dms
+
+; the password for authentication to the web service
+;pwd = ProfitBricks-DMS
+
+[Handler]
+; some parameters valid for all handlers (both pserver and storage)
+
+; maximum tries to wait for existence of a device
+;max_tries_device_wait = 6
+
+; initial delay to wait for existence of a device in seconds
+;init_delay_device_wait = 1
+
+; increasing time in seconds for delay to wait for existence of a device
+;inc_delay_device_wait = 2
+
+[Pserver]
+; put here options only valid on a pserver
+
+; lockfile for locking iSCSI refresh (shared using with pb_storage_vol_refresh)
+;iscsi_refresh_lockfile = /tmp/iscsi-refresh.lock
+
+; flag for using Device-Mapper things
+;perform_dmsetup = False
+
+[Storage]
+
+; Enable compression on newly created ZFS volumes
+;compress_volume = false
+
+; a local IP address (or hostname), what could be used as target
+; address for ZFS send
+;sync_address = storageXY-ib0
+
+; Name of the ZFS Pool as the root of all ZFS volumes
+;zfs_pool = storage/volumes
+
+; name of a mounted filesystem for temporary purposes
+; (e.g. template files to convert). It must exists.
+;temp_fs = /storage/templates
+
+; the name of the iSCSI target group
+;iscsi_target_group = cloudstorage
+
+; enable replication in creating storage volumes
+; Note: Disable on a backup host
+;enable_replication = True
+
+; hostname or IP address of the master host for sndradm (replication)
+;host_master = storage01-ib
+
+; hostname or IP address of the backup host for sndradm (replication)
+;host_backup = storage02-ib
+
+; URI of the backup host to send the
+; commands to create the backup volume
+;host_backup_mgmt = vcb://storage02:8073
+
+; defines the role in the replication system (master or backup)
+;replication_role = master
+
+; Should be created a view to standard targets (host group = all,
+;     target group = all) for a new created iSCSI LUN?
+;add_lun_std_view = False
+
+; the delay in seconds between logical removing a volume (setting the remove property)
+; and the real destroying the volume. Default: 48 hours
+;remove_delay = 172800
+
+; path to the dump-device.sh script for dumping a device to STDOUT
+;dump_device_bin = /opt/profitbricks/bin/dump-device.sh
+
+[FtpServer]
+
+; some data to get informations about template images and
+; to stream them to STDOUT via SSH
+
+Host = de-dc1-c1-ftp
+; hostname or IP address of the FTP server, where the SSH daemon is accessible
+
+User = ppd
+; the username on the FTP server to execute the image scripts as root by sudo
+
+ImageInfo = /home/ppd/work/image-info
+; complete path name of the image info script to get the real size of the image
+
+ImageStream = /home/ppd/work/image-stream
+; complete path name of the image stream script to stream the converted image to STDOUT
+
+[StorageServer]
+
+; in this chapter is a list of all available storage servers
+; keys are free chaicable, but unique names of storage servers,
+; values are the URI's of the appropriate machines.
+; Currently the only supported URI schema is vcb://,
+; whats look like 'vcb://ip-adress[:port], where the standard port
+; is 8073
+
+Storage01 = vcb://10.1.65.10:8073
+Storage02 = vcb://10.1.65.20:8073
+Storage16 = vcb://10.1.64.116:8073
+Storage17 = vcb://10.1.64.117:8073
+
+
+
+
+; vim: filetype=cfg fileencoding=utf-8 ts=4 expandtab
index 7f4d5634c1c253d7cf6ac865cf9997aa7ac5de18..41d6fe78874bd3ecd33bf24d723635c2cfd7114b 100755 (executable)
@@ -36,6 +36,7 @@ mkdir -p './texmf/dvipdfm/config'
 mkdir -p './texmf/dvips.d'
 mkdir -p './unixODBC/ODBCDataSources'
 maybe chmod 0755 '.'
+maybe chmod 0644 './._cfg0000_ppd.cfg.default'
 maybe chmod 0700 './.etckeeper'
 maybe chmod 0600 './.gitignore'
 maybe chmod 0600 './.pwd.lock'
@@ -265,6 +266,7 @@ maybe chmod 0644 './conf.d/ntpd'
 maybe chmod 0644 './conf.d/openvpn'
 maybe chmod 0644 './conf.d/pciparm'
 maybe chmod 0644 './conf.d/postgresql-9.1'
+maybe chmod 0644 './conf.d/ppd'
 maybe chmod 0644 './conf.d/pydoc-2.7'
 maybe chmod 0644 './conf.d/pydoc-3.2'
 maybe chmod 0644 './conf.d/rfcomm'
@@ -527,6 +529,7 @@ maybe chgrp mail './courier/authlib/authpgsqlrc.dist'
 maybe chmod 0660 './courier/authlib/authpgsqlrc.dist'
 maybe chmod 0755 './cron.d'
 maybe chmod 0644 './cron.d/.keep_sys-process_vixie-cron-0'
+maybe chmod 0644 './cron.d/py-provisioning-daemon'
 maybe chmod 0750 './cron.daily'
 maybe chmod 0644 './cron.daily/.keep_sys-process_cronbase-0'
 maybe chmod 0755 './cron.daily/00-logwatch'
@@ -1106,6 +1109,7 @@ maybe chmod 0755 './init.d/pciparm'
 maybe chmod 0755 './init.d/php-fpm'
 maybe chmod 0755 './init.d/postfix'
 maybe chmod 0755 './init.d/postgresql-9.1'
+maybe chmod 0755 './init.d/ppd'
 maybe chmod 0755 './init.d/procfs'
 maybe chmod 0755 './init.d/pwcheck'
 maybe chmod 0755 './init.d/pydoc-2.7'
@@ -1271,6 +1275,7 @@ maybe chmod 0644 './motd.tail'
 maybe chmod 0644 './mtab'
 maybe chmod 0755 './mtools'
 maybe chmod 0644 './mtools/mtools.conf'
+maybe chmod 0644 './multipath.conf'
 maybe chmod 0755 './mysql'
 maybe chmod 0644 './mysql/my.cnf'
 maybe chmod 0644 './mysql/mysqlaccess.conf'
@@ -1469,6 +1474,7 @@ maybe chmod 0644 './postfix/master.cf'
 maybe chmod 0600 './postfix/saslpass'
 maybe chmod 0755 './postgresql-9.1'
 maybe chmod 0644 './postgresql-9.1/.keep_dev-db_postgresql-base-9.1'
+maybe chmod 0644 './ppd.cfg'
 maybe chmod 0644 './ppd.cfg.default'
 maybe chmod 0755 './ppp'
 maybe chmod 0600 './ppp/chap-secrets'
@@ -1721,6 +1727,8 @@ maybe chmod 0400 './ssl/postfix/server.pem'
 maybe chmod 0700 './ssl/private'
 maybe chmod 0644 './ssl/private/.keep_dev-libs_openssl-0'
 maybe chmod 0440 './sudoers'
+maybe chmod 0755 './sudoers.d'
+maybe chmod 0644 './sudoers.d/ppd'
 maybe chmod 0644 './sysctl.conf'
 maybe chmod 0755 './sysctl.d'
 maybe chmod 0644 './sysctl.d/libvirtd.conf'
@@ -1827,6 +1835,9 @@ maybe chmod 0644 './timidity.cfg'
 maybe chmod 0755 './udev'
 maybe chmod 0755 './udev/rules.d'
 maybe chmod 0644 './udev/rules.d/.keep_sys-fs_udev-0'
+maybe chmod 0644 './udev/rules.d/60-kpartx.rules'
+maybe chmod 0644 './udev/rules.d/60-persistent-storage-dm.rules'
+maybe chmod 0644 './udev/rules.d/70-iscsi.rules'
 maybe chmod 0644 './udev/rules.d/70-persistent-cd.rules'
 maybe chmod 0644 './udev/rules.d/70-persistent-net.rules'
 maybe chmod 0644 './udev/rules.d/77-mm-ericsson-mbm.rules'
diff --git a/conf.d/ppd b/conf.d/ppd
new file mode 100644 (file)
index 0000000..533a9b3
--- /dev/null
@@ -0,0 +1,53 @@
+# Defaults for py-provisioning-daemon initscript
+# sourced by /etc/init.d/ppd and /usr/sbin/ppd-watchdog
+# installed at /etc/default/ppd by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Verbosity of the init script
+VERBOSE=yes
+
+# Path to the executable ppd
+#PPD="/usr/sbin/ppd"
+
+# Path to the watchdog executable
+#PPD_WATCHDOG="/usr/sbin/ppd-watchdog"
+
+# Working directory of ppd
+#PPD_DIR="/var/lib/py-provisioning-daemon"
+
+# Log file of the PPD watchdog process
+#WATCHDOG_LOG="/var/log/ppd-watchdog.log"
+
+# Watchdog PID file
+#WATCHDOG_PID_FILE="/var/run/ppd-watchdog.pid"
+
+# Start-stop-logfile
+#START_LOG="/var/log/ppd-start.log"
+
+# PID file of PPD itself
+#PPD_PIDFILE="${PPD_DIR}/ppd.pid"
+
+# Debug mode for the PPD watchdog process (0 or 1)
+#DEBUG=1
+
+# Syslog facility for the PPD watchdog process
+#LOG_FACILITY="daemon"
+
+# if an existent file, no watchdog will started, only PPD itself
+#NO_WATCHDOG_FILE="${PPD_DIR}/no-watchdog"
+
+# enable external watchdog
+#ENABLE_EXTERNAL_WATCHDOG=yes
+
+# Main configuration file of ppd
+#PPD_CONFIG="/etc/ppd.cfg"
+
+# Additional arguments that are passed to the Daemon.
+#DAEMON_ARGS="-v -F ${LOG_FACILITY}"
+#DAEMON_ARGS="-v"
+#DAEMON_ARGS=""
+
+# vim: ts=4 expandtab fileencoding=utf-8 filetype=sh
diff --git a/cron.d/py-provisioning-daemon b/cron.d/py-provisioning-daemon
new file mode 100644 (file)
index 0000000..e14824c
--- /dev/null
@@ -0,0 +1,8 @@
+# /etc/cron.d/py-provisioning-daemon: crontab entries for the py-provisioning-daemon
+
+SHELL=/bin/sh
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+1-59/10  * * * * ppd   test -x /opt/profitbricks/bin/perform-ppd-trace-data.sh && /opt/profitbricks/bin/perform-ppd-trace-data.sh &>/dev/null
+
+# vim: filetype=crontab ts=4
diff --git a/init.d/ppd b/init.d/ppd
new file mode 100755 (executable)
index 0000000..da92cbc
--- /dev/null
@@ -0,0 +1,184 @@
+#!/sbin/runscript
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="reload watchdogrestart watchdogcrashrestart"
+
+# Path to the daemon
+PPD="/usr/sbin/ppd"
+
+# Path to the watchdog executable
+PPD_WATCHDOG="/usr/sbin/ppd-watchdog"
+
+# Introduce a short description here
+DESC="PB python provisioning daemon"
+
+# Working directory
+PPD_DIR="/var/lib/py-provisioning-daemon"
+
+# enable external watchdog
+ENABLE_EXTERNAL_WATCHDOG=yes
+
+# Watchdog PID file
+WATCHDOG_PID_FILE="/var/run/ppd-watchdog.pid"
+
+# PID file of PPD itself
+PPD_PIDFILE="${PPD_DIR}/ppd.pid"
+
+WATCHDOG_NAME="ppd-watchdog"
+LOG_FACILITY="daemon"
+
+#-------------------------------------------------------------------
+depend() {
+       need net netmount logger
+}
+
+#-------------------------------------------------------------------
+wait_on_pid() {
+
+    local pid="${1}"
+
+    log "Waiting for PID ${pid} for ending"
+
+    running=0
+    if kill -0 "${pid}" 2>/dev/null ; then
+        running=1
+    fi
+
+    while [ "${running}" = "1" ] ; do
+
+        sleep 1
+        if kill -0 "${pid}" 2>/dev/null ; then
+            running=1
+        else
+            running=0
+        fi
+
+    done
+
+}
+
+#-------------------------------------------------------------------
+start_watchdog() {
+       if [ "${ENABLE_EXTERNAL_WATCHDOG}" != "yes" ] ; then
+               return 0
+       fi
+       ebegin "Starting ${DESC} watchdog"
+       start-stop-daemon \
+               --start \
+               --background \
+               --make-pidfile \
+               --pidfile "${WATCHDOG_PID_FILE}" \
+               --exec "${PPD_WATCHDOG}" \
+               --name "${WATCHDOG_NAME}"
+       eend $? "Failed to Start ${DESC} watchdog"
+}
+
+#-------------------------------------------------------------------
+start_ppd() {
+       ebegin "Starting ${DESC}"
+       start-stop-daemon --start --pidfile ${PPD_PIDFILE} --exec ${PPD} ${DAEMON_ARGS}
+       eend $? "Failed to Start ${DESC}"
+}
+
+#-------------------------------------------------------------------
+stop_ppd() {
+
+    local signal="-s TERM"
+    if [ "${1}" = "graceful" ] ; then
+        signal="-s HUP"
+    fi
+
+    ebegin "Stopping ${DESC}"
+    if [ -f "${PPD_PIDFILE}" ] ; then
+        PID=$(cat "${PPD_PIDFILE}")
+    else
+        PID=$(pidof 'python /usr/sbin/ppd')
+    fi
+
+    if [ -n "${PID}" ]; then
+        kill ${signal} ${PID}
+        eend $? "Failed to Stop ${DESC}"
+    else
+        ewarn "${DESC} not running"
+    fi
+
+}
+
+#-------------------------------------------------------------------
+stop_watchdog() {
+
+    if [ "${ENABLE_EXTERNAL_WATCHDOG}" = "yes" ] ; then
+        ebegin "Stopping ${DESC} watchdog"
+        start-stop-daemon \
+            --stop \
+            --pidfile "${WATCHDOG_PID_FILE}" \
+            --name "${WATCHDOG_NAME}"
+               eend $? "Failed to Stop ${DESC} watchdog"
+    else
+        start-stop-daemon \
+            --stop \
+            --pidfile "${WATCHDOG_PID_FILE}" \
+            --name "${WATCHDOG_NAME}" \
+            --quiet
+    fi
+}
+
+#-------------------------------------------------------------------
+watchdogrestart() {
+
+    local noisy="n"
+    if [ "${1}" = "noisy" ] ; then
+        noisy="y"
+    fi
+
+    stop_ppd
+    start_ppd
+    if [ "${noisy}" = "y" ]; then
+        logger -i -t ppd-init \
+                -p "${LOG_FACILITY}".warning \
+                "${DESC} died, restarted"
+    fi
+
+}
+
+#-------------------------------------------------------------------
+watchdogcrashrestart() {
+       watchdogrestart noisy
+}
+
+#-------------------------------------------------------------------
+start() {
+       start_ppd || return 1
+       start_watchdog || return 2
+}
+
+#-------------------------------------------------------------------
+stop() {
+       stop_watchdog || return 2
+       stop_ppd
+}
+
+#-------------------------------------------------------------------
+restart() {
+    stop_watchdog
+    stop_ppd
+    start_ppd || return 1
+    start_watchdog || return 2
+}
+
+#-------------------------------------------------------------------
+reload() {
+    #stop_ppd graceful
+    local PID
+    if [ -f "${WATCHDOG_PID_FILE}" ] ; then
+        PID=$(cat "${WATCHDOG_PID_FILE}")
+        kill -s HUP "${PID}"
+    else
+        PID=$(pidof 'python /usr/sbin/ppd')
+        wait_on_pid "${PID}"
+        start_ppd
+    fi
+}
+
+# vim: ts=4 filetype=gentoo-init-d fileencoding=utf-8
diff --git a/multipath.conf b/multipath.conf
new file mode 100644 (file)
index 0000000..c98b720
--- /dev/null
@@ -0,0 +1,67 @@
+blacklist {
+}
+defaults {
+#       # name    : failback
+#       # scope   : multipathd
+#       # desc    : tell the daemon to manage path group failback, or not to.
+#       #           0 means immediate failback, values >0 means deffered
+#       #           failback expressed in seconds.
+#       # values  : manual|immediate|n > 0
+#       # default : manual
+#       #
+        failback        10
+#       # name    : selector
+#       # scope   : multipath
+#       # desc    : the default path selector algorithm to use
+#       #           these algorithms are offered by the kernel multipath target
+#       # values  : "round-robin 0"
+#       # default : "round-robin 0"
+#       #
+#       selector        "round-robin 0"
+#       # name    : path_grouping_policy
+#       # scope   : multipath
+#       # desc    : the default path grouping policy to apply to unspecified
+#       #           multipaths
+#       # values  : failover           = 1 path per priority group
+#       #           multibus           = all valid paths in 1 priority group
+#       #           group_by_serial    = 1 priority group per detected serial
+#       #                                number
+#       #           group_by_prio      = 1 priority group per path priority
+#       #                        w        value
+#       #           group_by_node_name = 1 priority group per target node name
+#       # default : failover
+#       #
+#       path_grouping_policy    failover
+#       # name    : user_friendly_names
+#       # scope   : multipath
+#       # desc    : If set to "yes", using the bindings file
+#       #           /var/lib/multipath/bindings to assign a persistent and
+#       #           unique alias to the multipath, in the form of mpath<n>.
+#       #           If set to "no" use the WWID as the alias. In either case
+#       #           this be will be overriden by any specific aliases in this
+#       #           file.
+#       # values  : yes|no
+#       # default : no
+#       user_friendly_names no
+
+#       # name    : path_checker, checker
+#       # scope   : multipath & multipathd
+#       # desc    : the default method used to determine the paths' state
+#       # values  : readsector0|tur|emc_clariion|hp_sw|directio|rdac|cciss_tur
+#       # default : directio
+#       path_checker directio
+
+#       # name    : no_path_retry
+#       # scope   : multipath & multipathd
+#       # desc    : tell the number of retries until disable queueing, or
+#       #           "fail" means immediate failure (no queueing),
+#       #           "queue" means never stop queueing
+#       # values  : queue|fail|n (>0)
+#       # default : (null)
+        no_path_retry queue
+
+}
diff --git a/ppd.cfg b/ppd.cfg
new file mode 100644 (file)
index 0000000..5a09597
--- /dev/null
+++ b/ppd.cfg
@@ -0,0 +1,50 @@
+[General]
+
+operation_type = storage
+
+base_dir = /var/lib/py-provisioning-daemon
+plugin_dir = /usr/share/py-provisioning-daemon/plugins
+error_log = %(base_dir)s/error.log
+trace_dir = %(base_dir)s/trace
+do_trace = yes
+;port = 8072
+;port = 8073
+request_timeout = 90
+xml_log = True
+max_children = 50
+
+node_name = ${HOSTNAME}
+broadcast_address = 10.1.255.255
+mgmt_address = ${HOST_IP}
+
+;request_timeout = 30
+;polling_interval = 0.2
+;request_queue_size = 5
+
+user = ppd
+group = staff
+
+[Storage]
+
+zfs_pool = storage/volumes
+;iscsi_target_group = cloudstorage
+enable_replication = True
+host_master = storage01-ib
+host_backup = storage02-ib
+host_backup_mgmt = vcb://storage02:8073
+; receive_port_dir = /var/lib/py-provisioning-daemon/zfs-receive
+
+replication_role = master
+
+[ProvWebService]
+url = https://appserver/ProvisioningService/ProvisioningServiceWSService
+user = profitbricks-vcb
+pwd = ProfitBricks-VCB
+timeout = 60
+
+[PdtService]
+url = https://appserver/PDTService/PDTService?wsdl
+user = profitbricks-dms
+pwd = ProfitBricks-DMS
+
+; vim: ts=4 expandtab fileencoding=utf-8 filetype=cfg
diff --git a/sudoers.d/ppd b/sudoers.d/ppd
new file mode 100644 (file)
index 0000000..18fee04
--- /dev/null
@@ -0,0 +1,3 @@
+# Enable commands for ppd (user of the ProfitBricks Python provisioning daemon)
+#ppd   ALL=(root) NOPASSWD: /sbin/dmsetup, /usr/bin/iscsiadm, /sbin/udevadm, /sbin/blockdev, /bin/chown, /sbin/parted, /bin/mount, /bin/umount, /sbin/kpartx, /sbin/losetup, /usr/bin/mkpasswd, /bin/chmod, /sbin/blkid, /sbin/mkswap, /sbin/resize2fs, /sbin/partprobe, /sbin/modprobe, /bin/rm, /usr/bin/ssh-keygen, /usr/share/py-provisioning-daemon/delete_blockdevice.sh, /usr/share/py-provisioning-daemon/rescan_iscsi_bus.sh, /lib/udev/scsi_id
+ppd    ALL=(root) NOPASSWD: ALL
diff --git a/udev/rules.d/60-kpartx.rules b/udev/rules.d/60-kpartx.rules
new file mode 100644 (file)
index 0000000..b8cf8ed
--- /dev/null
@@ -0,0 +1,42 @@
+#
+# persistent links for device-mapper devices
+# only hardware-backed device-mapper devices (ie multipath, dmraid,
+# and kpartx) have meaningful persistent device names
+#
+
+KERNEL!="dm-*", GOTO="kpartx_end"
+ACTION=="remove", GOTO="kpartx_end"
+
+# This is a temporary hack until Debian's dmsetup properly supports "dmsetup
+# export". For more information see: #434241, #487881, #493078
+IMPORT{program}="dmsetup_env %M %m"
+
+ENV{DM_TABLE_STATE}!="LIVE", GOTO="kpartx_end"
+
+ENV{DM_UUID}=="?*", IMPORT{program}=="kpartx_id %M %m $env{DM_UUID}"
+
+OPTIONS="link_priority=50"
+
+# Create persistent links for multipath tables
+ENV{DM_UUID}=="mpath-*", \
+       SYMLINK+="disk/by-id/$env{DM_TYPE}-$env{DM_NAME}"
+
+# Create persistent links for dmraid tables
+ENV{DM_UUID}=="dmraid-*", \
+        SYMLINK+="disk/by-id/$env{DM_TYPE}-$env{DM_NAME}"
+
+# Create persistent links for partitions
+ENV{DM_PART}=="?*", \
+        SYMLINK+="disk/by-id/$env{DM_TYPE}-$env{DM_NAME}-part$env{DM_PART}"
+
+# Create dm tables for partitions
+
+# Deactivated creating of partition devices for DM devices
+#    (Frank + Michael, 2012-01-17)
+#ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="mpath-*", \
+#        RUN+="/sbin/kpartx -a -p -part /dev/$name"
+ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="dmraid-*", \
+        RUN+="/sbin/kpartx -a -p -part /dev/$name"
+
+LABEL="kpartx_end"
+
diff --git a/udev/rules.d/60-persistent-storage-dm.rules b/udev/rules.d/60-persistent-storage-dm.rules
new file mode 100644 (file)
index 0000000..7a767bd
--- /dev/null
@@ -0,0 +1,18 @@
+# Udev rules for device-mapper devices.
+# See /usr/share/doc/dmsetup/README.udev for further information.
+#
+#ENV{DM_UDEV_RULES}=="", GOTO="persistent_storage_dm_end"
+#
+#OPTIONS="link_priority=-100"
+#ENV{DM_UUID}=="DMRAID-*", OPTIONS="link_priority=100"
+#
+#SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}"
+#ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}"
+#
+#ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}!="", GOTO="persistent_storage_dm_end"
+#
+#IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
+#ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
+#ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
+#
+#LABEL="persistent_storage_dm_end"
diff --git a/udev/rules.d/70-iscsi.rules b/udev/rules.d/70-iscsi.rules
new file mode 100644 (file)
index 0000000..a9043b3
--- /dev/null
@@ -0,0 +1,7 @@
+# /etc/udev/rules.d/70-iscsi.rules
+# ENV{ID_MODEL}=="COMSTAR", ENV{ID_SERIAL_SHORT}=="600144f0*", ENV{DEVTYPE}=="disk", SYMLINK="iscsi-$env{ID_SERIAL_SHORT}"
+# ENV{ID_MODEL}=="COMSTAR", ENV{ID_SERIAL_SHORT}=="600144f0*", ENV{DEVTYPE}=="disk", SYMLINK="mapper/$env{ID_SERIAL}"
+# ENV{DM_TYPE}=="scsi", ENV{DM_NAME}=="3600144f0*", ENV{DEVTYPE}=="disk", SYMLINK="iscsi-dm-$env{DM_NAME}"
+
+ENV{ID_MODEL}=="COMSTAR", ENV{ID_SERIAL_SHORT}=="600144f0*"
+