当前位置: 首页 > news >正文

ansible安装、点对点Ad-Hoc、模块、剧本Playbook

DevOps:

官网:https://docs.ansible.com

自动化运维工具对比

C/S 架构:客户端/服务端

Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱

SaltStack:基于 Python 开发,采用 C/S 架构,YAML使得配置脚本更简单.需要配置客户端及服务器端;每台被控制节点需要安装agent

Ansible:基于 Python开发,分布式,无需客户端,轻量级,配置语法使用YAML语言,更强的远程命令执行操作 (优点)

Ansible简介(是什么、做什么、特点)

ansible是新出现的自动化运维工具,基于Python开发,分布式,无需客户端,轻量级,实现了批量系统配置、批量程序部署、批量运行命令等功能,ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架

一、安装

245(ansible)

vim /etc/hosts   (做解析)

IP+名字

配置ssh公钥认证:控制节点需要发送ssh公钥给所有非被控制节点(做免密)

ssh-keygen

yum list | grep ansible  //有ansible 仓库

yum install -y ansible   //下载ansible

ansible --version   //查看版本、配置文件、python版本

ansible --help   //帮助手册

二、主机清单inventory

vim /etc/ansible/hosts (要管理谁就写入谁)

web-1 //为主机

[db] 为主机组

查看组内主机列表

语法:ansible  组名  --list-hosts

ansible web --list-hosts   //查看组里的主机

[root@ansible-server ~]# ansible -i /opt/hostlist all -m ping -o
-i:指定清单文件

-m:调用模块

all:所有组

-o:改变输出格式

三:点对点Ad-Hoc

ansible-doc -l   //列出所有模块

ansible-doc -s yum   //yum的使用方法

用户管理模块:user

添加用户并设置密码:

[root@ansible-server ~]# ansible webservers1 -m user -a "name=liudehua password=`echo 1234 | openssl passwd -1 -stdin`" -o
"name=   "  #如:指定的用户名,要安装的软件
-1 MD5加密算法

删除用户:

[root@ansible-server ~]# ansible webservers1 -m user -a "name=liudehua state=absent" -o
adsent #删除用户,但是不会删除家目录

组管理模块:group 

gid:为组设置的可选GID
name:要管理的组的名称
state:该组是否应该存在于远程主机上;absent不在/默认是present在
system:如果是,表示创建的组是系统组;默认时no

[root@ansible-server ~]# ansible all -m group -a 'name=somegroup state=present'

[root@ansible-server ~]# ansible all -m group -a 'name=somegroup state=absent' //删除组

软件包管理模块:yum

config_file:yum的配置文件 
disable_gpg_check:关闭gpg_check 
disablerepo:不启用某个源 
enablerepo:启用某个源
name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径 
state:状态(present,absent,latest)

[root@ansible-server ~]# ansible webservers1 -m yum -a "name=httpd state=latest" -o
state=     #状态是什么,干什么
state=absent        用于remove安装包
state=latest       表示最新的
state=removed      表示卸载

卸载软件:

[root@ansible-server ~]# ansible webservers1 -m yum -a "name=httpd state=removed" -o

服务管理模块:service

