ansibe的脚本---playbook剧本(1)

playbook剧本组成部分:

1、task 任务: 主要是包含要在目标主机上的操作,使用模块定义操作。每个任务都是模块的调用。
2、variables变量:存储和传递数据。变量可自定义,可以在playbook中定义为全局变量,可以外部传参。
3、Templates模板: 用于生成配胃文件。模版是包含占位符的文件。占位符有ansilbe在执行时转化为变量值。
4、handlers 处理器: 当需要变更时,可以执行触发器。
5、Roles 角色:是一种组织和封装playbook的,允许把相关的任务,变量,模板和处理器组成一个可复用的单元。

文件格式        xxx.yml 或 xxx.yaml

检查yml文件的语法是否正确

ansible-playbook xxx.yaml --syntax-check
eg:
ansible-playbook test.yaml --syntax-check

检测任务定义任务

ansible-playbook xxx.yaml --list-taskeg:
ansible-playbook test.yaml --list-task

检查生效的目标主机

anible-playbook xxx.yaml --list-hosts
eg:
ansible-playbook test.yaml --list-hosts

执行过程在设置密码

ansible-playbook test.yaml -K

需要开启免密

声明用户执行任务

ansible-playbook test.yaml  -u root -k

安装httpd脚本

vim test.yaml

#one playbook
- name: first play
#一个name就是一个任务名,可以不写
#one playbook
- name: first play
#一个name就是一个任务名,可以不写gather_facts: false
#是否收集目标主机的系统信息:false不收集hosts: 192.168.10.202
#执行的目标主机remote_user: dnbecome: yes
#切换用户become_user: root
#在目标主机执行的用户tasks:- name: ping test
#one playbook
- name: first play
#一个name就是一个任务名,可以不写gather_facts: false
#是否收集目标主机的系统信息:false不收集hosts: 192.168.10.202
#执行的目标主机remote_user: dnbecome: yes
#切换用户become_user: root
#在目标主机执行的用户tasks:- name: ping testping:#测试与目的主机的连通性- name: close selinuxcommand: '/sbin/setenforce 0'ignore_errors: True#关闭linux的机制,如果报错,忽略不计- name: close firewalldservice: name=firewalld state=stopped#关闭防火墙- name: install httpdyum: name=httpd#安装httpd服务- name: start httpdservice: enabled=true name=httpd state=started#设置服务开机自启- name: edition index.htmlshell: echo "this is httpd" > /var/www/html/index.html#修改访问页面notify: restart httpd
#notify要和handers的name一样handlers:- name: restart httpdservice: name=httpd state=restarted

声明和引用变量,以及外部传参

创建user和group

- hosts: 192.168.10.201remote_user: rootvars:groupname: guoqiusername: wangdefutasks:- name: create groupgroup:name: "{{ groupname }}"system: yesgid: 111- name: create useruser:name: "{{ username }}"uid: 1011group: "{{ groupname }}"shell: /sbin/nologin- name: copy filecopy:content: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}"dest: /opt/ky32.txt
#获取目标的ip地址,然后复制到目标文件
ansible-playbook test1.yaml -e 'username=lyw groupname=lyw'

循环---when

- hosts: all
#可以使用主机的IP地址,也可以是用户组名,也可以是allremote_user: roottasks:- name: test whendebug:msg: '位置判断:'
#debug~echo msg:输出的内容,用于脚本的调试,在正式脚本中可以去除。
#一个name#when: ansible_default_ipv4.address == '192.168.10.201'when: inventory_hostname != '192.168.10.201'

例2

用when---201 安装nginx、202 安装httpd

- hosts: allremote_user: roottasks:- name: nginx whenyum: name=nginxwhen: ansible_default_ipv4.address == '192.168.10.201'- name: nginx infodebug:msg: "安装nginx"when: ansible_default_ipv4.address == '192.168.10.201'- name: httpd whenyum: name=httpdwhen: ansible_default_ipv4.address == '192.168.10.202'- name: httpd infodebug:msg: "安装httpd"when: ansible_default_ipv4.address == '192.168.10.202'

循环---list

- hosts: 192.168.10.201remote_user: rootgather_facts: falsetasks:- debug:msg: "{{ item }}"with_list:- [a,b,c,d]- [1,2,3,4]
#分组打印

例2

创建文件

- hosts: 192.168.10.201remote_user: rootgather_facts: falsetasks:- name:file:path: "{{ item }}"state: touchwith_list:- /opt/a- /opt/b- /opt/c- /opt/d- /opt/1- /opt/2- /opt/3- /opt/4
#分组打印

