9

シェフソロセットアップを展開するときは、sudo を使用するかどうかを切り替える必要があります。

    bash install.sh  

    sudo bash install.sh

ホスト サーバーのディストリビューションによって異なります。これをどのように自動化できますか?

4

2 に答える 2

28

ohai はすでにこれらの属性を入力しており、レシピですぐに利用できます。たとえば、

"platform": "centos",
"platform_version": "6.4",
"platform_family": "rhel",

これらを次のように参照できます

 if node[:platform_family].include?("rhel")
    ...
 end

ohai が設定するその他の属性を確認するには、次のように入力します。

 ohai

コマンドラインで。

于 2013-04-02T05:53:14.247 に答える
0

リモート ホストでディストリビューションを検出し、それに応じてデプロイできます。deploy.sh:

DISTRO=`ssh -o 'StrictHostKeyChecking no' ${host} 'bash -s' < bootstrap.sh`

DISTRO 変数は、ホスト マシンで実行される bootstrap.sh スクリプトによってエコーされるものによって入力されます。これで、bootstrap.sh を使用して必要なディストリビューションまたはその他のサーバー設定を検出し、エコーします。これはローカル スクリプトにバブリングされ、それに応じて応答できます。

例 deploy.sh:

#!/bin/bash

# Usage: ./deploy.sh [host]

host="${1}"

if [ -z "$host" ]; then
    echo "Please provide a host - eg: ./deploy root@my-server.com"
    exit 1
fi

echo "deploying to ${host}"

# The host key might change when we instantiate a new VM, so
# we remove (-R) the old host key from known_hosts
ssh-keygen -R "${host#*@}" 2> /dev/null

# rough test for what distro the server is on
DISTRO=`ssh -o 'StrictHostKeyChecking no' ${host} 'bash -s' < bootstrap.sh`

if [ "$DISTRO" == "FED" ]; then
    echo "Detected a Fedora, RHEL, CentOS distro on host"

    tar cjh . | ssh -o 'StrictHostKeyChecking no' "$host" '
    rm -rf /tmp/chef &&
    mkdir /tmp/chef &&
    cd /tmp/chef &&
    tar xj &&
    bash install.sh'

elif [ "$DISTRO" == "DEB" ]; then
    echo "Detected a Debian, Ubuntu distro on host"

    tar cj . | ssh -o 'StrictHostKeyChecking no' "$host" '
    sudo rm -rf ~/chef &&
    mkdir ~/chef &&
    cd ~/chef &&
    tar xj &&
    sudo bash install.sh'
fi

例のbootstrap.sh:

#!/bin/bash
# Fedora/RHEL/CentOS distro
 if [ -f /etc/redhat-release ]; then
    echo "FED"
# Debian/Ubuntu
elif [ -r /lib/lsb/init-functions ]; then
    echo "DEB"
fi

これにより、展開プロセスの非常に早い段階でプラットフォームを検出できます。

于 2013-03-27T22:25:50.453 に答える