puppet的generate函数

2010年7月8日 flex 没有评论

这个函数不能直接执行shell脚本,需要/usr/bin/env等做为第一个参数,如:

$hostalias = generate("/usr/bin/env", "/tmp/genhname.sh", "172.16.0.133")

其次,这个函数的执行的是master上的脚本,它仅仅是将client上的变量拿回来,在本地执行;也就是说/tmp/genhname.sh要位于master的相应路径上,且有执行权限,不需要将脚本文件分发到client。

分类: puppet, 运维 标签: ,

puppet dashboard的安装

2010年7月7日 flex 2 条评论

以下过程基于debian:

系统要求:
ruby >= 1.8.1
rake >= 0.8.3 (在lenny里版本不够,需要squeeze,不过我觉得使用gem应该也能装)
mysql
ruby mysql bindings(我个人觉得对应的包为libmysql-ruby,不过网上的另一个deb包依赖的是dbconfig-common libdbd-mysql-ruby)

安装过程:

1. 获得最新源码:

git clone git://github.com/reductivelabs/puppet-dashboard.git

2. 设置数据库:

cd puppet_dashboard/config
cp database.yml.example database.yml

编辑database.yml,在development域中加入数据库用户名、密码,然后进行数据库初始化(确保mysql服务已经启动):

rake install

(中间可能需要运行rake gem:install)

3.设置puppetmaster:

部署lib文件:

cp  puppet_dashboard/lib/puppet/puppet_dashboard.rb  /usr/lib/ruby/1.8/puppet/reports/

