存档

‘自动化运维’ 分类的存档

ansible api实现命令异步执行

2014年10月9日 4 条评论

代码也可以在这里查看

https://github.com/ivonlee/ansible/blob/master/ansible_api_async_run.py

 

tornado上实现ansible api异步执行,方便php写的运维后台调用,当然php后台还是要做一个类似于队列的东西,将任务存在redis或者mongodb里面,然后有个php进程持续监听任务队列。

下面的脚本运行后,可以用类似POSTMAN工具进行post数据测试,如果你的平台本来就是python的,那更方便了,自己写个简陋的web界面,直接执行了,不用tornado做web容器了。 阅读全文…

Ansible callbacks插件实现playbook运行结果写入mongodb

2014年9月23日 没有评论

ansible的callback 插件有点类似saltsatck的returners,可以收集playbook运行过程中一些信息,这里我把执行结果写入到mongodb中。

ansible 几个demo callbacks 的git地址

https://github.com/ansible/ansible/tree/devel/plugins/callbacks

根据官方的日志写文件的脚本改了下,当然你也可以写mysq redis,我下面就对失败和成功的做了写入,你根据自己的情况可以对其他状态做处理。(python刚学,有写的比较搓的地方,请指教)

这里有峰云写的入redis的 http://rfyiamcool.blog.51cto.com/1030776/1440624

还有灿哥写的执行任务后发邮件的  ansible-插件之callback_plugins

阅读全文…

tornado实现ansible api web请求

2014年9月23日 没有评论

这两天在写运维平台中的ansible命令执行功能,运维平台是php的,尝试了php的exec  system passthru popen等函数,ansible 里面host ssh认证改为www,apache运行用户也为www,各种尝试,最后执行结果返回为空数组,执行 ssh www@192.168.3.169 ‘df -h’这种命令也是成功的,只是执行ansible命令不行,ansible-doc也可以。 阅读全文…

分类: ansible 标签: , , ,

linux下源码包自动生存RPM包工具checkinstall

2014年2月24日 没有评论

Checkinstall 是一个能从 tar.gz 类的源代码自动生成 RPM/Debian 或Slackware 安装包的程序。通过 CheckInstall,你就能用几乎所有的 tar.gz 类的源代码来生成“干净”的安装或者卸载包。

最近在测试ansible,对软件安装包进行部署的时候,发现编译安装开始不适合批量状态管理,将软件打成rpm后放入yum源可以快速安装,卸载,升级软件等操作。

 

1.安装checkinstall

 2.安装过程中遇到的问题记录

  • 这里make的时候会出现报错

解决方案:

  • 继续make会报另外一个错 msgfmt not found

解决方案:

  • 继续make又报了个错

vim installwatch/installwatch.c

将101行处修改

将121行处修改:

2941行修改

 

 

将3080行修改:

将 3692行修改:

完成后make,直接make install 虽然不会报错但是在使用checkinstall 的时候,会报错

  • 安装好后,使用过程中还有个问题,解决方案如下

 checkinstall 使用

如果用checkinstall 这个工具后   安装一个软件后 不需要最后的make install 了  前2步搞完了  直接 用checkinstall 来搞就行

例如打一个zabbix rpm包

cd  zabbix-2.0.5

./configure –prefix=/usr/local/zabbix –enable-server –enable-agent –with-mysql –with-net-snmp –with-libcurl

make

checkinstall

然后用 checkinstall 工具会有向导提示,由于比较简单就不截图了。

 

附录
如果报这个错,rpm安装下  yum install rpm-build

*** The “rpmbuild” program is not in your PATH!

 

这里我提供下我打好的checkinstall-1.6.2-1.x86_64.rpm

http://pan.baidu.com/s/1gdpEhsJ

 

Cobbler Web User Interface

2013年6月8日 没有评论

Cobbler Web User Interface

