ansibe的脚本---playbook剧本

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/234657.shtml

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

相关文章

亚信安慧AntDB数据库——助力5G计费核心替换,全面自主可控

数字经济时代,5G以更快、更丰富、更智能的连接方式服务于各行各业。AntDB数据库,源于亚信科技,自2008年起成功落地全国24个省份的中国移动、中国电信、中国联通和中国广电等运营商项目,为数字化服务和信息化基础建设提供支持。 在…

Linux Mint 21.3 代号为“Virginia”开启下载

Linux Mint 团队今天放出了 Linux Mint 21.3 Beta ISO 镜像,正式版计划在今年圣诞节发布。 支持 在实验性支持 Wayland 之外,Cinnamon 6.0 版 Linux Mint 21.3 Beta 镜像还带来了其它改进,Nemo 文件夹管理器右键菜单支持下载相关操作。 Cin…

【python】进阶--->并发编程之协程

一、协程 是另外一种实现多任务的方式,只不过比线程占用更小的执行单元(需要的资源).因为它自带cpu上下文,就可以在合适的时机,从一个协程切换到另一个协程. (任务数量多于cpu时)系统在很短的时间内,将cpu轮流分配给不同的任务执行,造成了多任务同时运行的错觉.而每个任务在运行…

C++多线程学习笔记001多线程基本操作

C多线程学习笔记001多线程基本操作 创建线程 #include<iostream> #include<thread> #include<unistd.h>void count_down(size_t num){std::cout << "开始" << num << "秒倒计时&#xff01;" << std::endl; f…

1.CentOS7网络配置

CentOS7网络配置 查看网络配置信息 ip addr 或者 ifconfig 修改网卡配置信息 vim /etc/sysconfig/network-scripts/ifcfg-ens192 设备类型&#xff1a;TYPEEthernet地址分配模式&#xff1a;BOOTPROTOstatic网卡名称&#xff1a;NAMEens192是否启动&#xff1a;ONBOOTye…

暴雨AI服务器:推动大模型算力底座发展

语言大模型作为人工智能领域的重要分支&#xff0c;其强大的自然语言处理能力和模仿人类的对话决策能力&#xff0c;正逐渐成为人们的关注焦点。近日&#xff0c;据央视新闻报道&#xff0c;工业和信息化部赛迪研究院数据显示&#xff0c;今年我国语言大模型市场规模实现较快提…

最新鸿蒙HarmonyOS 使用Progress、Toggle开发一个接单界面

Progress 进度条组件&#xff0c;用于显示内容加载或操作处理等进度。 接口 Progress(options: {value: number, total?: number, type?: ProgressType}) Toggle组件提供勾选框样式、状态按钮样式及开关样式。 接口 Toggle(options: { type: ToggleType, isOn?: boolean …

oracle vm virtualBox虚拟机网卡设置

一、桥接模式 1、桥接模式自动分配IP 通过dns自动分配Ip方式、重启服务器可能会出现IP变动的情况。 选中虚拟机--设置--网络&#xff0c;链接方式选择“桥接网卡”&#xff0c;界面名称选择“需要桥接的网卡名称” 不清楚的可以在宿主机网络设置查看&#xff08;需要桥接哪…

手动实现 Vue 2 的简易双向数据绑定(模仿源码)

实现 Vue 2 的简易双向数据绑定 Vue.js 是一个流行的前端框架&#xff0c;它以其简单易用的双向数据绑定而闻名。在下面的文章中&#xff0c;我们将探索 Vue 2 如何通过其响应式系统实现双向数据绑定&#xff0c;并尝试手动实现一个简化版本。 核心概念 Vue 2 的双向数据绑定…

【每日一题】【12.20】2828.判别首字母缩略词

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 1.题目链接 2828. 判别首字母缩略词https://leetcode.cn/problems/check-if-a-string-is-an-acronym-of-words/ 2.题目描述 今天…

MySQL——表的增删查改

