Ansible中的每个模块专注于某一方面的功能。虽然每个模块实现的功能都比较简单,但是,将各个模块结合起来就可以实现比较复杂的功能。在Ansible中,将各个模块组合起来的文件是一个YAML格式的配置文件。这个配置文件,在Ansible中称为Playbook。

Nginx示例

---
- hosts: webservers #指定执行任务的主机,可以是一个或多个由冒号分割的主机组
vars: #定义变量
worker_processes: 4
num_cpus: 4
max_open_file: 65506
root: /data/www
remote_user: heboan #指定远程主机上执行任务的用户
sudo: yes
tasks: #定义任务,任务列表中的各任务按次序逐个在hosts指定的主机上执行,即在所有主机上完成一个任务后再开始第二个,如果中途出错,所有已执行的任务都回滚
- name: install depend packages
command: yum install -y gcc gcc-c++ openssl-devel pcre-devel
- name: unarchive nginx-1.12.2.tar.gz
unarchive: src=/etc/ansible/templates/nginx/nginx-1.12.2.tar.gz dest=/home/heboan/tools
- name: create nginx user
user: name=nginx shell=/sbin/nologin
- name: install nginx
shell: cd /home/heboan/tools/nginx-1.12.2 && ./configure --prefix=/opt/app/nginx --user=nginx --group=nginx && make && make install
- name: cp nginx.service
copy: src=/etc/ansible/templates/nginx/nginx.service dest=/usr/lib/systemd/system/nginx.service
- name: copy index.html
copy: src=/etc/ansible/templates/nginx/index.html dest=/data/www/index.html
- name: start nginx
service: name=nginx state=started
- name: write the nginx config file
template: src=/etc/ansible/templates/nginx/nginx2.conf dest=/opt/app/nginx/conf/nginx.conf #这是模板,里面可以识别上面定义的变量
notify: #执行完任务(write the nginx config file)的关联操作
- reload nginx #触发此操作,下面需要定义操作内容
handlers: #定义关联操作
- name: reload nginx #关联操作任务
service: name=nginx state=restarted
user  nginx;
worker_processes {{worker_processes}}; error_log logs/error.log;
pid logs/nginx.pid; events {
worker_connections 1024;
} worker_rlimit_nofile {{max_open_file}}; http {
include mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
tcp_nopush on; keepalive_timeout 65; #gzip on; server {
listen 80;
server_name localhost;
root {{root}}; location / {
} } }

nginx2.conf

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target [Service]
Type=forking
PIDFile=/opt/app/nginx/logs/nginx.pid
ExecStartPre=/opt/app/nginx/sbin/nginx -t -c /opt/app/nginx/conf/nginx.conf
ExecStart=/opt/app/nginx/sbin/nginx -c /opt/app/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true [Install]
WantedBy=multi-user.target

nginx.service

第5天:Ansible-Playbook的更多相关文章

  1. Ansible playbook API 开发 调用测试

    Ansible是Agentless的轻量级批量配置管理工具,由于出现的比较晚(13年)基于Ansible进行开发的相关文档较少,因此,这里通过一些小的实验,结合现有资料以及源码,探索一下Ansible ...

  2. ansible playbook实践(四)-如何调试写好的playbook文件

    有时,我们写了一个长长,功能很强悍的yaml文件,但是,我们有可能会担心,写的yaml文件是否正确,是否有漏洞危机,毕竟是要修改线上的机器,那么,有可能我们可以从以下几个检查维度来进行,确保在大规模应 ...

  3. ansible playbook批量改ssh配置文件,远程用户Permission denied

    最近手里的数百台服务器需要改/etc/ssh/sshd_config的参数,禁止root直接登陆,也就是说 [root@t0 ~]# cat /etc/ssh/sshd_config | grep R ...

  4. ansible笔记(11):初识ansible playbook(二)

    ansible笔记():初识ansible playbook(二) 有前文作为基础,如下示例是非常容易理解的: --- - hosts: test211 remote_user: root tasks ...

  5. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  6. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  7. 写Ansible playbook添加zabbix被监控的对象

    本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...

  8. Ansible playbook基础组件介绍

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  9. ansible playbook基本操作

    一.ansible playbook简单使用 相当于是把模块写入到配置文件里面 vim /etc/ansible/test.yml //写入如下内容: --- - hosts: 127.0.0.1 r ...

  10. ansible入门四(Ansible playbook基础组件介绍)

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

随机推荐

  1. PowerDesigner16 用例图

    用例图主要用来描述角色以及角色与用例之间的连接关系.说明的是谁要使用系统,以及他们使用该系统可以做些什么.一个用例图包含了多个模型元素,如系统.参与者和用例,并且显示这些元素之间的各种关系,如泛化.关 ...

  2. 上下文管理器 contextlib

    from contextlib import contextmanager @contextmanager def tag(name): print "<%s>" % ...

  3. Jmeter-12-如何使用Plugin Manager

    1. 搜索 Jmeter plugin 并找到plugin manager 下载jar文件 2. 放到jmeter/lib/ext下面, 重启jmeter 3. 找到选项-> Plugin ma ...

  4. sumblime快捷键

    原文地址:https://blog.csdn.net/shutfuckingup/article/details/23846603 Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的 ...

  5. csc_滤镜filter和实现透明的两种方式

    有这样一个需求,给一个地图实现半透明效果. 使用css滤镜属性可以实现:filter. 下面是属性的所以值 filter: none | blur() | brightness() | contras ...

  6. this可以通过call改变的测试

  7. Java线程总结(一)

    首先,先贴上一个简单的线程实例: public class MyThread extends Thread{ @Override public void run(){ try { for (int i ...

  8. php中的parse_ini_file函数

    作用:parse_ini_file() 函数解析一个配置文件,并以数组的形式返回其中的设置 格式:parse_ini_file(file,true)// (第二个参数为可选参数.如果设置为 true, ...

  9. Python模块学习 - ConfigParser

    配置文件 很多软件都用到了配置文件,像git运行的时候会读取~/gitconfig,MySQL运行的时候会读取/etc/my.cnf,Python 提供的包管理工具pip命令,也会去读取~/.pip/ ...

  10. KVM初始化过程

    转载:http://blog.csdn.net/dashulu/article/details/17074675 之前打算整理一下在Guest VM, KVM, QEMU中IO处理的整个流程,通过查阅 ...