1. 案例1:创建jinja2的nginx的主配置文件
  1) 编写jinja2的nginx的主配置文件

 1 [root@test-1 jinja2]# vim /ansible/jinja2/test.yaml
2 [root@test-1 jinja2]# cat /ansible/jinja2/test.yaml
3 ---
4 - hosts: web1
5 vars:
6 http_prot: 80
7 server_name: test.scajy.cn
8
9 tasks:
10 - name: copy nginx config file
11 template:
12 src: site.j2
13 dest: /etc/nginx/conf.d/site2.conf
14 notify: reload nginx
15
16 handlers:
17 - name: reload nginx
18 service:
19 name: nginx
20 state: reloaded

2) 创建nginx的jinja2的site.j2的配置文件

1 [root@test-1 jinja2]# cat /ansible/jinja2/site.j2
2 server {
3 listen {{http_prot}};
4 server_name {{server_name }}};
5 location / {
6 root /var/www/html;
7 index index.html;
8 }
9 }

3) 执行远程安装

 1 [root@test-1 jinja2]# ansible-playbook  test.yaml
2
3 PLAY [web1] *************************************************************************************************************************************************************
4
5 TASK [Gathering Facts] **************************************************************************************************************************************************
6 ok: [192.168.200.133]
7 ok: [192.168.200.132]
8
9 TASK [copy nginx config file] *******************************************************************************************************************************************
10 changed: [192.168.200.132]
11 changed: [192.168.200.133]
12
13 RUNNING HANDLER [reload nginx] ******************************************************************************************************************************************
14 changed: [192.168.200.132]
15 changed: [192.168.200.133]
16
17 PLAY RECAP **************************************************************************************************************************************************************
18 192.168.200.132 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
19 192.168.200.133 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

4) 远程测试是否web1组里的是否正常

1 [root@test-1 jinja2]# curl 192.168.200.132 -H "Host:test.scajy.cn"
2 hello Ansible
3 [root@test-1 jinja2]# curl 192.168.200.133 -H "Host:test.scajy.cn"
4 hello Ansible

2. 案例2:创建jinja2的upstream反向代理nginx配置测试
  1) 编写jinja2的nginx的主配置文件

 1 [root@test-1 jinja2]# vim /ansible/jinja2/test.yaml
2 [root@test-1 jinja2]# cat /ansible/jinja2/test.yaml
3 ---
4 - hosts: web1
5 vars:
6 http_prot: 80
7 server_name: test.scajy.cn
8
9 tasks:
10 - name: copy nginx config file
11 template:
12 src: site.j2
13 dest: /etc/nginx/conf.d/site2.conf
14 notify: reload nginx
15
16 handlers:
17 - name: reload nginx
18 service:
19 name: nginx
20 state: reloaded

2) 创建nginx的jinja2的site.j2的配置文件

 1 [root@test-1 jinja2]# vim site_upstream.j2
2 [root@test-1 jinja2]# cat site_upstream.j2
3 {% set list=['132','133'] %}
4 upstream {{server_name}} {
5 {% for i in list %}
6 server 192.168.200.{{i}}:80;
7 {% endfor%}
8
9 }
10
11 server {
12 listen {{http_prot}};
13 server_name {{server_name }};
14 location / {
15 root /var/www/html;
16 index index.html;
17 }
18 }

3) ansible执行test.yaml文件,执行远程安装

 1 [root@test-1 jinja2]# ansible-playbook test.yaml
2
3 PLAY [web1] ******************************************************************************************************************************************************************************************************************************************************************
4
5 TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
6 ok: [192.168.200.132]
7 ok: [192.168.200.133]
8
9 TASK [copy nginx config file] ************************************************************************************************************************************************************************************************************************************************
10 changed: [192.168.200.132]
11 changed: [192.168.200.133]
12
13 RUNNING HANDLER [reload nginx] ***********************************************************************************************************************************************************************************************************************************************
14 changed: [192.168.200.133]
15 changed: [192.168.200.132]
16
17 PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
18 192.168.200.132 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
19 192.168.200.133 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

4) 远程验证是否发布成功

 1 [root@test-1 jinja2]# ansible  web1 -m shell -a "cat /etc/nginx/conf.d/site2.conf "
