Statistics
| Branch: | Tag: | Revision:

root / daemons / ensure-dirs.in @ 2237687b

History | View | Annotate | Download (4.5 kB)

1 46a8da3b René Nussbaumer
#!/bin/bash
2 46a8da3b René Nussbaumer
3 46a8da3b René Nussbaumer
set -e
4 46a8da3b René Nussbaumer
5 46a8da3b René Nussbaumer
LIBDIR="@LOCALSTATEDIR@/lib"
6 46a8da3b René Nussbaumer
DATADIR="${LIBDIR}/ganeti"
7 46a8da3b René Nussbaumer
RUNDIR="@LOCALSTATEDIR@/run"
8 46a8da3b René Nussbaumer
GNTRUNDIR="${RUNDIR}/ganeti"
9 46a8da3b René Nussbaumer
LOGDIR="@LOCALSTATEDIR@/log"
10 46a8da3b René Nussbaumer
GNTLOGDIR="${LOGDIR}/ganeti"
11 5224330e René Nussbaumer
LOCKDIR="@LOCALSTATEDIR@/lock"
12 46a8da3b René Nussbaumer
13 46a8da3b René Nussbaumer
_fileset_owner() {
14 46a8da3b René Nussbaumer
  case "$1" in
15 46a8da3b René Nussbaumer
    masterd)
16 46a8da3b René Nussbaumer
      echo "@GNTMASTERUSER@:@GNTMASTERDGROUP@"
17 46a8da3b René Nussbaumer
      ;;
18 46a8da3b René Nussbaumer
    confd)
19 46a8da3b René Nussbaumer
      echo "@GNTCONFDUSER@:@GNTCONFDGROUP@"
20 46a8da3b René Nussbaumer
      ;;
21 46a8da3b René Nussbaumer
    rapi)
22 46a8da3b René Nussbaumer
      echo "@GNTRAPIUSER@:@GNTRAPIGROUP@"
23 46a8da3b René Nussbaumer
      ;;
24 5224330e René Nussbaumer
    noded)
25 5224330e René Nussbaumer
      echo "root:@GNTMASTERDGROUP@"
26 5224330e René Nussbaumer
      ;;
27 46a8da3b René Nussbaumer
    daemons)
28 46a8da3b René Nussbaumer
      echo "@GNTMASTERUSER@:@GNTDAEMONSGROUP@"
29 46a8da3b René Nussbaumer
      ;;
30 5224330e René Nussbaumer
    masterd-confd)
31 5224330e René Nussbaumer
      echo "@GNTMASTERUSER@:@GNTCONFDGROUP@"
32 5224330e René Nussbaumer
      ;;
33 46a8da3b René Nussbaumer
    *)
34 46a8da3b René Nussbaumer
      echo "root:root"
35 46a8da3b René Nussbaumer
      ;;
36 46a8da3b René Nussbaumer
  esac