循环---items

- hosts: 192.168.10.201remote_user: rootgather_facts: falsetasks:- debug:msg: "{{ item }}"with_items: - [a,b,c,d]- [1,2,3,4]  
#声明内置变量item,playbook的内置变量,with_items会把item的值,遍历列表当中的a,b.c,d
#虽然我声明的列表是两个,但是with items还是把两个列表当成整体进行遍历

例2

创建文件

- hosts: 192.168.10.201remote_user: rootgather_facts: falsetasks:- name:file:path: "{{ item }}"state: touchwith_items:- [/opt/a,/opt/b,/opt/c,/opt/d]- [/opt/1,/opt/2,/opt/3,/opt/4]

循环---together

- hosts: 192.168.10.201remote_user: rootgather_facts: falsetasks:- name:file:path: "{{ item }}"state: touchwith_together:- [a,b,c,d]- [1,2,3,4]
#组循环,列表当中的值一一对应,打印出来

循环---nested

#list和items 创建文件
- hosts: 192.168.10.201remote_user: rootgather_facts: falsetasks:- name:file:path: "{{ item }}"state: touchwith_nested:- [a,b,c,d]- [1,2,3,4]
#列表里面的元素定义了循环的次数,第二层列表,相当与内循环。

字典

- name: play1hosts: 192.168.10.201remote_user: rootgather_facts: falsetasks:- name: create filefile:path: "{{ item }}"state: touchwith_items: [/opt/123,/opt/456,/opt/789]- name: play2hosts: 192.168.10.201remote_user: rootgather_facts: falsevars:test:- /opt/test1- /opt/test2- /opt/test3tasks:- name: dirfile:path: "{{item}}"state: directorywith_items: "{{ test }}"

用户名: testl test2 组名分别是 dn1 dn2

- name: play1hosts: 192.168.10.201gather_facts: falsetasks:- name: create groupgroup:name: "{{ item }}"state: presentwith_items:- 'dn1'- 'dn2'- name: create useruser:name: "{{ item.name }}"state: presentgroups: "{{ item.groups }}"with_items:- {name: 'test1', groups: 'dn1'}- {name: 'test2', groups: 'dn2'}

yum 一键安装多个软件  tree sl nginx httpd vsftpd dhcp

- name: play2hosts: 192.168.10.80gather_facts: falsetasks:- name: create tree sl nginx httpd vsftpd dhcpyum:name: "{{ item }}"with_list:- tree- sl- nginx- httpd- vsftpd- dhcp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解 Spring Boot:核心知识与约定大于配置原则

深入理解 Spring Boot:核心知识与约定大于配置原则 简单说一下为什么要有 Spring Boot? 因为 Spring 的缺点。 虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的(需要大量 XML 配置) 为了减少配置文件,简化开发 Spri…

HarmonyOS应用事件打点开发指导

简介 传统的日志系统里汇聚了整个设备上所有程序运行的过程流水日志,难以识别其中的关键信息。因此,应用开发者需要一种数据打点机制,用来评估如访问数、日活、用户操作习惯以及影响用户使用的关键因素等关键信息。 HiAppEvent 是在系统层面…

手机数码品牌网站建设的作用是什么

手机数码产品几乎已经成为成年人必备的,包括手机、电脑、摄像机、键盘配件等,同时市场中相关企业也非常多,消费者可供选择的商品类型也很多样,而对企业来讲,只有不断提升品牌形象、获客拉新等才能不断提升企业地位&…

istio工作负载

目录 文章目录 目录本节实战前言1、WorkloadEntry多实例不同端口权重位置 2、WorkloadGroup关于我最后 本节实战 实战名称🚩 实战:WorkloadEntry测试-2023.12.21(测试成功) 前言 在之前的章节中我们已经多次提到了工作负载,在 Istio 中工作…

持续集成交付CICD:HELM 手动完成前端项目应用发布与回滚