目录 一.Create&#xff08;创建&#xff09; 1.单行数据 全列插入 2.多行数据 指定列插入 3.插入否则更新 4. 替换 二.Retrieve&#xff08;读取&#xff09; 1. select 列 查询 2.where 条件 3.结果排序 4.筛选分页结果 三.Update &#xff08;修改&#xff09;…

单例模式详解

单例模式 1. 概述 单例模式是一种创建型设计模式&#xff0c;旨在确保一个类只有一个实例&#xff0c;并提供一个全局访问点以获取该实例。这种模式有助于控制资源的访问、管理全局配置或共享状态&#xff0c;确保系统中某个类只存在一个实例。 2. 目的 确保一个类仅有一个…

Python实现多元线性回归模型信用卡客户价值预测项目源码+数据+项目设计报告

多元线性回归——信用卡客户价值预测 一、背景 这里以信用卡客户的客户价值为例来解释客户价值预测的具体含义&#xff1a; 客户价值预测就是指预测客户在未来一段时间内能带来多少利润&#xff0c;其利润可能来自信用卡的年费、取现手续费、分期手续费、境外交易手续费等。分…

三、万语始于HelloWorld,万物基于点灯之瑞萨RX23E-A 3线RTD PT100测温

一、概述/目的 二、RX23E-APT100三线制 2.1 资料来源 2.2 接线图 2.3 工程配置AFE24ΔΣADCPGA 2.4 代码 2.5 IIR数字滤波器 三、方案对比 三、万语始于HelloWorld&#xff0c;万物基于点灯之瑞萨RX23E-A 3线RTD PT100测温 一、概述/目的 介绍工业过程控制…

DAPLink源码固件编译与制作

DAPLink源码固件编译与制作 ✨这里以Air/stm32f103cbt6固件编译为例。&#x1f4cc;DAPLink源码地址&#xff1a;https://github.com/ARMmbed/DAPLink&#x1f516; 如果不想自己生成&#xff0c;可以使用合宙提供的现成的工程以及固件&#xff1b;https://gitee.com/openLuat/…

官方指定Jmeter配置JVM堆内存方式

1.概述 在使用Jmeter做性能测试过程中&#xff0c;可能会应为默认设置的堆内存值较小出现堆内存溢出问题&#xff0c;此时解决的方式有两种&#xff0c;分布式测试和调大堆内存。下面介绍官方推荐调整堆内存方法。 2.调整Jmeter堆内存 2.1.介绍官方推荐堆内存调整方法(jmete…

stable diffusion 极简入门 核心 概念介绍 使用

一、怎么写提示词&#xff08;prompt&#xff09; 1.1 结构 一般分三部分&#xff0c;按从前到后的顺序&#xff1a;画面质量or风格、画面主体内容、其他细节/背景。 画面质量&#xff1a;如&#xff0c;masterpiece,best quality,highly detailed画面主体内容&#xff1a;如…

Android Studio 显示Cause: connect timed out

在启动其他地方复制下来的项目时&#xff0c;可能会出现Cause: connect timed out报错&#xff0c;大概率由于项目与AndroidStudio使用的Gradle 版本不一致导致。 请检查&#xff0c;包名 / gradle / wrapper / gradle-wrapper.properties 文件 &#xff0c;文件中的distribut…

mysql原理--连接的原理

1.连接简介 1.1.连接的本质 为了故事的顺利发展&#xff0c;我们先建立两个简单的表并给它们填充一点数据&#xff1a; mysql> CREATE TABLE t1 (m1 int, n1 char(1)); mysql> CREATE TABLE t2 (m2 int, n2 char(1)); mysql> INSERT INTO t1 VALUES(1, a), (2, b), (…

攻防世界-web-ics07

1. 题目描述 工控云管理系统项目管理页面解析漏洞 打开链接&#xff0c;是这样的一个界面 我们点击项目管理 可以看到&#xff0c;这里有一个查询界面&#xff0c;还有个view-source的链接&#xff0c;我们点击下view-source&#xff0c;可以看到这里面共有三段php代码 第一段…