37 46a8da3b René Nussbaumer
}
38 46a8da3b René Nussbaumer
39 5224330e René Nussbaumer
_ensure_file() {
40 5224330e René Nussbaumer
  local file="$1"
41 5224330e René Nussbaumer
  local perm="$2"
42 5224330e René Nussbaumer
  local owner="$3"
43 5224330e René Nussbaumer
44 5224330e René Nussbaumer
  [[ -e "${file}" ]] || return 1
45 5224330e René Nussbaumer
  chmod ${perm} "${file}"
46 5224330e René Nussbaumer
47 5224330e René Nussbaumer
  if ! [[ -z "${owner}" ]]; then
48 5224330e René Nussbaumer
    chown ${owner} "${file}"
49 5224330e René Nussbaumer
  fi
50 5224330e René Nussbaumer
51 5224330e René Nussbaumer
  return 0
52 5224330e René Nussbaumer
}
53 5224330e René Nussbaumer
54 46a8da3b René Nussbaumer
_ensure_dir() {
55 46a8da3b René Nussbaumer
  local dir="$1"
56 46a8da3b René Nussbaumer
  local perm="$2"
57 46a8da3b René Nussbaumer
  local owner="$3"
58 46a8da3b René Nussbaumer
59 5224330e René Nussbaumer
  [[ -d "${dir}" ]] || mkdir "${dir}"
60 5224330e René Nussbaumer
61 5224330e René Nussbaumer
  _ensure_file "${dir}" "${perm}" "${owner}"
62 5224330e René Nussbaumer
}
63 5224330e René Nussbaumer
64 5224330e René Nussbaumer
_gather_files() {
65 5224330e René Nussbaumer
  local path="$1"
66 5224330e René Nussbaumer
  local perm="$2"
67 5224330e René Nussbaumer
  local user="$3"
68 5224330e René Nussbaumer
  local group="$4"
69 5224330e René Nussbaumer
70 5224330e René Nussbaumer
  shift 4
71 5224330e René Nussbaumer
72 5224330e René Nussbaumer
  find "${path}" -type f "(" "!" -perm ${perm} -or "(" "!" -user ${user} -or \
73 5224330e René Nussbaumer
       "!" -group ${group} ")" ")" "$@"
74 5224330e René Nussbaumer
}
75 5224330e René Nussbaumer
76 5224330e René Nussbaumer
_ensure_datadir() {
77 b370482d René Nussbaumer
  local full_run="$1"
78 b370482d René Nussbaumer
79 5224330e René Nussbaumer
  _ensure_dir ${DATADIR} 0755 "$(_fileset_owner masterd)"
80 5224330e René Nussbaumer
  _ensure_dir ${DATADIR}/queue 0700 "$(_fileset_owner masterd)"
81 5224330e René Nussbaumer
  _ensure_dir ${DATADIR}/queue/archive 0700 "$(_fileset_owner masterd)"
82 5224330e René Nussbaumer
  _ensure_dir ${DATADIR}/uidpool 0750 "$(_fileset_owner noded)"
83 fdd9ac5b Michael Hanselmann
  _ensure_dir ${DATADIR}/rapi 0750 "$(_fileset_owner rapi)"
84 5224330e René Nussbaumer
85 5224330e René Nussbaumer
  # We ignore these files if they don't exists (incomplete setup)
86 5224330e René Nussbaumer
  _ensure_file ${DATADIR}/cluster-domain-secret 0640 \
87 5224330e René Nussbaumer
               "$(_fileset_owner masterd)" || :
88 5224330e René Nussbaumer
  _ensure_file ${DATADIR}/config.data 0640 "$(_fileset_owner masterd-confd)" || :
89 5224330e René Nussbaumer
  _ensure_file ${DATADIR}/hmac.key 0440 "$(_fileset_owner confd)" || :
90 5224330e René Nussbaumer
  _ensure_file ${DATADIR}/known_hosts 0644 "$(_fileset_owner masterd)" || :
91 5224330e René Nussbaumer
  _ensure_file ${DATADIR}/rapi.pem 0440 "$(_fileset_owner rapi)" || :
92 fdd9ac5b Michael Hanselmann
  _ensure_file ${DATADIR}/rapi/users 0640 "$(_fileset_owner rapi)" || :
93 5224330e René Nussbaumer
  _ensure_file ${DATADIR}/server.pem 0440 "$(_fileset_owner masterd)" || :
94 5224330e René Nussbaumer
  _ensure_file ${DATADIR}/queue/serial 0600 "$(_fileset_owner masterd)" || :
95 5224330e René Nussbaumer
96 5224330e René Nussbaumer
  # To not change the utils.LockFile object
97 5224330e René Nussbaumer
  touch ${DATADIR}/queue/lock
98 5224330e René Nussbaumer
  _ensure_file ${DATADIR}/queue/lock 0600 "$(_fileset_owner masterd)"
99 5224330e René Nussbaumer
100 b370482d René Nussbaumer
  if ! [[ -z "${full_run}" ]]; then
101 196d70fa Michael Hanselmann
    local queue_owner="$(_fileset_owner masterd)"
102 196d70fa Michael Hanselmann
    local ssconf_owner="$(_fileset_owner noded)"
103 196d70fa Michael Hanselmann
104 196d70fa Michael Hanselmann
    _gather_files ${DATADIR}/queue 0600 @GNTMASTERUSER@ @GNTMASTERDGROUP@ | \
105 196d70fa Michael Hanselmann
    while read path; do
106 196d70fa Michael Hanselmann
      _ensure_file "$path" 0600 "$queue_owner"
107 b370482d René Nussbaumer
    done
108 5224330e René Nussbaumer
109 196d70fa Michael Hanselmann
    _gather_files ${DATADIR} 0600 root @GNTMASTERDGROUP@ -name 'ssconf_*' | \
110 196d70fa Michael Hanselmann
    while read path; do
111 196d70fa Michael Hanselmann
      _ensure_file "$path" 0444 "$ssconf_owner"
112 b370482d René Nussbaumer
    done
113 b370482d René Nussbaumer
  fi
114 46a8da3b René Nussbaumer
}
115 46a8da3b René Nussbaumer
116 46a8da3b René Nussbaumer
_ensure_rundir() {
117 5224330e René Nussbaumer
  _ensure_dir ${GNTRUNDIR} 0775 "$(_fileset_owner daemons)"
118 5224330e René Nussbaumer
  _ensure_dir ${GNTRUNDIR}/socket 0750 "$(_fileset_owner daemons)"
119 5224330e René Nussbaumer
  _ensure_dir ${GNTRUNDIR}/bdev-cache 0755 "$(_fileset_owner noded)"
120 5224330e René Nussbaumer
  _ensure_dir ${GNTRUNDIR}/instance-disks 0755 "$(_fileset_owner noded)"
121 5224330e René Nussbaumer
  _ensure_dir ${GNTRUNDIR}/crypto 0700 "$(_fileset_owner noded)"
122 5224330e René Nussbaumer
  _ensure_dir ${GNTRUNDIR}/import-export 0755 "$(_fileset_owner noded)"
123 5224330e René Nussbaumer
124 5224330e René Nussbaumer
  # We ignore this file if it don't exists (not yet start up)
125 5224330e René Nussbaumer
  _ensure_file ${GNTRUNDIR}/socket/ganeti-master 0770 \
126 5224330e René Nussbaumer
               "$(_fileset_owner daemons)" || :
127 46a8da3b René Nussbaumer
}
128 46a8da3b René Nussbaumer
129 46a8da3b René Nussbaumer
_ensure_logdir() {
130 5224330e René Nussbaumer
  _ensure_dir ${GNTLOGDIR} 0770 "$(_fileset_owner daemons)"
131 5224330e René Nussbaumer
  _ensure_dir ${GNTLOGDIR}/os 0750 "$(_fileset_owner daemons)"
132 5224330e René Nussbaumer
133 5224330e René Nussbaumer
  # We ignore these files if they don't exists (incomplete setup)
134 5224330e René Nussbaumer
  _ensure_file ${GNTLOGDIR}/master-daemon.log 0600 "$(_fileset_owner masterd)" || :
135 5224330e René Nussbaumer
  _ensure_file ${GNTLOGDIR}/conf-daemon.log 0600 "$(_fileset_owner confd)" || :
136 5224330e René Nussbaumer
  _ensure_file ${GNTLOGDIR}/node-daemon.log 0600 "$(_fileset_owner noded)" || :
137 5224330e René Nussbaumer
  _ensure_file ${GNTLOGDIR}/rapi-daemon.log 0600 "$(_fileset_owner rapi)" || :
138 5224330e René Nussbaumer
}
139 46a8da3b René Nussbaumer
140 5224330e René Nussbaumer
_ensure_lockdir() {
141 5224330e René Nussbaumer
  _ensure_dir ${LOCKDIR} 1777 ""
142 46a8da3b René Nussbaumer
}
143 46a8da3b René Nussbaumer
144 46a8da3b René Nussbaumer
_operate_while_hold() {
145 46a8da3b René Nussbaumer
  local fn=$1
146 46a8da3b René Nussbaumer
  local path=$2
147 46a8da3b René Nussbaumer
  shift 2
148 46a8da3b René Nussbaumer
149 5224330e René Nussbaumer
  (cd ${path};
150 46a8da3b René Nussbaumer
   ${fn} "$@")
151 46a8da3b René Nussbaumer
}
152 46a8da3b René Nussbaumer
153 46a8da3b René Nussbaumer
main() {
154 b370482d René Nussbaumer
  local full_run
155 b370482d René Nussbaumer
156 b370482d René Nussbaumer
  while getopts "f" OPTION; do
157 b370482d René Nussbaumer
    case ${OPTION} in
158 b370482d René Nussbaumer
      f) full_run=1 ;;
159 b370482d René Nussbaumer
    esac
160 b370482d René Nussbaumer
  done
161 b370482d René Nussbaumer
162 b370482d René Nussbaumer
  _operate_while_hold "_ensure_datadir" ${DATADIR} ${full_run}
163 5224330e René Nussbaumer
  _operate_while_hold "_ensure_rundir" ${RUNDIR}
164 5224330e René Nussbaumer
  _operate_while_hold "_ensure_logdir" ${LOGDIR}
165 5224330e René Nussbaumer
  _operate_while_hold "_ensure_lockdir" @LOCALSTATEDIR@
166 46a8da3b René Nussbaumer
}
167 46a8da3b René Nussbaumer
168 46a8da3b René Nussbaumer
main "$@"