Ansible template笔记

一般情况下,建议将templates目录建在与playbook同级。

template本身也是一个模块,注意这里我们建的目录是templates,但是模块名是template。

[root@localhost ansible]# ansible-doc -s template

特别注意的是,template虽然是一个模块,但是它不可以用在单行直接执行的ansible命令中,即不可以用在ad-hoc中,只能用在playbook中。

由于在实际应用中,可能会有多台机器,但是不同的机器可能自身硬件的配置比如cpu/内存等等可能都不太一样,如果在执行playbook时想根据不同的机器性能条件来做不同的配置,就需要使用template来实现。以nginx中的conf文件为例,要实现的用例是使nginx的work process是linux cpu个数的两倍,也就是说多台机器下,不同的cpu个数对应会在不同的机器上启动不同数量的nginx进程。我们可以将原始的nginx.conf拷贝过来进行修改,将work process的配置修改为cpu个数的2倍(这里以2倍为例),然后将该conf放在前面创建的templates目录下,且以.j2作为文件结尾,表示模板文件。

原始的nginx.conf中的work process配置是auto,也就是根据cpu个数自动来决定启动多少个进程。我们可以先用原始的conf作为template文件来启动一下nginx,先在本机上装一个nginx,然后将conf拷贝到templates目录下:

[root@localhost ansible]# cp /etc/nginx/nginx.conf /etc/ansible/templates/nginx.conf.j2

可以看到原始的work process配置是auto:

编写playbook:

[root@localhost ansible]# cat test-tmpl0906.yml
---
- hosts: wyh-test
  remote_user: root

  tasks:
    - name: install package
      yum: name=nginx
    - name: copy template
      template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf      #src指的是模板的路径,如果写的是相对路径的话,它是默认从templates目录下找的。放到被控机器上时我们是要把文件名改回原来的样子,所以去掉.j2
    - name: start service
      service: name=nginx state=started enabled=yes

执行后可以看到有一个nginx进程,因为我们的linux cpu是1:

接下来就开始尝试用我们的模板文件设置process根据cpu的2倍来设置,先修改nginx.conf.j2文件(ansible_processor_vcpus是ansible自身的一个变量,用以表示cpu个数,可以使用setup模块来查看ansible的变量):

 修改playbook:

[root@localhost ansible]# cat test-tmpl0906.yml
---
- hosts: wyh-test
  remote_user: root

  tasks:
    - name: install package
      yum: name=nginx
    - name: copy template
      template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
      notify: restart service                #因为前面我们已经启动了nginx,所以这里必须使用notify来使handler调用任务来执行重启nginx的操作使新的conf文件生效。notify这里指定的使handler里的name值
    - name: start service
      service: name=nginx state=started enabled=yes

  handlers:
    - name: restart service
      service: name=nginx state=restarted

执行之后再去查看就可以发现这次的nginx进程数已经变成2个了:

 可以看到conf中的配置也是自动变成了2:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值