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. hdu6075 2019CCPC网络选拔赛1004 path

    题意:给定一个带权有向图,有q组询问,每次询问在有向图的所有路径中,第k小的路径权值 解题思路:因为k最大只有5e4,考虑暴力搜索出前maxk小的路径并用数组记录权值,然后就可以O(1)查询. 具体实 ...

  2. 19_Python算法

    1.冒泡算法 list = [1, 5, 2, 6, 9, 3, 4, 0] print(len(list)) # conunt = 1 while conunt < len(list): fo ...

  3. Kafka入门(4):深入消费者

    摘要 在这一篇文章中,我将向你介绍消费者的一些参数. 这些参数影响了每次poll()请求的数据量,以及等待时间. 在这之后,我将向你介绍Kafka用来保证消费者扩展性以及可用性的设计--消费者组. 在 ...

  4. 如何在不使用OleDbCommandBuilder情况下使用OleDbDataAdapter更新Access数据库记录

    我在博客园的博问和微软论坛都曾经请教了这个问题(问题链接),可能我的问题太简单,并没有获得太多解答. 到今天为止,我自己通过查找和摸索,基本把这个问题解决了,还是记录下来,供其他朋友参考. 第一次解决 ...

  5. 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践

    本文是对 <.NET Tutorial - Deploy a microservice to Azure> 的翻译和实践.入门级踩坑实践,k8s 大佬请回避,以免耽误您宝贵的时间. 介绍 ...

  6. ulimit 的认识

    原文出自 通过 ulimit 改善系统性能 概述 系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时 ...

  7. [Java并发]实现两个线程交替打印奇偶数(volatile+yield实现)

    解题思路 实现一个类OddEven 有一个打印奇数的方法,有一个打印偶数的方法. 类中有一个volatile变量 ,用来控制当前状态是该哪个方法打印. 方法中打印每个数前首先判断volatile变量的 ...

  8. 如何借助 IDEA 数据库管理工具可视化使用 TDengine?

    什么是IDEA Database管理工具? 这里首先介绍下IDEA,IDEA全称IntelliJ IDEA,是Java语言开发的集成环境,IntelliJ在业界被公认为最好的Java开发工具之一. I ...

  9. 使用Excel设计fastreport报表

    最近做项目遇到一些报表设计的问题.项目的报表使用 Fast Report,然而该控件调整报表格式比较繁琐,有时候调整某一栏的宽度,整个标题栏都需要调整,且调整以后 还不一定能对齐.客户的很多报表都是基 ...

  10. 学习 | jQuery全屏滚动插件FullPage.js

    简介 fullPage.js是一个基于jQuery的全屏滚动插件,它能够很方便.很轻松的制作出全屏网站. 主要功能 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 C ...