首页 > 其他分享 >ansible剧本-template中的for循环和if的使用(1)

ansible剧本-template中的for循环和if的使用(1)

时间:2023-05-11 16:02:50浏览次数:48  
标签:conf server ansible template 剧本 root listen

ansible剧本-template中的for循环和if的使用(1)

原创 Cloud研习社 Cloud研习社 2023-05-04 07:53 发表于山东 收录于合集 #一站式教程233个 #linux231个 #计算机206个 #云计算220个 #ansible35个 图片图片

教程每周二、四、六更新

图片

for的使用

当我们需要创建如下类型的文件时

server  {
  listen 80
}
server{
  listen 81
}
server{
  listen 82
}

可以使用循环和模板结合的方式来实现,我们来看:

创建模板文件和playbook:

[root@m01 ansible]# cat for_http.conf.j2
{% for port in ports %}
server {
        listen {{ port }}
}
{% endfor %}

[root@m01 ansible]# cat template_for.yaml
---
- hosts: com
  remote_user: root
  vars:
    ports:
      - 80
      - 81
      - 82

  tasks:
    - name: test for
      template:
        src: /root/ansible/for_http.conf.j2
        dest: /data/for_http.conf

# 执行
[root@m01 ansible]# ansible-playbook template_for.yaml

到此我们就可以看看是不是得到了对应的结果:

[root@web01 data]# cat for_http.conf 
server {
        listen 80
}
server {
        listen 81
}
server {
        listen 82
}

确实是我们想要的结果,大功告成!

小结:

  • 模板文件中的ports列表来源于yaml文件中vars定义的ports变量

  • {% for语句 %}{% endfor %}是成对出现,缺一不可.

  • 重复部分直接写到for循环中间,不同的部分用变量代替

  • for循环中的变量需要使用{{ 变量名 }}

进阶:

上面的循环用到的列表还可以进行多层嵌套:

[root@m01 ansible]# cat template_for2.yaml
---
- hosts: com
  remote_user: root
  vars:
    ports:
      - web1:
        ip: 10.0.0.14
        port: 80
        name: web01
      - web2:
        ip: 10.0.0.15
        port: 81
        name: web02

  tasks:
    - name: test for
      template:
        src: /root/ansible/for_http.conf.j2
        dest: /data/for_http.conf
        
[root@m01 ansible]# cat for_http2.conf.j2
{% for ins in ports %}
server {
        listen {{ ins.port }} # 通过点号.来引用最终相应的变量
        servername {{ ins.name }}
}
{% endfor %}

 


 

雷哥开通了抖音(云计算雷哥)和微信视频号,求关注!!!和大家一起学习 技术!

图片

推荐阅读

 

《一站式教程之集群架构》:

 

ansible剧本-变量-常用参数

ansible剧本-变量的引用与定义

ansible剧本-变量的定义

ansible剧本-变量的定义(2)

ansible - 模板template

ansible剧本-when

 

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社 为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等 188篇原创内容 公众号

图片


图片

 

Cloud研习社

赞赏二维码喜欢作者

收录于合集 #一站式教程  233个 上一篇ansible剧本-循环下一篇ansible剧本-template中的for循环和if的使用(2) 阅读 62    

标签:conf,server,ansible,template,剧本,root,listen
From: https://www.cnblogs.com/cherishthepresent/p/17391274.html

相关文章

  • ansible剧本-roles(1)
    ansible剧本-roles(1)原创 Cloud研习社 Cloud研习社 2023-05-0907:32 发表于山东收录于合集#一站式教程233个#ansible35个#linux231个#云计算220个#自动化3个教程每周二、四、六更新roles用于层次性、结构化地组织playbook。roles能够根据层次型结构自动......
  • ansible剧本-roles(2)
    ansible剧本-roles(2)原创 Cloud研习社 Cloud研习社 2023-05-1107:31 发表于山东收录于合集#一站式教程233个#ansible35个#linux231个#云计算220个#自动化3个教程每周二、四、六更新下面我们来实践一下:使用roles方式安装httpd服务:准备环境:先把前面练习用的......
  • Ansible-常用模块
    ping模块ping模块,这个很好理解,跟我们常用的ping命令是一样的,用来检测与目标主机的连通性[root@master~]#ansible192.168.142.45-mping192.168.142.45|SUCCESS=>{"ansible_facts":{"discovered_interpreter_python":"/usr/bin/python"},......
  • JdbcTemplate 开启事务
    JdbcTemplatejdbcTemplate=newJdbcTemplate();//获取DataSourceDataSourcedataSource=jdbcTemplate.getDataSource();//获取ConnectionConnectionconnection=DataSourceUtils.getConnection(dataSource);//关闭jdbc自动提交connection.setAutoCommit(false);try{/......
  • 使用Ansible实现自动化运维的一些技巧
     提示:本文要求读者有一定的Ansible使用经验   最近一年才有机会在生产环境上使用Ansible。用的过程中,想把一些小技巧记录下来,避免自己忘记。如果能帮助到其他同学就更好了。如果有同学指出有更好的方法,就更更好了。技巧1:校验你的模板文件是否正确通常我们会使用t......
  • 4.ansible常用模块03
    ansible常用模块user模块:user模块可以实现linux系统账户管理#创建用户[root@db04ansible]#ansibletest-muser-a"name=tuser1"#创建用户、用户id、用户组、家目录[root@db04ansible]#ansibletest-muser-a"name=tuser2uid=1010group=admgroups=daemon......
  • Ansible快速入门(下)
    6.Ansible常用模块ansible有着诸多的模块,虽然模块众多,但最为常用的模块也就20-30个左右;6.1command模块功能:在远程主机执行Shell命令;此为默认模块,可忽略-m选项;注意:不支持管道命令|参数选项含义chdirchdir/opt执行ansible时,切换到指定的目录creates......
  • Feign与RestTemplate的区别
    微服务之间的通信方式常见的方式有两种:RPC——代表-dubboHTTP——代表-SpringCloud在SpringCloud中,默认是使用http来进行微服务的通信,最常用的实现形式有两种:RestTemplateFeignFeign跟RestTemplate的区别请求方式不一样RestTemplate需要每个请求都拼接url+参数+......
  • 使用IDEA的Live Templates提高编码效率
    使用IDEA的LiveTemplates提高编码效率IDEA自带的LiveTemplatesFile-->Settings-->Editor-->LiveTemplates可以看到有一个java的LiveTemplates。输入缩略词,即可快速生成代码。psfs:生成publicstaticfinalStringpsvm:生成publicstaticvoidmain函数s......
  • 2.ansible常用的模块01
    1.模块?模块实际上就是脚本,是ansible调用的对象,主要是用来通过调用它去远程执行某些命令功能。2.常用的模块2.1shell模块ansible默认的模块是command,其中shell模块与command模块区别:1.command模块的命令不启动shell,直接通过ssh执行命令......