ansible的主机清单和Playbook(剧本)

news2024/11/20 1:26:29

一、inventory---主机清单

1.1 支持对主机分组,每个组内可以定义多个主机,可以把一台主机分别放在两个组内。

把.10到.100的主机全部放在这个组里面(/etc/ansible/hosts:配置文件)

有的主机不是以ip地址放在主机清单里的,也可以用字母作为范围

如果远程的主机ssh的端口变了需要在ip后面加上端口

1.2 inventory(主机清单)可添加的一些变量

1.3修改主机清单上的小实验

 删除.200主机的秘钥对信息

 这样在.100主机ssh连接.200这台主机时就需要密码验证

 并且修改配置文件把.200主机的ssh端口号改成4499 

 

 重启ssh服务(关闭防火墙!!!)

 到.100这台主机上来修改/ect/ansible/hosts文件,然后保存退出

 

 设置完后使用ansible运行命令依旧可以查询出来网卡信息说明配置没有问题

1.4如果整个组都没有设置密钥对,我们可以对整个组设置一个变量 

我们首先删除.250主机上的密钥对

在到.100主机上配置主机清单

 使用ansible命令是可以查询出webservers组的网卡信息的

 1.5如果你想影响配置文件中的所有组的配置可以

vim /ect/ansible/hosts

[all:vars]

ansible_port=22

1.6组的嵌套

问题:有的时候想单独调用一个组去配置,有的时候需要把两个组同时调用配置

解决方法:

重新定义一个组名

【webs:children】

  nginx

  apache

vim /ect/ansible/hosts   在100主机上修改配置文件

 用ansible命令是可以查看到所有组的网卡信息的

二、Playbooks---剧本

2.1 playbooks的组成

  1. 1.Tasks:任务,可以ansible的模板将多个操作组织成一个playbooks中运行
  2. Variables:变量
  3. Templates:模板
  4. Handlers:处理器:当changed状态条件满足时,(notify)触发执行的操作
  5. Roles:角色,可以多角色复用

2.2Playbooks剧本的格式

剧本的文件类型是yaml格式

---                            ###yaml文件的开始

- name :first play    ## 一个play的名称

  gather_facts:false    ##设置facts的信息收集,如果选择否,将不可以引用facts收集的信息的值

(setup就是用facts收集各个主机的信息的)

 hosts:webservers            ###指定在那个主机组去执行任务,要是多个主机组,用冒号分隔

 remote_user:root                ##指定以什么身份去执行任务

tasks:                                ##定义任务列表,任务列表中的各个任务按次序在指定主机组上执行

- name:test connection     ## -代表一个列表每个任务都用-标识出来,name指定任务名称

   ping:                                ## 指定使用的模块名字,如果后面需要使用命令用引号括起来

##有很多模块后面是需要参数的,需要用键值对的方式来表示

  例如:开启防火墙  name 指定服务名   state指定服务的状态

 - name:disable selinux

   command: “/sbin/setenforce 0”            ##command模块和shell模块无需使用键值对的格式

   ignore errors:True                            ##如果执行命令的返回值不为0,就会报错,tasks停止,     可以使用ignore errors:True忽略失败的任务,因为setenforce如果本来就是永久关闭的话,在       执行setenforce 0  返回值就是1 

- name : install httpd                      ##设置一个任务名称为install httpd

  yum: name=htppd state=latest   ##使用yum模块 来下载httpd服务   yum模块的参数用键值对表示

- name:install configuration file for httpd                                    

  copy:src=/opt/httpd.conf dest=/etc/httpd/conf/httpd.conf     ##需要一个准备好的httpd.conf 文件

  notify: "restart httpd"                                   ##notify:相当于一个触发器,如果上面做出改变,那就回触发对应名称的handlers操作(handlers操作在下面写的)双引号中的就handlers中定义的名称

- name: start httpd service

  service: enabled=true name=httpd state=started

handlers:     ##就是handlers中定义的就是任务,此处handlers中的任务使用的是service模块

- name : restart httpd

  service:name=httpd state=restarted

ansible在执行完某个任务之后并不会立即执行对应的handlers,他会在执行完所有任务之后在去执行handlers,这样的好处是可以多次触发notify,但最后只执行一次对应的handler,从而避免多次的重启                                                                                           

最后运行playbooks 

ansible-playbook test1.yaml     ##test1.yaml  剧本名称

三、编写palybook

编写yaml文件

[root@localhost ansible]# mkdir playbook                ##创建一个文件夹放剧本
[root@localhost ansible]# cd playbook/
[root@localhost playbook]# vim demo1.yaml           ##编写剧本

 

ansible-playbook demo1.yaml             ##运行yaml文件

 小实验二:

    环境.200这台主机把vim/etc/selinux/conifg 的核心防护状态调整为disabled,最后getenforce在检查一遍

 在.100主机上编写playbook的的vim demo2.yaml文件,ansibles-playbook demo2.yaml 执行一遍

 

 把ignore_errors注释删掉之后

 他是忽略掉的

 小实验:写一个安装apache的palybook的剧本

