Puppet学习笔记2

Puppet里最基本的元素是resource,每一个resource都包括一个type,一个title和一个attribute集合。同一个resource不能声明两次(但可以追加attribute或重写attribute),也就是说title不能重名。配置resource的基本语法如下:

type {'title':  
    attribute => value, 
}

例子:

# A resource declaration:
file { '/etc/passwd':  
    ensure => file, 
    owner => 'root', 
    group => 'root', 
    mode => '0600', 
}

resource执行的顺序和定义的顺序无关,如果应用一个resource之前,需要先应用另一个resource,则可以使用require参数(同样解决依赖关系的还有before、notify和subscribe等)。

Puppet学习笔记1

最新版的puppet和之前的有了很大的改变,原来不同的命令统一到了puppet这一个工具下面。


安装前准备

Puppet两种部署方式

  1. 主从模式(Agent/Master)

    大多数情况下采用的是主从模式。主从模式需要有一个中心服务器(Master),由中心服务器(主节点)统一管理节点配置信息,从节点从主节点pull配置信息,这种情况下,每个从节点只会获取自己需要的信息,而不会看到其他节点的配置。

    Windows机器不能作为主节点(XD),通常情况下,主节点要求性能比较好,但对于我们来说,应该不会遇到性能瓶颈。

    主节点必须要能通过hostname访问。从节点的默认主节点配置为puppet(需要修改为自己真实情况下的主节点机器名,如果直接把主节点的机器名设为puppet则不需要修改配置)。

  2. 独立模式(Standalone)

    在独立模式中,每个节点管理自己的配置文件,并通过puppet apply命令来使配置文件生效,且会应用本机上的所有puppet模块和配置。如果多个节点需要维持相同的配置,应该使用主从模式,并不适用独立模式。

操作系统要求:

主流Linux都没有问题,需要Ruby(1.8.7及以上)支持,Windows不能作为主节点。

网络配置:

  • 防火墙

    开启8140端口。

  • 机器名

    每个节点都要有一个唯一的机器名。

  • 系统时间

    因为puppet需要用到证书认证,所以系统时间最好采用NTP同步。

安装

添加源

rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rm  

主节点:

yum install puppet-server  

启动服务:

/etc/init.d/puppetmaster start

升级

puppet resource package puppet-server ensure=lastest  

从节点

yum install puppet  

启动服务

/etc/init.d/puppet start # 先不要启动服务

更新

puppet resource package puppet ensurce=lastest  

配置

主节点配置

获取主节点机器名和配置证书

在生成主节点证书时,需要保证每一个从节点都可以通过机器名访问主节点。

默认配置情况下,从节点会寻找叫做puppet的主节点,所以,如果直接把主节点的机器名设为puppet,可以简化配置过程。

在主节点的puppet.conf配置文件的[main]区域中,把dnsaltname设置为主节点使用的机器名,多个的则用,(英文逗号)隔开。

CA(Certificates Authority) 主节点

如果只部署了一个主节点,或者多个主节点中有一个CA节点,则在该节点上运行

puppet master --verbose --no-daemonize  

这样会创建CA证书.当输出"Notice: starting puppet master version "时,“Ctrl+C”。

这样子,CA节点就创建好了证书。

非CA主节点

主要有两个选择

  • 在CA节点上运行puppet cert generater <NAME> --dns-alt-names=<NAME 1>,<NAME 2>,<NAME 3>,然后把证书手动拷贝到新的Master节点上。

  • 运行puppet agent -test --ca_server=<SERVER>来请求证书。然后在CA节点上运行puppet cert listpuppet cert --allow-dns-alt-names sign <NAME>来认证证书。在新的主节点,运行puppet agent --test --ca_server=<SERVER>来再次检索证书。

必要的配置

默认位置在/etc/puppet/puppet.conf,例子:

# Settings in [main] are used if a more specific section doesn't set a value.
[main]
    certname = puppetmaster01.example.com
    logdir = /var/log/pe-puppet
    rundir = /var/run/pe-puppet
    modulepath = /etc/puppetlabs/puppet/modules:/opt/puppet/share/puppet/modules
    server = puppet.example.com
    user  = pe-puppet
    group = pe-puppet
    archive_files = true
    archive_file_server = puppet.example.com

# This section is used by the puppet master and puppet cert applications.
[master]
    certname = puppetmaster01.example.com
    dns_alt_names = puppetmaster01,puppetmaster01.example.com,puppet,puppet.example.com
    ca_name = 'Puppet CA generated on puppetmaster01.example.com at 2013-08-09 19:11:11 +0000'
    reports = http,puppetdb
    reporturl = https://localhost:443/reports/upload
    node_terminus = exec
    external_nodes = /etc/puppetlabs/puppet-dashboard/external_node
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
    storeconfigs_backend = puppetdb
    storeconfigs = true
    autosign = true

