Ansible05-部署文件
目录
一、部署文件的常用模块
二、使用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-部署文件相关推荐
- Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)...
Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt) 作者: Desmond Chen, 发布日期: 2014-05 ...
- 如何生成WebPart的部署文件(wsp文件)
使用VS2008进行WebPart开发时,用其自带的部署菜单项进行部署时,总是有各种各样的错误,最终无法生成部署文件和部署批处理文件.所以我一直想搞清楚VS2008是如何生成这些部署文件的.现在终于有 ...
- java计算机毕业设计网上花店源码+系统+mysql数据库+LW文档+部署文件
java计算机毕业设计网上花店源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计网上花店源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构:B/S架构 开 ...
- java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件
java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构:B ...
- java计算机毕业设计网上花店系统源码+系统+mysql数据库+LW文档+部署文件
java计算机毕业设计网上花店系统源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计网上花店系统源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构:B/S ...
- java计算机毕业设计网上宠物售卖平台源码+系统+mysql数据库+LW文档+部署文件
java计算机毕业设计网上宠物售卖平台源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计网上宠物售卖平台源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构 ...
- suse linux系统误删除文件恢复,Linux系统下部署文件恢复神器extundelete恢复误删的文件...
Linux系统下部署文件恢复神器extundelete恢复误删的文件 最近看到群里提到如何恢复LINUX下ext4误删的文件,之前听说过ext3分区恢复工具ext3grep,恢复ext4刚是用extu ...
- 小米开源框架MACE 创建模型部署文件
转载自https://www.jianshu.com/p/823f7d7eaf58 文章内容翻译自 MACE 官方手册,记录本人阅读与开发过程,力求不失原意,但推荐阅读原文. https://medi ...
- vs2005生成安装部署文件的步骤
vs2005生成安装部署文件的步骤 1 新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定. 2 安装向导 关闭后打开安 ...
- 代码组织和部署 文件操作 node.js
代码组织和部署 模块的路径解析规则 require支持/或者盘符的绝对路径,也支持./开头的相对地址 同时require也支持第三种写法 内置模块 如果传递给require的函数是node.js的内置 ...
最新文章
- 光耦p621引脚图_开关电源中光耦电路的设计与优点
- 【树的直径】 POJ 1985 Cow Marathon
- poj2965 【枚举】
- linux 本机发送邮件 smtp-server 553,Zabbix监控之邮件发送失败-smtp-server: 错误代码550与535...
- Effective Java之注解优于命名模式(三十五)
- 有效前沿—让你的投资收益最大化
- 编程应该用 Mac ,还是 PC ?
- WEB安全基础-Javascrp相关知识点之BOM
- WordPress 极简约风格smalls-one主题
- WordPress主题LensNews1.8模板源码,WP多功能新闻积分商城主题
- Apache2月9日邮件:Tomcat请求漏洞(Request Smuggling)
- LG电子计划到2010年实现利润翻番
- 剑桥教授项目 | 机器学习在推荐系统中的应用
- 华为ENSP模拟器的安装
- IMU预积分推导——公式准备
- mysql的常用引擎
- 2022天府杯国际赛数学建模题目和思路
- 12v电瓶20安时是什么意思
- 简述74HC595功能
- 理解flask中的蓝图
热门文章
- 计算机专业每年都有国企招老吗,这十大专业在国企中最受欢迎,待遇高、前景好,有你的专业吗?...
- 查看linux虚拟机信息,虚拟机:Linux查看线程信息的步骤
- windows系统和linux系统可以使用相同的js代码吗_「React 手册 」在 Windows 下使用 React , 你需要注意这些问题...
- CSS超出隐藏并且能滚动
- bzoj 4025 二分图——线段树分治+LCT
- inet_pton和inet_ntop函数
- 383. Ransom Note/691. Stickers to Spell Word-- String, Map, back tracking-- 未完待续
- Java数组合并,完成排序,从时间复杂度,和空间复杂度考虑
- 2星|《快公司》2018年2-3期:商业人物访谈集
- 配置国内 Docker Registry Mirror