This section of the manual covers the Cobbler Web Interface. With the web user interface (WebUI), you can:

  • View all of the cobbler objects and the settings
  • Add and delete a system, distro, profile, or system
  • Run the equivalent of a “cobbler sync”
  • Edit kickstart files (which must be in /etc/cobbler and /var/lib/cobbler/kickstarts)

You cannnot (yet):

  • Auto-Import media
  • Do a “cobbler validateks”

The WebUI is intended to be self-explanatory and contains tips and explanations for nearly every field you can edit. It also contains links to additional documentation, including the Cobbler manpage documentation in HTML format.

Basic Setup

  1. You must have installed the cobbler-web package
  2. Your /etc/cobbler/modules.conf should look something like this:

    [authentication]
    module = authn_configfile

    [authorization]
    module = authz_allowall

  3. Change the password for the ‘cobbler’ username:

    htdigest /etc/cobbler/users.digest “Cobbler” cobbler

  4. If this is not a new install, your Apache configuration for Cobbler might not be current.

    cp /etc/httpd/conf.d/cobbler.conf.rpmnew /etc/httpd/conf.d/cobbler.conf

  5. Now restart Apache and Cobblerd

    /sbin/service cobblerd restart
    /sbin/service httpd restart

  6. If you use SELinux, you may also need to set the following, so that the WebUI can connect with the XMLRPC:

    setsebool -P httpd_can_network_connect true

Basic setup (2.2.x and higher)

In addition to the steps above, cobbler 2.2.x has a requirement for mod_wsgi which, when installed via EPEL, will be disabled by default. Attempting to start httpd will result in:

You can enable this module by editing /etc/httpd/conf.d/wsgi.conf and un-commenting the “LoadModule wsgi_module modules/mod_wsgi.so” line.

Next steps

It should be ready to go. From your web browser visit the URL on your bootserver that resembles:

and log in with the username (usually cobbler) and password that you set earlier.

Should you ever need to debug things, see the following log files:

Further setup

Cobbler authenticates all WebUI logins through cobblerd, which uses a configurable authentication mechanism. You may wish to adjust that for your environment. For instance, if in modules.conf above you choose to stay with the authn_configfile module, you may want to add your system administrator usernames to the digest file:

You may also want to refine for authorization settings.

Rewrite Rule for secure-http

To redirect access to the WebUI via https on an Apache webserver, you can use the following rewrite rule, probably at the end of Apache’s ssl.conf:

分类: cobbler 标签:

Centos 6.x 部署puppet

2013年5月17日 没有评论

概述

puppet 是一种 Linux、Unix 平台的集中配置管理系统,使用自有的 puppet 描述语言,可管理配置文件、用户、cron 任务、软件包、系统服务等。puppet 把这些系统实体称之为资源,puppet 的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
puppet 采用 C/S 星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个 puppet 客户端每半小时(可以设置 runinterval=30)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet 客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息

原理

Puppet 后台运行的时候默认是半小时执行一次,不是很方便修改。可以考虑不让它在后台跑而是使用 crontab 来调用。这样可以精确控制每台客户端的执行时间。分散执行时间也可以减轻压力
Puppet 的工作细节分成如下几个步骤:
1、 客户端 puppetd 调用 facter,facter 会探测出这台主机的一些变量如主机名、内存大小、IP 地址等。然后 puppetd 把这些信息发送到服务器端。
2、 服务器端的 puppetmaster 检测到客户端的主机名,然后会到 manifest 里面对应的 node 配置,然后对这段内容进行解析,facter 送过来的信息可以作为变量进行处理的,node 牵涉到的代码才解析,其它的代码不不解析,解析分几个过程:语法检查、然后会生成一个中间的伪代码,然后再把伪代码发给客户机。
3、 客户端接收到伪代码之后就会执行,客户端再把执行结果发送给服务器。
4、 服务器再把客户端的执行结果写入日志

安装前准备

 环境介绍

 NTP配置

由于我是在公司内部openstack平台生产的虚拟机,默认有了时间同步,没有的话加个crontab。