# This section is used by the puppet agent application.
[agent]
    report = true
    classfile = $vardir/classes.txt
    localconfig = $vardir/localconfig
    graph = true
    pluginsync = true
    environment = production

[main]区域中的配置全局生效,[master]域中的配置只在master节点有效,[agent]域中的配置只在agent生效。

配置生产环境服务器

官方推荐apache + passenger.

从节点配置

配置puppet

除了具体选项可能不同,和主节点配置类似。

启动puppet agent服务

主要有两种情况,一直是作为服务(daemon)来运行,另一种由crontab定时运行。

作为服务运行时,默认的更新周期是30分钟。

服务运行

puppet resource service <NAME> ensure=running enable=true

Cron任务运行

puppet resource cron puppet-apply ensure=present user=root minute=30 command='/usr/bin/puppet apply $(puppet apply --configure manifest)'  

认证从节点证书

从节点第一次运行是会去CA节点请求证书。

  • 在CA节点上运行puppet cert list可以所有的请求。

  • 在CA节点上运行puppet cert sign <NAME>可以通过一个请求,或者puppet cert sign --all通过所有请求。

在从节点下一次启动的时候,它的证书会被签认。

至此,安装基本完成,下面就是配置具体的puppet部署脚本了。

【挖坑】翻译Part One: The Flask Authentication Problem

原文:Part One: The Flask Authentication Problem


忙碌的开始

最近做了这么几件事情:

  1. 开始准备在职研究生考试,备战今年十月份的GCT考试,目标是浙大计算机工程硕士,4本书,5个月。

  2. 工作上,继续深入学习分布式文件系统,主要还是glusterfs,马上就要在生产环境中使用了,不搞清楚自己都心虚。作为运维,自己的主要薄弱点还在网络和数据库方面,根据自己的兴趣,决定先把数据库补起来,选择Oracle作为切入点,主要还是因为有老大“神仙“在。

  3. 注册了dobbystudio.com这个域名,竖起了多比工作室的大旗,先占个山头,当然目前其象征意义大于实际意义,自己也是光杆儿司令。未来打算把它发展成为一个虚拟的社团,重点是能聚集一些志同道合的小伙伴,来一起做一些好玩的事情,算是工作之余的兴趣爱好,物质可能反而是其次的。

  4. 跑步,自己终于能跑过5公里了,绝对算是一个里程碑了,无论是出于减肥的目的,还是锻炼身体的目的,都要把这个坚持下去。

这些事情未来还会一直持续下去,当然最重要的还是工作,这个是现在自己立足的根本,也不能辜负领导和同事;其次是准备在职研究生考试了,这个是提升自己的一个尝试和努力;再次就是就是好好”经营“多比工作室,不过目前没什么明确的目标,只能算是自己在互联网上的第二个据点,自己写的第一个博客程序panda可能会成为多比工作室的第一个项目吧;跑步目前只能排在最后了,大家都说,身体是最重要的,但践行起来颇为讽刺,不过还是要坚持下去的,如果你看到了我在qq空间贴出来的跑步记录,希望你能点个赞,算是鞭策和鼓励吧。

Hello, Dobby Studio

“多比”这个词取自于《哈利波特》中家养小精灵“多比【Dobby】”,在《哈利波特》的故事中,大多数家养小精灵都是作为一个仆从,甚至是奴隶存在的,唯一的一个异类就是“Dobby”,希望成为一个自由的家养小精灵,希望能够真正的成为人类的朋友,当然最后他也梦想成真了。

当时考虑了很多名字,之所以取这个名字就是想通过自己的微薄努力,能让科技、技术、设计等这些看起来冷冰冰的元素能够成为人类的朋友,并实实在在的改变我们的生活。同时,我也想成为一个自由的人。

虽然说是多比工作室,但到目前为止还只有我一个人,说的好听点,我是创始人,兼CTO,兼等等各种O吧,LOL,但我真诚欢迎有相同理想的同学加入,虽然暂时还不能给你带来物质上的回报,但让我们来做点什么改变一下吧。

虽然我现在还很菜,但我有一颗希望改变世界的心。

glusterfs nfs挂载遇到的一个问题

今天给glusterfs加了一台机器,但发现客户机上的nfs挂载点进行文件操作会出现

-bash: cd: 2013: Invalid argument

错误,服务器端的nfs.log里面也有相应的报错,太多,就不贴了,但其他机器的挂载却没问题。

摸索了一下,怀疑是客户机nfs的问题,重启了客户机的rpcbind和nfs服务,一切OK。

具体原因还不太清楚,等研究后再写吧。