Ansible教程:Jinja2 模板-使用变量、facts事实变量

准备 playbook

创建 playbook 文件:

nano playbook_模板.yml

内如:

---
- name: 部署nginx配置模板
  hosts: web
  vars:                             # 定义变量
    nginx_port: 8080
    server_name: test.example.com
    sites:
      - name: site1
        root: /data/site1
      - name: site2
        root: /data/site2
  tasks:
    - name: 推送渲染后的nginx.conf
      template:
        src: ansible_templates/nginx.conf.j2   # 本地模板文件路径(相对playbook)
        dest: /etc/nginx/nginx_测试.conf    # 远端生成文件路径
        backup: true                   # 文件变化前备份原文件

模板使用变量、facts事实变量

创建 ansible_templates 目录,用于存放模板:

mkdir ansible_templates

创建模板

nano ansible_templates/nginx.conf.j2

内容:

# 自定义变量
port = {{ nginx_port }}

# 获取ansible内置facts
# 主机名
hostname = {{ ansible_facts.hostname }}
# ipv4地址
ip = {{ ansible_facts.default_ipv4.address }}

模拟执行:

ansible-playbook playbook_模板.yml  -C -i ansible_client.ini

执行:

ansible-playbook playbook_模板.yml  -i ansible_client.ini

执行

模拟执行

ansible-playbook playbook_模板.yml  -C -i ansible_client.ini

执行

ansible-playbook playbook_模板.yml  -i ansible_client.ini -b