Ansible05-部署文件

news/2024/7/5 2:14:53

目录

一、部署文件的常用模块

二、使用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......


http://lihuaxi.xjx100.cn/news/235873.html

相关文章

COMP 0137 Machine Vision

COMP 0137作业代做、Python实验作业代写、代做Python语言程序作业、代写Machine Vision作业COMP 0137 Machine Vision: Homework #1Due 19th November 2018 at 23:55pmWorth 10% of your overall gradeSubmit online, through MoodleFor this homework, we’ll revisit the pra…

BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗。 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源。 如果你已经进了ETL这个坑,而且预算有限,并且有大量的活要做; 时间紧&am…

Spring事务管理的底层逻辑—源码解析

本文代码为spring 5.1.2spring是如何控制事务的提交和回滚 加上Transactional注解之后,Spring可以启到事务控制的功能了,再正式执行方法前它会做一些操作,我们来看看 首先进入CglibAopProxy.class的intercept方法或者JdkDynamicAopProxy.clas…

堡垒机高危命令正则表达式

堡垒机可以设置高危命令阻断,防止操作人员误操作造成删库跑路。但是什么是高危命令,需要管理员通过配置正则表达式,进行命令匹配。 今天2021年8月6日先匹配最常见的删库跑路命令 rm -rf / ,以下几种表达式联合起来就可以阻断这类…

深入理解浏览器的缓存机制

一、前言 缓存可以说是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。 对于一个数据请求来说,可以分为发…

(二)spring cloud微服务分布式云架构 - 整合企业架构的技术点

spring cloud本身提供的组件就很多,但我们需要按照企业的业务模式来定制企业所需要的通用架构,那我们现在需要考虑使用哪些技术呢? 下面我针对于spring cloud微服务分布式云架构做了以下技术总结,希望可以帮助到大家: …

2542513 - AS Java fails to start - Initialization of destination UMEBackendConnection failed

今天发现SAP As Java 开发机无法启动,根据 Note 2542513 处理该问题并记录。 今天发现SAP EPBPM服务器不能正常启动,jstart.exe进程显示 some process running 的黄灯状态。重启也不管用。到SAP官网 https://wiki.scn.sap.com/wiki/display/ASJAVA/%28J…

How to list/dump dm thin pool metadata device?

2019独角兽企业重金招聘Python工程师标准>>> See: How to create metadata-snap for thin tools using? I dont think LVM provides any support for metadata snapshots so you will need to drive this process through dmsetup. The kernel interface is descri…