目录 一、实验 1.环境 2.K8S master节点部署HELM3 3.K8S master节点安装git 4. Harbor镜像确认 5. HELM 手动完成前端项目应用发布与回滚 6.代码上传到GitLab 二、问题 1.Ingress中 path 的类型有何区别 2. HELM创建项目报错 一、实验 1.环境 (1&#x…

智能优化算法应用:基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.野狗算法4.实验参数设定5.算法结果6.参考文献7.MA…

APP测试要点有哪些?本文已经给你梳理好了!

我们日常购物、旅游、支付等活动都离不开手机,由此衍生了很多APP。 比如每天使用频率非常高的微信、支付宝、微博、抖音、王者荣耀等等。 APP测试主要进行功能测试、性能测试、自动化测试、安全性测试、兼容性测试、专项测试。 01 APP测试流程 APP测试流程与web…

NLP论文阅读记录 - AAAI-23 | 01 Cogito Ergo Summ:通过语义解析图和一致性奖励对生物医学论文进行抽象总结

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1抽象概括2.2图增强摘要2.3 抽象概括的强化学习 三.本文方法COGITOERGOSUMM 框架3.1 问题陈述3.2 图表构建**事件图****AMR 图****图合并和重新连接**Model文本编码器图编码器解码器…

机器学习--线性回归

目录 监督学习算法 线性回归 损失函数 梯度下降 目标函数 更新参数 批量梯度下降 随机梯度下降 小批量梯度下降法 数据预处理 特征标准化 正弦函数特征 多项式特征的函数 数据预处理步骤 线性回归代码实现 初始化步骤 实现梯度下降优化模块 损失与预测模块 …

在Linux Docker中部署RStudio Server,实现高效远程访问

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 安装RStudio Server二. 本地访问三. Linux 安装cpolar四. 配置RStudio serv…

图像卷积操作

目录 一、互相关运算 二、卷积层 三、图像中目标的边缘检测 四、学习卷积核 五、特征映射和感受野 一、互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是…

软考学习五部曲

视频学知识 学习知识环节看视频看书都可以,书很厚一本。如果要看完的话要很多时间,所以我觉得还是看视频更快一点,而且视频还可以倍速。我看的那个视频我觉得非常不错,但是我看的视频b站已经下架了看不到了。其他的视频没仔细去看…

原生Android项目中引入Flutter并实现android 与 flutter 之间的通信

前提条件: 完成Flutter安装与环境搭建 一、原生Android项目中引入Flutter 1、在Android项目中,添加Flutter支持的体系结构过滤器 项目 - > app -> build.gradle ...... defaultConfig {......ndk {// Flutter支持的体系结构过滤器abiFilters a…

【笔记】Spring是什么

什么是spring&#xff1f; Spring的基础知识铺垫 IOC AOP<-Spring->容器->生态 先说你的认知&#xff0c;总-分结构 spring是一个基础的框架&#xff0c;同时提供了Bean的容器&#xff0c;用来方便装载具体的Bean对象&#xff0c;之前在使用对象的时候必须自己new&…

公章透明png图片怎么弄?一键生成透明图片

公章透明png图片可以应用于图像或照片的水印保护。通过将公章图片作为水印添加到图像上&#xff0c;可以保护图像的版权和来源&#xff0c;并防止未经授权的复制和使用&#xff0c;但是通常我们扫描到电脑上的公章图片都是有背景底色的&#xff0c;如何将图片去背景变透明呢&am…

Android Studio使用Genymotion

1. Genymotion介绍 GenyMotion速度之快令人发指&#xff0c;模拟效果堪比真机调试&#xff0c;支持绝大部分的模拟器功能&#xff0c;甚至包括语音&#xff0c;Google Now&#xff0c;支持eclipse, android studio。非常适合用来开发和演示效果。 2. Genymotion下载 Genymotio…

设计模式03结构型模式

结构型模式 参考网课:黑马程序员Java设计模式详解 博客笔记 https://zgtsky.top/ 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;前者采用继承机制来组织接口和类&#xff0c;后者釆用组合或聚合来组合对象。 由于…

数字生态文明:构建可持续发展的未来

数字技术的快速发展给人类社会带来了巨大的变革,同时也对生态环境产生了深远的影响。在这个背景下,数字生态文明的概念应运而生,它强调在数字时代实现经济、社会和环境的协调发展,构建可持续的未来。 一、数字生态文明的内涵 数字生态文明是指在数字经济发展过程中,遵循…

什么是逆变器电源?逆变器需要测试哪些指标?

逆变器是一种将低压直流电(12v/24v/48v)转化为220v交流电的电子设备&#xff0c;由逆变桥、控制逻辑、滤波电路组成&#xff0c;被广泛应用于电脑、洗衣机、空调、太阳能发电系统、电池储能系统、风力发电系统等。逆变器有以下特点&#xff1a; 1.转换效率高、启动快; 2.安全性…

Java 第14章 集合 课堂练习

文章目录 HashSet判断是否两次add都能加入成功HashSet编码遍历HashMap判断输出中是否有"abc" HashSet判断是否两次add都能加入成功 HashSet set new HashSet(); set.add(new String("hsp")); set.add(new String("hsp"));第一次可以&#xff0…