根据不同cpu个数生成不同的配置文件,以nginx为例

ansible的template ansible的template模块_配置文件

ansible的template ansible的template模块_nginx_02

建议创建文件夹存放templates

ansible的template ansible的template模块_ansible的template_03


playbook和templates平级存放(建议)

ansible的template ansible的template模块_键值对_04


ansible的template ansible的template模块_键值对_05


template本身为一个模块 ansible-doc -s template -s简要查看信息

ansible的template ansible的template模块_键值对_06

template模块只能用于写入playbook 不能命令行调用

以nginx的配置文件为例 生成一个template文件,后缀必须为 .j2

ansible的template ansible的template模块_配置文件_07

template: 后面可写绝对路径 ,若存放在templates文件夹下 则可自动找到该模板
类似于copy功能 源文件为模板文件 后缀为 .j2 现在的目的地址则该改为正常的格式

ansible的template ansible的template模块_键值对_08

运行该脚本 并查看是否安装上 80端口

ansible的template ansible的template模块_键值对_09

ansible的template ansible的template模块_配置文件_10

进程数和CPU数是一样的

ansible的template ansible的template模块_ansible的template_11


安装n’gin’x需要配置epel源

ansible的template ansible的template模块_键值对_12

ansible的template ansible的template模块_键值对_13

ansible的template ansible的template模块_nginx_14


setup模块查看系统cpu相关变量

ansible的template ansible的template模块_配置文件_15

修改template文件 使用该变量

ansible的template ansible的template模块_配置文件_16

修改之前写过的playbook,由于更改了配置文件,必须重启该服务 增加一个触发器
注意handlers和tasks 位置是平等的

ansible的template ansible的template模块_nginx_17

执行该playbook

ansible的template ansible的template模块_nginx_18

到被控主机上查看nginx进程数量

ansible的template ansible的template模块_ansible的template_19

将变量定义到hosts文件中

ansible的template ansible的template模块_ansible的template_20

更改模板中的监听端口 使用定义在hosts文件中的变量

ansible的template ansible的template模块_ansible的template_21

执行playbook

ansible的template ansible的template模块_键值对_22

不同主机监听了不同的端口号

ansible的template ansible的template模块_nginx_23

使用在playbook中定义的变量

ansible的template ansible的template模块_键值对_24

playbook中变量优先级高于hosts文件

ansible的template ansible的template模块_键值对_25

ansible的template ansible的template模块_配置文件_26


ansible的template ansible的template模块_nginx_27


ansible的template ansible的template模块_nginx_28

根据centOS不同的版本使用不同的模板文件
6和7的配置文件是不一样的

ansible的template ansible的template模块_ansible的template_29

可看到跳过的效果

ansible的template ansible的template模块_nginx_30

模板支持迭代

ansible的template ansible的template模块_nginx_31

ansible的template ansible的template模块_nginx_32

When +迭代

ansible的template ansible的template模块_配置文件_33

ansible的template ansible的template模块_配置文件_34

添加组

ansible的template ansible的template模块_键值对_35


查看

ansible的template ansible的template模块_配置文件_36

ansible的template ansible的template模块_nginx_37

ansible的template ansible的template模块_nginx_38

ansible的template ansible的template模块_配置文件_39

ansible的template ansible的template模块_配置文件_40

ansible的template ansible的template模块_配置文件_41

ansible的template ansible的template模块_ansible的template_42

ansible的template ansible的template模块_配置文件_43

变量名 变量列表

ansible的template ansible的template模块_键值对_44

编写template 模板文件 模板文件内使用for子句

ports为变量列表 来自playbook中的变量名

ansible的template ansible的template模块_ansible的template_45


查看结果

ansible的template ansible的template模块_配置文件_46


将变量列表写成字典形式

ansible的template ansible的template模块_键值对_47


模板文件里写法有变 指定键名

ansible的template ansible的template模块_配置文件_48

多个键值对

ansible的template ansible的template模块_ansible的template_49

p为取一组变量 一组变量内有多个键值对(-为分隔) 指定需要的键值(port)

ansible的template ansible的template模块_键值对_50


ansible的template ansible的template模块_键值对_51

效果

ansible的template ansible的template模块_ansible的template_52

if

ansible的template ansible的template模块_nginx_53

注释掉变量列表里的一部分键值对

ansible的template ansible的template模块_ansible的template_54


ansible的template ansible的template模块_键值对_55


效果

ansible的template ansible的template模块_ansible的template_56