只装了一台.200

 

 如果/etc/httpd/conf/httpd.conf文件有变化,就会触发notify

 执行命令后会有这个

 小实验:安装nginx

首先准备好nginx.repo到/opt目录因为nginx 的nginx.conf配置文件不要改,只有一个default.conf需要改

 执行文件

 

四、 运行playbook时的参数

-k:用来交互输入ssh密码

-K:用来交互输入sudo密码,进行用户的提权

-u:指定用户来执行

ansible-playbook test1.yaml --syntax=check ##用来检查yaml文件的语法是否正确

                                             --list-task ##检查tasks任务

                                             --list-hosts ##检查生效的主机

                                             --start-at-task=‘install httpd’ 指定从某个task开始运行

yaml文件故意写错

 他会提醒你

 

五、定义和引用变量

vars 定义一个变量 filename:abc.txt

下面在去创建

 

 去101主机查看opt

 

5.1遍历定义的变量

 遍历定义的变量(二)

效果也是一样的 

  遍历定义的变量(三)

把变量全部都装到一个中括号里面

 

 一个列表中有两个变量,可以用item.变量名去调用

 也可以这样定义变量

 两个列表都输出

 两个列表整体输出

 合并输出,两个列表组合

 六、条件判断

当when指令的值为true时,则该任务执行,否则不执行

也可以   != 不等于    <= 小于等于  >=下雨等于

when指令的条件里是可以不用双引号的

 inventory_hostname 主机清单里的主机名 也可以等于ip地址也可以是主机名

 七、Templates模块

创建了一个Templates模板,这个模板文件是把nginx(看你装什么应用,用这个应用)的配置文件常用的一些配置(监听端口,主机名,网页文件等)做了变量,复制生成一个**.j2的文件(模板),然后yaml文件(编写好的剧本)在把带有变量的模板文件传到远程主机作为主机的应用配置文件,我们在主机清单,把变量的值直接定义到里面。以后改一些端口之类的就不用去远程主机的配置文件里面了,直接在/ect/ansible/hosts下面修改即可。

##把nginx的配置文件里面的常改的配置改成变量,web_port ,nginx_servername,nginx_wwwroot

 把修改好的配置文件复制成后缀名为.j2模板,然后修改管理主机的主机清单,把常用的变量的定值写到里面(就是主机组里面的webservers和dbservers)

 写的yaml文件

其中主机清单上的目录可以用item去调用可以少写一点代码

 其中when是和file是一个级别的需要在一行

 

总结

playbook的列表和单个值

 引用取值列表中某个对象的值

 playbook的循环

 

 

 

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

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

相关文章

企业实施SRM系统应该避开哪些误区?

近年来&#xff0c;SRM供应商协同管理系统逐渐在各行各业中得到广泛运用&#xff0c;许多企业在SRM选型时投入了大量的时间、资源和精力&#xff0c;但系统上线后的效果却并不理想。SRM选型时常见的误区主要有以下几种&#xff1a; 误区一&#xff1a;头痛医头脚痛医脚&#x…

[附源码]计算机毕业设计人体健康管理appSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【从零开始学习深度学习】6.使用torchvision下载与查看图像分类数据集Fashion-MNIST

目录1.1 获取Fashion-MNIST数据集2.2 读取小批量小结图像分类数据集中最常用的是手写数字识别数据集MNIST。但大部分模型在MNIST上的分类精度都超过了95%。为了更直观地观察算法之间的差异&#xff0c;我们将使用一个图像内容更加复杂的数据集Fashion-MNIST。 本节我们将使用to…

博图Modbus组态及参数设定源码

1、组态选择 协议为Modbus,可在程序里设置通讯方式 2、参数初始化设置 3、选择伺服Modbus 地址 4、写入负值&#xff0c;两个字都必须是负值 5、接线方式 伺服端&#xff1a;驱动器通过通讯连接器与计算机相连&#xff0c;使用者可利用 MODBUS 通讯结合汇编语言来操作驱动器&…

运放失调电压失调电流,计算输入电压信号大小,设计反向放大器

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

销售抓住客户心理的话术

由于销售会与各种各样的人打交道&#xff0c;因此销售也是最容易洞察客户心理的职业&#xff0c;优秀的销售懂得如何抓住客户的心理&#xff0c;从而挖掘客户的需求和痛点&#xff0c;进一步促进成交。 前言 由于销售会与各种各样的人打交道&#xff0c;因此销售也是最容易洞察…

【NC65】主子表单据按照单表结构展现 节点客开

需求描述: 需要将【采购入库】按照【采购订单关闭】节点的形式展现数据。 客开思路: 功能注册增加功能节点,(40080603)勾选启用。菜单注册增加 菜单 并关联 功能节点(40080603)。初始化 单据模板,查询模板采购入库单主子表汇总VO是PurchaseInViewVO ,系统里其他单据节点 …

MyBatis-Plus之ActiveRecord[基础增删改查操作]

