Below you will find pages that utilize the taxonomy term “puppet”
Posts
puppet gpg
用puppet部署mysql
有puppetlabs-mysql这个现成的包,但用过之后觉得不好,因为自定义配置文件太麻烦,想不让它接管配置文件还不行。
后来在自己的包里部署,需要用到预先确认安装密码的问题
http://stackoverflow.com/questions/1202347/how-can-i-pass-a-password-from-a-bash-script-to-aptitude-for-installing-mysql
jessie可以直接用mariadb代替mysql,据于工说性能还好一些
需要看mariadb预安装的参数,用
debconf-show mariadb-server-5.5
http://www.bdqn.cn/news/201309/11151.shtml
由于puppet的exec默认用的是sh,不太清楚怎么让变成bash执行,所以只能是echo … | sudo debconf-set-selections 这样来写
配置文件用hiera的file存储,为每个机器单独存储。
由于之前一直用kvm的虚拟机,公司工作必须要用ie,qq什么的。vagrant的virtualbox和kvm不能同时开,网上找了能同开的方法,但是修改后会死机,总之还是不能同开。
后来找了vagrant的插件vagrant-kvm和vagrant-libvirt,但是在已经打包成box格式之后都不能兼容自己做的kvm虚拟机。
遂直接不用vagrant。
直接自装一个qcow2格式的kvm,copy该镜像文件作为备份,装乱之后再copy覆盖回去,省大了事了,托我大中国防火墙的仙气,也再不用翻山越岭的去下载vagrant那些镜像。
hiera的gpg加密有问题,一是私钥必须是无密码的,如果有密码,在命令行模式还有机会输入密码,在服务端运行的时候就不能解密了
一旦启用gpg后端的文件,就会莫名其妙的多出好多需要hiera赋值的参数,这些参数本来都是有默认值的,但一旦启用gpg,不知道为什么就会报没有赋值的错误。
另想了个办法把需要加密的东西都写到file里,在.gitignore里忽略hiera的file文件。
mcollective,尝试了之后觉得还是有些用,只是没有刚开始看得时候的惊喜,可能是手下管理的机器不太多吧。
需要提一下的是一开始mco命令总是没有任何自带的插件,什么inventory、facts都没有,是因为debian源里的mcollective-client是2.0的版本,必须用外带的puppetlabs的apt源,升级成2.5,就一切都ok了,剩下的交给puppetlabs-mcollective来配置就能傻瓜式完成。
Posts
puppet自动安装中的untrusted packages
当用到第三方源的时候,安装包会提示untrusted packages
让进一步确认Yes或者汉语的Shi,手动是没事但自动安装脚本就被破坏了。
http://anothersysadmin.wordpress.com/2008/12/30/tip-installing-untrusted-packages-without-confirmation-on-debian/
http://debiananwenderhandbuch.de/apt.conf.html
通过设置apt.conf的参数
puppet用apt-get而不是aptitude所以配置apt
可以用puppet的file增加个文件在/etc/apt/apt.conf.d/里
Posts
puppet与rvm中ruby的环境变量
看了半个多月教程,开始按部就班的操作的时候碰到不少麻烦。
比如hiera-mysql这个。
WARN: 2014-05-21 16:19:14 +0800: Cannot load backend mysql: cannot load such file — hiera/backend/mysql_backend
nil
gem install hiera-mysql挺成功的,但一用mysql后端就出这个错
google了一大堆还真没看见别人出这个错误的。
都想手动把这个文件加到$:路径里了。
最后发现是之前rvm的残留问题。
最近听了于工的建议捣鼓puppet,由于装puppet用的是deb安装,和rvm不太对付于是换回了系统ruby。
结果导致gem里没有hiera
再gem install hiera一下。
后来感觉hiera-mysql好像只能存取string?,不如yaml能array和hash。
agent第一次请求的时候需要master签名认证。
一直只知道公钥私钥,但是不太清楚签名的具体含义。马上查了一下,发现证书也是一对公钥和私钥,就是多了签名,最重要的是还多了个有效期限制。
我的理解是,agent(一下简称a)第一次请求master(以下简称m)的时候,把a的公钥发过去。这时候m上执行puppet cert list,看到的是agent发来的公钥。
执行puppet sign的时候,是用m的证书私钥加密了该a的公钥,可以成为认证公钥。之后的通信都用这个认证公钥加密。每次a和m通信的数据都会用自己的私钥和对方的公钥双重加密,收到的数据再用自己的私钥和公钥两次解密,得到明文数据。
第二个理解是,是证书这个公钥只加密另一个公钥,不加密数据内容。每次数据传输,先根据证书解密加密后的公钥,在用该公钥解密内容。
应该是第二种比较靠谱,加密用的计算量要少的多。
puppet里的证书都是pem的后缀,说实在的这些密钥的证书后缀也很混乱。pem代表base64编码,与加密方式没啥关系。
以后新装机器该puppet登场了,之前琢磨过的aptitude export import什么的太过时了~
puppet和nginx整合的例子找了几个看了看,现在都不能用了,只有官方的这个能和apache2整合
http://docs.puppetlabs.com/guides/passenger.html
虚拟主机的配置里,关于ssl密钥的配置比其他nginx教程里的多了几行参数,我也不清楚具体起的哪些环节的认证作用。