ansible运维自动化之四---playbook高级用法

Template语法

在这里插入图片描述

示例-1

[root@longma-node13-808 ansible]# mkdir /root/files/templates -pv

目录名templates不能错
ansible web -m setup |less  
ansible 172.18.0.67 -m setup  可以收集主机的信息
左边是变量,右边是值,都可以在j2模板中去使用

ansible 172.18.0.67 -m setup |grep vcpus 查看主机是几核心的

cp /root/files/nginx.conf  /root/files/templates/nginx.conf.j2
vim /root/files/templates/nginx.conf.j2 
修改下面这行
worker_processes {{ ansible_processor_vcpus }};
# 支持加减乘除  worker_processes {{ ansible_processor_vcpus*2 }};

vim web2.yml

---
- hosts: web
  remote_user: root
  tasks:
  - name: nginx conf sync
    template: src=/root/files/templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf

注意 template和templates的位置

示例2-使用for循环

vim /root/files/templates/nginx.conf.j2
在文件最后添加

{% for node in webs %}  #webs是下面web3.yml中的变量
server {
        listen 80;
        server_name {{ node }}  #这里是双括号
        root /usr/share/nginx/html;

        location / {

        }
}
{% endfor %}  #这里是单括号

vim web3.yml

---

- hosts: web
  remote_user: root
  vars:
  - webs:
    - node1
    - node2
    - node3 
  tasks:
  - name: multi server
    template: src=/root/files/templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf
#效果
vim /etc/nginx/nginx.conf 
server {
	listen 80;
        server_name node1
        location / {
    }
}
server {
	listen 80;
        server_name node2
        location / {
    }
}
server {
	listen 80;
        server_name node3
        location / {
    }
}

示例3 使用if语句

vim /etc/ansible/hosts
[web]
192.168.1.113 hostname=longma-node13
192.168.1.117 hostname=longma-node17 http_port=80
192.168.1.118 hostname=longma-node18 http_port=808

vim /root/files/templates/nginx.conf.j2


{% for node in webs %}
server {
        {% if http_port is defined %}
        listen {{ http_port }};
        {% endif %}  #这里是endif
        server_name {{ node }}
        root /usr/share/nginx/html;

        location / {

        }
}

{% endfor %}  #这里是endfor

ansible-playbook web3.yml

示例4 一次安装多个软件
---

- hosts: web
  remote_user: root
  tasks:
  - name: install app
    yum: name={{ item }} state=installed
    with_items:
      - nginx
      - httpd
      - php
示例5 一次添加多个用户
---

- hosts: web
  remote_user: root
  tasks:
  - name: useradd multi
    user: name={{ item }}
    with_items:
      - user5
      - user6
      - user7
示例6 一次添加多个用户,且加入到不同的组
---

- hosts: web
  remote_user: root
  tasks:
  - name: groupadd
    group: name={{ item }}
    with_items:
     - group5
     - group6
     - group7

  - name: useradd multi
    user: name={{ item.username }} group={{ item.groupname }}
    with_items:
      - { username: "user5", groupname: "group5" }
      - { username: "user6", groupname: "group6" }
      - { username: "user7", groupname: "group7" }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值