2 192.168.200.133 | CHANGED | rc=0 >>
3 upstream test.scajy.cn {
4 server 192.168.200.132:80;
5 server 192.168.200.133:80;
6
7 }
8
9 server {
10 listen 80;
11 server_name test.scajy.cn;
12 location / {
13 root /var/www/html;
14 index index.html;
15 }
16 }
17
18 192.168.200.132 | CHANGED | rc=0 >>
19 upstream test.scajy.cn {
20 server 192.168.200.132:80;
21 server 192.168.200.133:80;
22
23 }
24
25 server {
26 listen 80;
27 server_name test.scajy.cn;
28 location / {
29 root /var/www/html;
30 index index.html;
31 }
32 }

ansible-playbook-jinja2管理nginx配置文件的更多相关文章

  1. Ansible 使用 Playbook 管理 Nginx 配置文件

    前面我们已经安装完 Nginx,但是在日常维护中经常需要修改配置文件,并重新加载配置文件,因此来写一个管理 Nginx 配置文件的 Playbook: [root@localhost ~]$ mkdi ...

  2. ansible使用jinja2管理配置文件以及jinja2语法简介

    一.Jinja2介绍 Jinja2是基于python的模板引擎,功能比较类似于PHP的smarty,J2ee的Freemarker和velocity.它能完全支持unicode,并具有集成的沙箱执行环 ...

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

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

  4. Etcd+Confd实现Nginx配置文件自动管理

    一.需求 我们使用Nginx做七层负载均衡,后端是Tomcat.项目采用灰度发布方式,每次项目升级,都要手动先从Nginx下摘掉一组,然后再升级这组,当项目快速迭代时,手动做这些操作显然会增加部署时间 ...

  5. 2.Ansible Playbook剧本

    1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...

  6. Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)

    一 Ansible自动化运维工具 Python 在运维工作中的经典应用 ansible(批量管理操作) .安装ansible(需要bese epel 2种源) wget -O /etc/yum.rep ...

  7. Ansible批量自动化管理工具

    一,工具与环境介绍 1.1 ansible简介 批量管理服务器的工具 无需部署agent,通过ssh进行管理 流行的自动化运维工具:https://github.com/ansible/ansible ...

  8. Ansible批量自动化管理工具(二)

    Ansible批量自动化管理工具(二) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打开百度网盘手机App,操 ...

  9. ansible基础-Jinja2模版 | 过滤器

    Jinja2模版介绍 注:本文demo使用ansible2.7稳定版 在ansible基础-变量的「8.2 模版使用变量」章节中关于模版与变量也有所提及,有兴趣的同学可以去回顾一下. ansible通 ...

随机推荐

  1. The Triangle (简单动态规划)

    7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number triangle. Write a program that calc ...

  2. django学习(三)

    1.单表操作和测试环境的准备 我们先对单表查询做一个总结和回顾,并进行进一步的学习和交流.我们在我们的应用的models.py文件下面书写user类.如下所示,然后用数据库迁移,在mysql数据库中生 ...

  3. 目标检测中的IOU和CIOU原理讲解以及应用(附测试代码)

    上期讲解了目标检测中的三种数据增强的方法,这期我们讲讲目标检测中用来评估对象检测算法的IOU和CIOU的原理应用以及代码实现. 交并比IOU(Intersection over union) 在目标检 ...

  4. 转载:把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架构,微服务,以及相关的项目管理等等,这样你的核心竞争力才会越来越高

    https://developer.51cto.com/art/202001/608984.htm 把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架 ...

  5. Openresty使用

    OpenResty是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,常用的第三方模块以及大多数依赖项. 可以把它看成是Nginx附加众多的第三方插件的合集.其主体是嵌入lua脚本的 ...

  6. [04] C# Alloc Free编程之实践

    C# Alloc Free编程之实践 上一篇说了Alloc Free编程的基本理论. 这篇文章就说怎么具体做实践. 常识 之所以说是常识, 那是因为我们在学任何一门语言的时候, 都能在各种书上看到各种 ...

  7. Coneology(POJ 2932)

    原题如下: Coneology Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4937   Accepted: 1086 D ...

  8. 2. 构建DNS集群

    DNS是什么 DNS(Domain Name System,域名系统),是互联网上存储域名和IP映射关系的一个分布式数据库,他负责把域名转换为IP地址,或IP转换为域名,工作于OSI应用层之上,DNS ...

  9. EF CodeFirst学习

    EF CodeFirst 真是时光如梦,岁月如歌,自己一不留神就被后浪拍在了沙滩上,就连我要学的这个东西也是12年就在博客园很火了. EF有三种开发模式,DatabaseFirst, ModelFir ...

  10. Magento中数据拷贝一实现

    Mage_Sales_Model_Quote::setCustomer方法,有这么一行代码 Mage::helper('core')->copyFieldset('customer_accoun ...