[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=started" #启动
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=stopped" #停止
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=restarted" #重启
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=started enabled=yes" #开机启动
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=started enabled=no"  #开机关闭

文件模块:file

[root@ansible-server ~]# ansible webservers1 -m file -a 'path=/tmp/88.txt mode=777 state=touch' #创建一个文件
[root@ansible-server ~]# ansible webservers1 -m file -a 'path=/tmp/99 mode=777 state=directory' #创建一个目录

收集信息模块:setup

[root@ansible-server ~]# ansible web1 -m setup -a 'filter=ansible_all_ipv4_addresses'

#只查询ipv4的地址
filter:过滤

[root@ansible-server ~]# ansible web1 -m setup -a 'filter=ansible_*_mb'       #内存的信息
[root@ansible-server ~]# ansible -i /home/ansible/hostlist web -m setup -a 'filter=ansible_processor_cores'       #磁盘的信息
[root@ansible-server ~]# ansible all -m setup --tree /tmp/facts 

文件复制模块:copy

[root@ansible-server ~]# ansible test -m copy -a "src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode=0644"
[root@ansible-server ~]# ansible test -m copy -a "src=/mine/ntp.conf dest=/etc/ntp.conf owner=root group=root mode=644 backup=yes"

计划任务模块:cron

获取每台主机的IP地址

[root@xingdian ~]# ansible -i /home/ansible/hostlist web -m shell -a "ip a | grep eth0| awk 'NR==2{print $2}'" -o > a.txt && cat a.txt |awk '{print $9,$NF}'

shell、command后跟在终端敲的命令

一个典型的例子就是 shell 和 command 模块. 这两个模块在很多情况下都能完成同样的工作, 以下是两个模块之前的区别:
command 模块命令将不会使用 shell 执行. 因此, 像 $HOME 这样的变量是不可用的。还有像 |,& 都将不可用
shell 模块通过shell程序执行, 默认是/bin/sh, <, >, |, ;, & 可用

获取每台主机的内存

[root@xingdian ~]# ansible -i /home/ansible/hostlist web -m shell -a "free -m | awk 'NR==2'" > b.txt -o && cat b.txt | awk '{print $10}'

四:剧本Playbook


案列一:          

          touch file.yaml

          vim file.yaml

         

         检查语法错误

         

         执行

         ansible-playbook file.yaml

案列二:

         handlers:由特定条件触发的Tasks

         安装ftp

         vim ftp.yaml

         

          ansible-playbook --syntax-check ftp.yaml

          ansible-playbook ftp.yaml

          删除ftp

         

         

案列三

         [root@ansible-server ansible]# vim /home/ansible/yum.yml
---
 - hosts: web
   user: root
   tasks:
   - name: install nginx
     yum: name=nginx state=latest
     notify: diandian
   handlers:
   - name: diandian
     service: name=nginx state=started

ansible-playbook --syntax-check /home/ansible/yum.yml

ansible-playbook /home/ansible/yum.yml

案例四:

循环:迭代,需要重复执行的任务

对迭代项的引用,固定变量名为”item”,使用with_items属性给定要迭代的元素

元素:1.列表 2.字符串 3.字典

基于字符串列表元素实战

vim php.yaml

- hosts: db
  user: root
  tasks:
  - name: install packages
    yum: name={{ item }} state=latest         #相当于for循环里面的i 
    with_items:                               #取值 。但是不支持通配符
     - httpd
     - php
     - php-mysql
     - php-mbstring
     - php-gd 

验证

vim user.yaml

案列四

vim tags.yaml

上传植物僵尸  

解压 unzip 

vim apache.yaml

ansible-playbook --syntax-check apache.yaml 

ansible-playbook apache.yaml 

apache 虚拟主机配置文件

 vi jspvz.conf 

   

   

相关文章:

ansible安装、点对点Ad-Hoc、模块、剧本Playbook

DevOps: 官网&#xff1a;https://docs.ansible.com 自动化运维工具对比 C/S 架构:客户端/服务端 Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱 SaltStack:基于 Python 开发,采用 C/S 架构,YAML使得配置脚本更简单.需要配置客户端及服务器…...

Ceph入门到精通-ceph pool 删除导致 misplaced 的原因

misplaced 的原因 Ceph中的misplaced对象是指将对象&#xff08;或对象的副本&#xff09;存储在错误的位置上&#xff0c;这可能会导致性能下降或数据不一致的问题。在删除Ceph池时&#xff0c;可能会导致misplaced的原因有以下几个&#xff1a; 删除过程中的操作失误&#x…...

计算机组成原理课程设计

操作控制和顺序控制 操作控制就是由各种微命令来构成的顺序控制就是由P测试和后续微地址构成的 这就构成了整个微指令的三个部分 访存指令就是实现对主存中的数据进行访问或存储 一、 操作控制字段是由各种微命令来构成的&#xff0c;这些微命令怎么来设计&#xff1f; 一个萝卜…...

《从菜鸟到大师之路 MySQL 篇》

《从菜鸟到大师之路 MySQL 篇》 数据库是什么 数据库管理系统&#xff0c;简称为DBMS&#xff08;Database Management System&#xff09;&#xff0c;是用来存储数据的管理系统。 DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 实现读取自动化需要编程…...

使用qt完善对话框功能

1、 完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两…...

Day 03 python学习笔记

位运算 基于二进制的运算&#xff08;计算机的底层基于位运算&#xff09; 计算机最小单位&#xff1a;bit (比特/位/二进制) 1byte&#xff08;字节&#xff09; 8bit &#xff08; 0000 0000&#xff09; &&#xff1a;与 &#xff08;全真为真&#xff0c;一假则…...

优化类问题概述

数学建模系列文章&#xff1a; 以下是个人在准备数模国赛时候的一些模型算法和代码整理&#xff0c;有空会不断更新内容&#xff1a; 评价模型&#xff08;一&#xff09;层次分析法&#xff08;AHP&#xff09;,熵权法&#xff0c;TOPSIS分析 及其对应 PYTHON 实现代码和例题…...

第一个 Go 程序“hello,world“ 与 main 函数

第一个 Go 程序"hello&#xff0c;world" 与 main 函数 文章目录 第一个 Go 程序"hello&#xff0c;world" 与 main 函数一.创建“hello&#xff0c;world”示例程序二. “hello&#xff0c;world” 程序结构拆解三、main 函数四、Go 语言中程序是怎么编译…...

MySQL缓冲池Buffer Pool

前言 ​ 在应用系统中&#xff0c;为加速数据访问&#xff0c;会把高频的数据放在「缓存」(Redis、MongoDB)里&#xff0c;减轻数据库的压力。在操作系统中&#xff0c;为了减少磁盘IO&#xff0c;同时为了快速响应&#xff0c;引入了「缓冲池」(buffer pool)机制。 ​ MySQL…...

springboot实现发送邮箱验证码

准备工作 在邮箱官网开放SMTP授权&#xff0c;获取相应密钥&#xff0c;才可以进行发送邮件 这里以网易163邮箱为例&#xff0c;登录邮箱后&#xff0c;依次点击“设置-POP3/SMTP/IMAP” &#xff0c;然后开启SMTP服务。这时候会提示一个授权码&#xff0c;例如&#xff1a;H…...

ESP8266使用记录(三)

通过udp把mpu6050数据发送到PC端 /********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : ESP8266WiFiUdp_12 团队/Team : 太极创客团队 / Taichi-Maker (w…...

基于微信小程序的在线视频课程学习平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言用户微信端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉…...

CloudCompare 二次开发(15)——点云添加高斯噪声

目录 一、概述二、代码集成三、结果展示一、概述 不依赖任何第三方点云相关库,使用CloudCompare编程实现点云添加高斯噪声。添加高斯噪声的算法原理见:PCL 点云添加高斯噪声并保存。 二、代码集成 1、mainwindow.h文件public中添加: void doActionAddGassNoise(); //…...

一波免费、好用的API接口分享

全国快递物流地图轨迹查询&#xff1a;【H5物流轨迹、单号识别】通过物流单号和收寄件地址&#xff0c;自动评估物流时效&#xff0c;并在地图中展示包裹运输轨迹。包括顺丰、圆通、申通等主流快递公司。自动识别快递公司及单号&#xff0c;实时查询&#xff0c;稳定高效&#…...

Android App ~ LiveData

LiveData 两种更新数据方式 setValue(T value)postValue(T value) setValue()只能在主线程中调用&#xff0c;postValue()可以在任何线程中调用。 MutableLiveData 1.首先LiveData其实与数据实体类(POJO类)是一样的东西,它负责暂存数据. 2.其次LiveData其实也是一个观察者…...

全球第4大操作系统(鸿蒙)的软件后缀.hap

system exe 2022-12-01 04:38:38 首页 > 操作系统 145|0条评论 鸿蒙OS兼容已有安卓程序&#xff1a;这事不稀奇。 其实一个系统兼容另外系统的可执行程序并非新鲜事&#xff0c;比如linux下的wine和crossover可以兼容许多win系统的.exe程序。 作为回应&#xff0c;Wind…...

算法练习第六十四天

LCR 184. 设计自助结算系统 - 力扣&#xff08;LeetCode&#xff09; 总结&#xff1a;利用一个双端维护队列一个往后递减的队列&#xff0c;对头是最大值&#xff0c;每次进入一个新值时就一直和队尾元素比较将比新的值小的数排出&#xff0c;这样能保证留在队列中的数都是会…...

安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤【二】

​​​​​​安卓玩机教程---全机型安卓4----安卓12 框架xp edx lsp安装方法【一】 低版本可以参考上个博文了解相关安装方法。 LSP框架优点 简单来说装lsp框架的优点在于可以安装各种模块。包括 但不限于系统优化 加速 游戏开挂等等的模块。大致相当于电脑的扩展油猴 Lspos…...

实现一个宽高自适应的正方形

.square {width: 10%;height: 10vw;background: tomato; }.square {width: 20%;height: 0;padding-top: 20%;background: orange; }.square {width: 30%;overflow: hidden;background: yellow; } .square::after {content: ;display: block;margin-top: 100%; }...

shell脚本命令

Shell命令是在类Unix操作系统中使用的命令行解释器&#xff08;shell&#xff09;中执行的命令。Shell命令可以用于执行系统命令、操作文件、进行文本处理、管理进程等。以下是一些常见的Shell命令&#xff1a; 1. ls&#xff1a;列出当前目录下的文件和文件夹。 2. cd&#x…...

Vue2023 面试归纳及复习(2)

1 vue3中的动态组件和KeepAlive组件 动态组件component <component>动态组件是一种可以根据数据变化而动态加载不同组件的方式。使用动态组件可以有效地减少代码复杂度&#xff0c;提高组件的复用性和灵活性。 动态组件通过一个特殊的属性is来实现动态加载&#xff0c…...

idea 本地项目上传到 Git 步骤

第一步&#xff1a;菜单栏 VCS——>import into Version control——>Create git Repository——>弹出框找到选中自己项目——>点击Ok 第二步&#xff1a;选中项目右键 ——>git——>Add 文件会变成绿色表示成功 第三步:VCS——>commit——>ok 提交到…...

【从0学习Solidity】41. WETH

【从0学习Solidity】41. WETH 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈开发…...

微信小程序的无限瀑布流写法

微信小程序的无限瀑布流实现总算做完了&#xff0c;换了好几种方法&#xff0c;过程中出现了各种BUG。 首先官方有瀑布流的插件&#xff08;Skyline /grid-view&#xff09;&#xff0c;不是原生的我就不想引入&#xff0c;因为我的方块流页面已经搭好了&#xff0c;引入说不定…...

前有CAP理论,后有BASE理论,分布式系统理论基石

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...

HTTP、TCP、SOCKET三者之间区别和原理

7层网络模型 网络在世界范围内实现互联的标准框架 7层为理想模型&#xff0c;一般实际运用没有7层 详细内容 HTTP属于7层应用层 BSD socket属于5层会话层 TCP/IP属于4成传输层 TCP/IP协议 三次握手 笔者解析&#xff1a; 第一次握手&#xff1a;实现第一步需要客户端主动…...

flutter项目中常用第三方模块

flutter项目中常用第三方模块 持续更新中序言关于第三方模块安装flutter_native_splash使用方式模块配置 flutter_localizations模块配置使用方式 get_storage模块配置使用方式 get模块配置使用方式 持续更新中 序言 本章介绍项目中常用第三方模块&#xff0c;方便快速构建项目…...

Android 混淆使用及其字典混淆(Proguard)

1.使用背景 ProGuard能够通过压缩、优化、混淆、预检等操作&#xff0c;检测并删除未使用的类,字段,方法和属性&#xff0c;分析和优化字节码&#xff0c;使用简短无意义的名称来重命名类&#xff0c;字段和方法。从而使代码更小、更高效、更难进行逆向工程。 Android代码混淆…...

laravel 阿里云短信发送

示例 一、安装 安装&#xff1a;composer require mrgoon/aliyun-sms dev-master 二、打开config/app.php&#xff0c;添加配置代码 1、‘providers’ 配置组下添加 Mrgoon\Aliyunsms\AliyunsmsServiceProvider::class, 2、‘aliases’ 配置组下添加 Aliyunsms>Mrgoon…...

算法----LRU缓存机制

题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返…...

外贸网站建设模板下载/怎样优化网站排名

要记住这个表示重要的事情是 left 和 right 的属性将成为对 BinaryTree 类的其他实例的引用。 例如&#xff0c;当我们在树中插入一个新的左子节点时&#xff0c;我们创建另一个 BinaryTree 实例&#xff0c;并在根节点中修改self.leftChild 来引用新树节点。 我们必须考虑两种…...

做招聘网站/深圳关键词推广排名

蓝桥杯国赛真题精选 ——Python 科目 题目 1 提示信息&#xff1a; 平方是一种运算&#xff0c;比如&#xff1a;a 的平方表示 aa。 例如:2 的平方为 4 (也就是 2*2 的积)例如:4 的平方为 16 (也就是 4*4 的积) 编程实现&#xff1a; 输入一个正整数n,将 1 到n 之间所有正整数(…...

wordpress使用html界面/搜索网页内容

1.在iis中选择物理路径。配置域名 2.添加php默认文档 3.修改处理程序映射 4.设置模块映射信息 转载于:https://www.cnblogs.com/zhangyouwu/p/10277174.html...

网站域名价格/app开发

目录 树莓派更新树莓派更新命令树莓派更新 树莓派更新命令 sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade [optional] sudo rpi-update转载于:https://www.cnblogs.com/WeiG/p/9937045.html...

网站为什么提示风险/如何做营销推广

1、 通过属性和接口获取鼠标拾取&#xff08;Pick&#xff09;的物体 2、 通过事件获取鼠标拾取的物体 3、 区域 Pick 物体 4、 pickedResultFunc设置拾取对象回调函数 在开发数字孪生可视化场景应用时经常会用到拾取功能&#xff0c;顾名思义&#xff0c;在数字孪生可视化…...

网站设计欣赏国外/软件开发公司排行榜

只要使用listview,那么listview的异步加载是必不可少的. 我们知道,如果整个手机屏幕只能完整显示10条记录,那么adapter的getView就会调用10次, 也就是说,手机屏幕显示了几条数据,那么getView就会被调用几次...这个例子待会将会演示,注意往回看也是一样的, 也就是listview把以前…...