2

これを実行すると取得debconf: DbDriver \"passwords\" warning: could not open /var/cache/debconf/passwords.dat: Permission denied\ndebconf: DbDriver \"config\": could not write /var/cache/debconf/config.dat-new: Permission denied\n#> [packages]: Packages : FAIL\n"できます。なんらかの理由でsudoingしていないようです。

(ns localhost.idk
  (:require (pallet [compute :as compute]
                    [api :as api :refer [lift]]
                    [actions :as actions])))

;; Running this on my local machine
(def my-data-center
  (compute/instantiate-provider
   "node-list"
   :node-list [["localhost" "ed" "127.0.0.1" :ubuntu
                :is-64bit nil]]))

(def user-deadghost
  (api/make-user "deadghost"
                 :password "my-pw"
                 :sudo-password nil)) ; pwless sudo set up

(defn install-ed []
  (pallet.api/lift
   (pallet.api/group-spec
    "ed"
    :phases {:configure (api/plan-fn
                         ;; This works:
                         ;; (pallet.actions/exec-script
                         ;;  ("sudo aptitude install ed"))
                         ;; This is trying to run without sudo:
                          (actions/packages :aptitude ["ed"]))})                         
                         ;; log shows: p.script-builder prefix kw :no-sudo
   :compute my-data-center
   :user user-deadghost))

実行中のスクリプト:

#!/usr/bin/env bash
mkdir -p /home/deadghost || exit 1
cd /home/deadghost
set -h
echo '[packages]: Packages...';
{
    { debconf-set-selections <<EOF
debconf debconf/frontend select noninteractive
debconf debconf/frontend seen false
EOF
    } && enableStart() {
        rm /usr/sbin/policy-rc.d
    } && apt-get -q -y install ed+ && dpkg --get-selections
} || { echo '#> [packages]: Packages : FAIL'; exit 1;} >&2 
echo '#> [packages]: Packages : SUCCESS'

exit $?

私が受け取っているエラーは、debconfない部分と一致していsudoます。

4

1 に答える 1

0

回答はhugod、パレットの作成者によって提供されました。

pallet 0.8.0-RC.11localhost で実行する場合、デフォルトのスクリプト プレフィックスは、:no-sudoそれ以外の場合のデフォルトは です:sudo。これは歴史的な理由によるもので、詳細はわかりません。

スクリプトのプレフィックスを に戻すにsudoは、アクションを でラップします(pallet.action/with-action-options {:script-prefix :sudo} YOUR-ACTION-HERE)。したがって、私の場合は次のようになります。

(defn install-ed []
  (pallet.api/lift
   (pallet.api/group-spec
    "ed"
    :phases {:configure (api/plan-fn
                         (pallet.action/with-action-options
                           {:script-prefix :sudo}
                           (actions/packages :aptitude ["ed"])))})
   :compute my-data-center
   :user user-deadghost))
于 2014-11-18T14:41:11.230 に答える