2014年5月19日星期一

关于ansible的playbook模板和facts的后续文档

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
关于ansible的playbook模板和facts的后续文档  阅读原文»

每日博报 精彩不止一点关闭
关于ansible的playbook模板和facts的后续文档

很简单,就是补充上次的文档,这里会写点自己ansible实战中遇到的种种问题及如何解决问题的思路,给大家扯扯。

http://rfyiamcool.blog.51cto.com/1030776/1413031

上次的文章有些偏语法,那 ! 我们来一个简单的实战吧,用ansible的playbook配置nginx,是有点过于简单了。。。。。

nginx的模板:

worker_processes {{ ansible_processor_count }};
pid /var/run/nginx.pid;
worker_connections {{ connections }} ;
# multi_accept on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip_disable "msie6";
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
map $scheme $server_https {
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

配置nginx的ansible playbook模板

connections : "1024"
get_url: url=http://10.10.10.67:8000/ceshi?ip={{ ansible_hostname }} dest=/etc/ansible/facts.d/vhost.fact mode=0777
- name: install nginx
action: yum name=nginx state=latest
- name: write nginx.conf
action: template src=nginx.conf dest=/etc/nginx/nginx.conf
- name: restart nginx
action: service name=nginx state=restarted

好了,咱们看看结果吧:

wKiom1N4yk-hsAJBAALbWA3nnqg712.jpg

有时候咱们可以在playbook直接区分系统,而不用在模板中。

when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'

举一反三,这样类似的facts有很多的。

大家有注意到我连接了一个http接口,这个是做啥的? 我给接口get传递了我的hostname信息,接口通过数据库查询后,用jinja2模板返回了我一个nginx.conf配置。 这个方法是靠谱的,我已经用在了两个项目上了。

有兴趣的朋友可以看看tornado的模板渲染nginx配置,如果朋友们想做运维平台化,推荐使用这方法,我知道的几家 腾讯,金山,人人,百度等 都用了这些个方法。当然他们的处理逻辑更复杂,但主要思路都是采用模板来渲染的配置文件。 有点�铝恕S行巳さ呐笥芽梢砸豢础/span>

http://rfyiamcool.blog.51cto.com/1030776/1393371

看完了,就可以做成我这样的接口了。 像我们这边,每个机组下的nginx的server{}块都在数据库里面是有体现的,这些又会和cmdb资产系统想关联。 所以在playbook的host不管有多少个,他都可以精确的调用接口渲染nginx的配置文件。

get_url: url=http://10.10.10.67:8000/ceshi?ip={{ ansible_hostname }

对于大量的信息配置,还有一个方法是利用ansible的模块,返回json的facts信息,然后传递给模板文件。(这方法其实也行,和第一个接口的方式大同小异)

本文出自 "峰云,就她了。" 博客,谢绝转载!

Web服务之LNMMP架构及动静分离实现  阅读原文»

用户名:hoo_5
文章数:31 评论数:5
访问量:2910无忧币:717博客积分:484:3 注册日期:2013-09-18

Web服务之LNMMP架构及动静分离实现

一、LNMMP

LNMMP环境是Linux + Nginx + Memcached + MySQL + PhP,即LNMP + memcached。

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

二、工程拓扑

wKiom1N4iVbBfTQjAAC0cRxVX3w956.jpg

三、安装nginx服务器

# yum -y install "Development tools" "Server Platform Development"
2)解决依赖 pcre-devel openssl-devel
# yum -y install pcre-devel openssl-devel
# groupadd -r nginx
# useradd -r -g nginx nginx
4)编译安装nginx-1.4.7
# tar xf nginx-1.4.7.tar.gz
# cd nginx-1.4.7
# ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf --error-log-path=\ /var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock \--user=nginx --group=nginx --with-http_ssl_module \
--with-http_flv_module --with-http_stub_status_module \
--with-http_gzip_static_module --http-client-body-temp-path=\ /var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=\
/var/tmp/nginx/scgi --with-pcre
# make && make install
# /usr/sbin/nginx -t
# vim /etc/rc.d/init.d/nginx
# nginx - this script starts and stops the nginx daemon
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
# make required directories
user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo阅读更多内容

没有评论:

发表评论