ansible 之 template(模板)
ansible template 介绍
-
可以将带有参数的配置文件传递到目标地址,可以对文件进行属组属主的修改以及备份
Jinja2
-
Jinja2是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker和velocity。它能完全支持unicode,并具有集成的沙箱执行环境,应用广泛。jinja2使用BSD授权。
案例:在 node1 节点上安装服务,并将服务配置发送给 node2,通过剧本
(1)node1 节点上安装 apache 服务
[root@node1 ~]# yum -y install httpd
(2)拷贝node1 apache 配置文件到 master 上
[root@master ~]# mkdir httpd [root@master ~]# scp root@20.0.0.12:/etc/httpd/conf/httpd.conf httpd [root@master ~]# cd httpd/ [root@master httpd]# ll 总用量 12 -rw-r--r--. 1 root root 11753 1月 10 18:50 httpd.conf
(3)修改需要到其他节点上的配置为变量
[root@master ~]# vi httpd/httpd.conf
Listen 80 修改 Listen {
{
ip_port}} # 变量为 ip_port
#ServerName www.example.com:80 修改 ServerName {
{
yuming_port}}
MaxClients {
{
num}} # 添加最大连接数,变量为 num
(4)将此配置文件修改为模板文件
-
修改为 j2 模板文件可以被 template 模块直接识别
[root@master ~]# cd httpd/ [root@master httpd]# mv httpd.conf httpd.conf.j2
(5)在ansible 配置文件中的主机标识添加值(可指定那一台主机)
[root@master ~]# vi /etc/ansible/hosts [server2] 20.0.0.13 ip_port=20.0.0.13:80 yuming_port=www.aa.com:80 num=600
(6)编写yaml
[root@master ~]# vi apache.yaml
- hosts: server2
remote_user: root
vars:
- server: httpd
tasks:
- name: install apache
yum: name={
{
server}} state=latest
- name: config file
template: src=/root/httpd/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
notify:
- restart httpd
- name: start httpd
service: name={
{
server}} state=started
handlers :
- name: restart httpd
service: name={
{
server}} state=restarted enabled=true
[root@master ~]# ansible-playbook apache.yaml
(7)node2 节点验证
-
是否安装apache
[root@node2 ~]# rpm -q httpd httpd-2.4.6-67.el7.centos.x86_64
-
服务状态
[root@node2 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 四 2021-01-14 22:45:46 CST; 9min ago
Docs: man:httpd(8)
man:apachectl(8)
查看配置文件是否修改
[root@node2 ~]# vi /etc/httpd/conf/httpd.conf Listen 20.0.0.13:80 ServerName www.aa.com:80 MaxClients 600