关闭iptables

 FQDN设置

hosts绑定,或者有dns更好,生产环境下最好还是用dns进行域名解析。

 新版本命令变更

Puppet 3.01,对很多以前版本的命令已经去掉

                  

我安装的时候用的puppet3.1,也要使用新版命令

ruby安装

Puppet 需要 Ruby 的支持,如果要查看命令行帮助的话需要额外 ruby-rdoc 这个软件包:

安装puppet服务端

如果系统是centos 5 系列的话,注意更改源地址,服务端配置文件不用修改。

puppet客户端安装

软件安装

Puppet 需要 Ruby 的支持,如果要查看命令行帮助的话需要额外 ruby-rdoc 这个软件包:,安装后需修改一处配置文件。

配置文件修改

 启动服务

 

证书申请

客户端发起证书请求

Puppet客户端与服务器端是通过SSL隧道通信的,客户端安装完成后,需要向服务器端申请证书:
首次连接服务器端会发起证书申请,在客户端执行命令如下:

如果返回以下信息说明证书请求成功了

服务端查看证书请求

在puppet服务器端查看到申请证书的客户端主机名。

注:前面有+号的说明已经授权签发了。

服务端颁发证书

查看是否颁发成功

验证puppet配置

在服务端写个例子测试一下。这个例子作用很简单,用来在客户端的/tmp目录下新建一个 woyoo.txt 文件,内容为:hello,puppet!在服务端/etc/puppet/manifests下编写代码:【服务器端不需要新建这个文件】

在客户端上执行 puppet,运行成功后会在 /tmp 看到新生成的 test.txt:

文件同步

服务端编写文件同步脚本

客户端同步策略

案例详解

Host文件同步

当我们服务器数量有几百台的时候,这样一个个加node肯定是不行了,我们采用模块化来实现

创建目录

创建所须文件

nodes.pp中使用了正则表达式,这使得一个非常 简单的node可以匹配多个客户端,而对于特殊主机来讲,可单独在文件结尾添加node即可

通过一个if/elsif决断语句,结合Puppet内置变量$operatingsystem可同步任何跨平台的操作系统的hosts文件

客户端请求策略后的结果

 用户管理

创建账户

我想批量创建个www账号

modules下创建相应的目录

注意:

客户端请求策略

 删除账号

比较懒,就在刚刚那个创建用户的脚本里面改了下。

客户端请求策略

 crontab

创建相应的目录和脚本

引用模块

 

客户端请求策略

 Puppet Dashboard

mysql安装

优化mysql设置

编辑 /etc/my.cnf, 在[mysqld]字段,增加最后一行.

启动服务

设置密码并创建数据库

 Passenger+Apache+Dashboard

让Apache支持ruby

配置Dashboard

编辑 /usr/share/puppet-dashboard/config/database.yml

初始化数据库

 

配置Apache

我们需要整合Passenger和apache

重启服务

配置puppet

让Dashboard使用Reports,现在默认agent是已经启用Report的功能,所以你就不需要设置agent,你只需要设置Server端就可以.

重启puppetmaster 服务

访问 http://puppet.54im.com

导入报告

 Delayed Job Workers

查看启动的job

停止delay job

Dashbaord里现在可以看到数据了

分类: puppet, 自动化运维 标签:

修改puppet客户端默认连接puppetmaster的时间

2012年9月23日 没有评论

puppet 客户端默认连接到puppetmaster的时间间隔,默认情况下,puppet 客户端每隔30分钟连接到puppetmaster.如下示例:我修改为10分钟.

vim /etc/puppet/puppet.conf
runinterval = 600   # 默认配置文件里没有这一行,需要自己手动添加,这里的单位为秒

或者当puppet 和func 结合使用时,不想客户端自动找puppetmaster同步,可以启动脚本里面加 -no-client 或者puppet 客户端不以后台进程启动

分类: puppet, 自动化运维 标签: