カテゴリー別アーカイブ: Chef

fabricでchef-soloの実行環境を整えてみる

AWS環境を除き、SSHアカウントがパスワードでの管理がメインとなっている今の職場環境にて、

chef-soloを実行する上でまず最初にクリアすべき、

sudo権限のあるSSHキーファイルでログインできるユーザの作成と、

chef-solo実行環境を整えて、あとはレシピを適用するだけ!な状態を作る作業を自動化すべく、

fabricで実装してみました。

 

環境はCentOS6.4(x86_64)です。

 

fabricを実行する環境ではchef-solo,knife-solo環境が整っていることが前提です。

 

↓こんな感じです。

import cuisine
from fabric.api import run, cd, abort, require, sudo, env, put, prompt, get, local
from fabric.decorators import runs_once, roles
from fabric.contrib.console import confirm

env.user = ''
env.password = ''
env.hosts = ['']

def prepare_chef():
    sudo('useradd chefuser')
    sudo('passwd -fu chefuser')
    sudo('ssh-keygen', user="chefuser")
    sudo('cat /home/chefuser/.ssh/id_rsa.pub >> /home/chefuser/.ssh/authorized_keys', user="chefuser")
    get('/home/chefuser/.ssh/id_rsa', '~/' + env.host + '.pem')
    sudo('chmod 600 /home/chefuser/.ssh/authorized_keys')
    sudo('echo "chefuser ALL=(ALL) ALL" >> /etc/sudoers')
    local('chmod 600 ~/' + env.host + '.pem')
    local('knife solo prepare chefuser@' + env.host + ' -i ~/' + env.host + '.pem')

実行すると、ホームディレクトリ下に接続先.pemというSSHキーファイルができるので、

レシピを適用する場合はそれを利用します。

 

SSHキーの生成時に対話入力を求められてしまうので、

そこも自動化したいのですが、

未熟故にexpect使うくらいしか方法が思い浮かびません・・・