目录

一、部署文件的常用模块

二、使用jinja2文件部署自定义文件


一、部署文件的常用模块

部署文件常用模块有

  • file 创建、删除文件或目录,修改selinux上下文。
  • copy 复制文件到受控节点上,也可以直接在受控结点上创建文件。
  • fetch 从受控结点获取文件。
  • lineinfile 修改文件。
  • blockinfile 修改文件。
  • sefcontext 和 seport 模块可以持久修改 selinux 上下文。

这些模块的使用方法都可以通过 ansible-doc 查看文档,找例子修改一下就可以使用。

二、使用jinja2文件部署自定义文件

Ansible 将 jinja2 模板系统用于模板文件。Ansible 还使用 jinja2 语法来引用 playbook 中的变量。

  • 使用 {% EXPR %} 表达式反映循环或判断
  • 使用 {{ }} 反映变量的替换
  • 使用 {# COMMENT #} 语法括起不应出现在最终文件中的注释

jinja2 模板通过 template 模块部署到受管主机上,用法类似于 copy,但是生成文件的内容就很牛逼了。

注意:可以在 Ansible 模板中使用 jinja2 循环和条件,但不能在 Ansible Playbook 中使用。

.j2 模板编写举例,结合 hostvars、groups、ansible_facts 等来编写 jinja2 模板,并用 plabook 生成 /etc/myhosts 文件。

我们把 dev 组上的 /etc/hosts 文件获取到本地,命名为 hosts.j2。

[student@workstation ansible]$ ansible dev -m fetch -a "src=/etc/hosts dest=./hosts.j2 flat=yes"
[student@workstation ansible]$ cat hosts.j2
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

编辑 hosts.j2。用魔法变量 groups.all 遍历所有主机。用魔法变量 hostvars 获取所有主机的 ansible_facts ,从而取得他们的IP地址、FQDN 和 hostname。

[student@workstation ansible]$ vim hosts.j2 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6{% for host in groups.all %}
{{ hostvars[host].ansible_facts.default_ipv4.address }} {{ hostvars[host].ansible_facts.fqdn }} {{ hostvars[host].ansible_facts.hostname }}
{% endfor %}

编写 hosts.yml 对所有主机生成 /tmp/hosts 文件,里面应当包含所有主机的IP地址、FQDN 和 hostname。

[student@workstation ansible]$ vim hosts.yml---
- hosts: alltasks:- name: Create /tmp/hoststemplate:src: hosts.j2dest: /tmp/hosts

执行并验证。

[student@workstation ansible]$ ansible-playbook hosts.yml --syntax-check
[student@workstation ansible]$ ansible-playbook hosts.yml --check
[student@workstation ansible]$ ansible-playbook hosts.yml
[student@workstation ansible]$ ansible all -a "cat /tmp/hosts"serverb.lab.example.com | CHANGED | rc=0 >>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.27.133 servera.lab.example.com servera
192.168.27.134 serverb.lab.example.com serverb
192.168.27.135 serverc.lab.example.com serverc
192.168.27.136 serverd.lab.example.com serverdserverc.lab.example.com | CHANGED | rc=0 >>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.27.133 servera.lab.example.com servera
192.168.27.134 serverb.lab.example.com serverb
192.168.27.135 serverc.lab.example.com serverc
192.168.27.136 serverd.lab.example.com serverd......

Ansible05-部署文件相关推荐

  1. Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)...

    Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt) 作者: Desmond Chen, 发布日期: 2014-05 ...

  2. 如何生成WebPart的部署文件(wsp文件)

    使用VS2008进行WebPart开发时,用其自带的部署菜单项进行部署时,总是有各种各样的错误,最终无法生成部署文件和部署批处理文件.所以我一直想搞清楚VS2008是如何生成这些部署文件的.现在终于有 ...

  3. java计算机毕业设计网上花店源码+系统+mysql数据库+LW文档+部署文件

    java计算机毕业设计网上花店源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计网上花店源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构:B/S架构 开 ...

  4. java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件

    java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构:B ...

  5. java计算机毕业设计网上花店系统源码+系统+mysql数据库+LW文档+部署文件

    java计算机毕业设计网上花店系统源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计网上花店系统源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构:B/S ...

  6. java计算机毕业设计网上宠物售卖平台源码+系统+mysql数据库+LW文档+部署文件

    java计算机毕业设计网上宠物售卖平台源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计网上宠物售卖平台源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构 ...

  7. suse linux系统误删除文件恢复,Linux系统下部署文件恢复神器extundelete恢复误删的文件...

    Linux系统下部署文件恢复神器extundelete恢复误删的文件 最近看到群里提到如何恢复LINUX下ext4误删的文件,之前听说过ext3分区恢复工具ext3grep,恢复ext4刚是用extu ...

  8. 小米开源框架MACE 创建模型部署文件

    转载自https://www.jianshu.com/p/823f7d7eaf58 文章内容翻译自 MACE 官方手册,记录本人阅读与开发过程,力求不失原意,但推荐阅读原文. https://medi ...

  9. vs2005生成安装部署文件的步骤

    vs2005生成安装部署文件的步骤 1 新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定. 2 安装向导 关闭后打开安 ...

  10. 代码组织和部署 文件操作 node.js

    代码组织和部署 模块的路径解析规则 require支持/或者盘符的绝对路径,也支持./开头的相对地址 同时require也支持第三种写法 内置模块 如果传递给require的函数是node.js的内置 ...

最新文章

  1. 光耦p621引脚图_开关电源中光耦电路的设计与优点
  2. 【树的直径】 POJ 1985 Cow Marathon
  3. poj2965 【枚举】
  4. linux 本机发送邮件 smtp-server 553,Zabbix监控之邮件发送失败-smtp-server: 错误代码550与535...
  5. Effective Java之注解优于命名模式(三十五)
  6. 有效前沿—让你的投资收益最大化
  7. 编程应该用 Mac ,还是 PC ?
  8. WEB安全基础-Javascrp相关知识点之BOM
  9. WordPress 极简约风格smalls-one主题
  10. WordPress主题LensNews1.8模板源码,WP多功能新闻积分商城主题
  11. Apache2月9日邮件:Tomcat请求漏洞(Request Smuggling)
  12. LG电子计划到2010年实现利润翻番
  13. 剑桥教授项目 | 机器学习在推荐系统中的应用
  14. 华为ENSP模拟器的安装
  15. IMU预积分推导——公式准备
  16. mysql的常用引擎
  17. 2022天府杯国际赛数学建模题目和思路
  18. 12v电瓶20安时是什么意思
  19. 简述74HC595功能
  20. 理解flask中的蓝图

热门文章

  1. 计算机专业每年都有国企招老吗,这十大专业在国企中最受欢迎,待遇高、前景好,有你的专业吗?...
  2. 查看linux虚拟机信息,虚拟机:Linux查看线程信息的步骤
  3. windows系统和linux系统可以使用相同的js代码吗_「React 手册 」在 Windows 下使用 React , 你需要注意这些问题...
  4. CSS超出隐藏并且能滚动
  5. bzoj 4025 二分图——线段树分治+LCT
  6. inet_pton和inet_ntop函数
  7. 383. Ransom Note/691. Stickers to Spell Word-- String, Map, back tracking-- 未完待续
  8. Java数组合并,完成排序,从时间复杂度,和空间复杂度考虑
  9. 2星|《快公司》2018年2-3期:商业人物访谈集
  10. 配置国内 Docker Registry Mirror