系列文章目录 Mybatis-Plus知识点[MyBatisMyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客 Mybatis-PlusSpringBoot结合运用_心态还需努力呀的博客-CSDN博客MyBaits-Plus中TableField和TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus中的更新操作&#xf…

应用层之HTTP和HTTPS协议(必备知识)

文章目录1、什么是HTTP协议2、HTTP协议格式<1>HTTP请求方法<2>HTTP的状态码3、HTTP是不保存状态的协议<1>使用Cookie的状态管理3、HTTPS<1>加密方式<2>理解HTTPS加密过程1、什么是HTTP协议 HTTP协议常被称为超文本传输协议&#xff0c;HTTP协议…

国产蓝牙耳机什么牌子好?2022蓝牙耳机品牌排行

随着蓝牙耳机市场的快速发展&#xff0c;国产蓝牙耳机品牌也越来越多。那么在众多的国产蓝牙耳机当中&#xff0c;什么牌子的比较好呢&#xff1f;下面&#xff0c;一起来看看2022蓝牙耳机品牌排行吧。 一、南卡小音舱蓝牙耳机 售价&#xff1a;299 蓝牙&#xff1a;5.3 发…

ADSP-21489的开发详解:VDSP+自己编程写代码开发(4-按键控制 LED 灯)

以上全部都 OK 之后&#xff0c;我们就可以开始跑程序了。&#xff08;抱歉上面几项写的很罗嗦&#xff0c;都是我这近 15 年来开发 ADI DSP 实际项目里碰到问题的经验之谈&#xff0c;希望能够对用户有帮助&#xff09; 跑程序就涉及到了 Visual DSP软件的操作&#xff0c;我…

高校教材征订系统(Java+Web+MySQL)

目 录 ABSTRACT 2 1 概述 5 1.1开发背景 5 1.2 项目提出的意义 5 1.3 系统的开发方法 5 1.4 系统开发工具 6 1.4.1 JSP简介 6 1.4.2 JDK配置 7 1.4.3 数据库简介 8 1&#xff0e;4&#xff0e;4 tomcat配置 9 2 需求分析 11 2.1可行性分析 11 2.2 系统设计的要求 11 2.3 系统功…

01、RabbitMQ入门

目录 1.、什么是MQ 2、应用场景 3、主流MQ框架 4、Docker安装部署RabbitMQ 5、RabbitMQ管理平台 6、MQ的核心概念 单一生产者和单一消费者 7、springboot整合rabbitmq 执行测试方法testRabbitmq&#xff0c;控制台输出&#xff1a;receive msg : test rabbitmq messag…

[附源码]计算机毕业设计时间管理软件appSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Vector-常用CAN工具 - CANoe入门到精通_01

之前有写过相关的CANoe工程配置&#xff0c;不过没有进行系统的介绍&#xff0c;通过各位热心人士的反馈&#xff0c;有些内容无法看懂&#xff0c;因此后续的内容会做好排版&#xff0c;让大家从入门到精通&#xff0c;一次性掌握所有的相关内容。今天就主要来介绍下VN1640/VN…

读vue源码搞懂响应式原理

vue2响应式原理 Vue2是借助Object.defineProperty()实现的&#xff0c;而Vue3是借助Proxy实现的想深入学习 Vue2 的响应式原理, 需要先学习 Object.defineProperty() 方法为了称呼方便, 后续说 Vue 响应式原理统一指 Vue2 的响应式原理 1.Object.defineProperty 方法 - 简介 定…

go实战(1)-hello,world与包基础(1)-模块基础

目录程序结构程序代码使用和建立包建立目录模块参考中的身份验证计算哈希值go.sum文件Checksum database程序结构 声明一个main包(包是对函数进行分组的一种方法&#xff0c;它由同一目录中的所有文件组成)。 导入流行的fmt包&#xff0c;它包含格式化文本的函数&#xff0c;…

WIFI码挪车码创建生成CPS聚合流量主小程序开发

WIFI码挪车码创建生成CPS聚合流量主小程序开发 系统特点// 这不是一套普通的给别人开SAAS账号的CPS推广返利系统&#xff0c;而是一套服务商版的CPS推广返利系统&#xff01;所谓服务商版&#xff0c;就是所有CPS推广走你的渠道接口&#xff0c;除了可以给你的下级客户开账号外…

MySQL下载安装运行

方式1、MySQL 官方网站&#xff1a;http://www.mysql.com 拉到最下面&#xff1a; 方式2、Windows版 MySQL 的官方下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 配置环境变量&#xff1a;在Path中添加至“\bin”&#xff08;系统盘C盘&#xff09;形式 使用管…

【OpenCV 例程 300篇】249. 特征描述之视网膜算法(FREAK)

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】249. 特征检测之视网膜算法&#xff08;FREAK&#xff09; 1. FREAK 算法简介 快速视网膜算法&#xff08;FREAK&#xff09;算法是 Alexandre Alahi 在 ICCV 2012 的论文 FREAK: Fast Retina Keyp…