这点和readme中描述不符,不过作者的方法怎么实验都不成功。:(

然后在/etc/puppet/puppet.conf的puppetmasterd域中加入:

reports = puppet_dashboard

可以写多种方法,用逗号分隔,比如:

reports = puppet_dashboard, log, store

最后重启服务端

4.运行dashboard server

script/server

5.设置puppet client:

在/etc/puppet/puppet.conf的puppetd域加入:

report = true

重启客户端

如果没有意外,dashboard将会接收到新的report,访问http://localhost:3000/进入web界面。

如果想将以前的report导入,在dashboard目录运行:

rake reports:import

如果reportdir不是/var/lib/puppet/reports则运行:

rake reports:import REPORT_DIR=/path/to/your/reports

如果时区显示有问题,在config/enviroment.rb文件中修改:

config.time_zone = 'Beijing'

参考:

1. http://docs.puppetlabs.com/guides/installing_dashboard.html

2.http://zcentric.com/2010/03/11/install-puppet-dashboard-on-redhatcentos-5/

分类: puppet, 运维 标签: ,

关于puppet的import

2010年6月29日 flex 没有评论
import "autofs"
import "autofs/init.pp"
import "autofs/util/stuff.pp"

第一句与第二句会在模块路径中寻找autofs/manifests/init.pp并载入。
第三句只载入autofs/util/stuff.pp文件。

puppet 0.23.1之后的版本,位于modulepath下(默认是/etc/puppet/modules)的模块会被自动载入,所以不需要手动载入此目录下的各个模块了。

当你引用autofs模块中的craziness类时,puppet会自动在autofs模块下寻找craziness.pp文件中的这个类。使用这个技巧就可以不在模块的init.pp中写入额外的import了。

分类: puppet 标签: , ,

python全局变量与命名空间

2010年6月10日 flex 没有评论
KEY_WORD = "A"

def temp():
    print KEY_WORD
    KEY_WORD = "B"

这段代码运行会提示变量KEY_WORD在定义前使用。原因是因为一旦在函数中修改全局变量,则python会将全局变量认成局部变量,在函数的命名空间内寻找其定义。如果要修改全局变量,要在函数内使用global关键字进行声明。如下:

KEY_WORD = "A"

def temp():
    global KEY_WORD
    print KEY_WORD
    KEY_WORD = "B"

当然,我个人更倾向将全局变量只作为常量。

分类: Code, Python 标签: , ,

shell中的$@与通配符

2010年5月20日 flex 没有评论

$@在shell中表示所有参数,与$*不同的是,$@中的每个参数都相当于被双引号包含的独立字符串。

然而如果使用通配符传递文件名的时候,如果文件名中包含空格,$@会将包含空格的文件名理解成数个文件,这时只要使用引号将通配符引起再传递或者使用”$@”就可以了。

分类: Code 标签: , ,

Apache在子目录取消访问控制

2010年4月24日 flex 2 条评论

Removing controls in subdirectories

The following example shows how to use the Satisfy directive to disable access controls in a subdirectory of a protected directory. This technique should be used with caution, because it will also disable any access controls imposed by mod_authz_host.

<Directory /path/to/protected/>
Require user david
</Directory>
<Directory /path/to/protected/unprotected>
# All access controls and authentication are disabled
# in this directory
Satisfy Any
Allow from all
</Directory>

截取自apache 2.2手册http://httpd.apache.org/docs/2.2/mod/core.html#require

分类: 运维 标签: , ,

Marvell 88E8056 网卡驱动

2010年4月16日 flex 没有评论

在Marvell官网有linux 2.6内核驱动下载,然而在2.6.32内核上以模块形式编译安装时总是出错

/tmp/Sk98IAfiDEcqKrUTbOYRkXjlT/all/skge.c: In function ‘SkGeTestIsr’:
/tmp/Sk98IAfiDEcqKrUTbOYRkXjlT/all/skge.c:1750: error: ‘TASK_NORMAL’ undeclared (first use in this function)
/tmp/Sk98IAfiDEcqKrUTbOYRkXjlT/all/skge.c:1750: error: (Each undeclared identifier is reported only once
/tmp/Sk98IAfiDEcqKrUTbOYRkXjlT/all/skge.c:1750: error: for each function it appears in.)
/tmp/Sk98IAfiDEcqKrUTbOYRkXjlT/all/skge.c: In function ‘SkGeTestMsi’:
/tmp/Sk98IAfiDEcqKrUTbOYRkXjlT/all/skge.c:1780: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
/tmp/Sk98IAfiDEcqKrUTbOYRkXjlT/all/skge.c:1790: error: ‘TASK_UNINTERRUPTIBLE’ undeclared (first use in this function)
/tmp/Sk98IAfiDEcqKrUTbOYRkXjlT/all/skge.c:1790: error: implicit declaration of function ‘schedule_timeout’

根据readme的步骤,以patch的方式打到内核里就没有问题了。

分类: 应用 标签: , ,

find的exec参数

2010年4月14日 flex 没有评论

find的-exec参数执行命令时,当前目录是执行者运行find程序时所在的目录。如果需要在执行命令时进入匹配项所在目录,使用-execdir参数。两者均不能识别命令中的通配符,可以通过间接调用一个单行脚本来解决。

分类: 应用 标签: , ,

纠结的terminator 0.90

2010年4月1日 flex 没有评论

经过数个月的开发,terminator终于发布了0.90版(从0.14直接到0.90 -. -)。但是令人失望的是bug众多,而且没有我需要的命令行拆分窗口的新特性。随后作者紧急发布了0.91版修正bug。

ps1: 我以前提交的kde下面关闭tab时导致窗口变小的bug已经修正

ps2: terminator已经进入了官方源

ps3: 貌似字体颜色有点问题,变深了,已经有人提交了这个bug

ps4: use_system_font选项在man手册里面没有,默认是True,会导致字体设置无效。我提交了这个bug

分类: 应用 标签:

nginx的log

2010年1月29日 flex 没有评论

access_log的最小作用域是location,关闭方式是:access_log off;

error_log的最小作用域是http,关闭方式是:error_log /dev/null;

如果一个请求是404之类的,则access_log中记录404,error_log同时会记录open filename failed等错误,如果不需要,可以改变http域error_log的记录等级,也可以直接关闭(还有log_not_found选项可以关闭记录open filename failed错误)。