来学习ansibie(1)

# ansible

批量在远程主机上执行命令

python2.7编写

## 安装

第一步:下载epel源

```shell
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
```

第二步:安装

```shell
yum install -y ansible
```

## ansible 命令格式

```shell
Usage: ansible <host-pattern> [options]
-a MODULE_ARGS 模块参数
-C, --check 检查语法
-f FORKS 并发
--list-hosts 列出主机列表
-m MODULE_NAME 模块名字
```

ssh 认证方式

- 密码
- 秘钥
- ssh-keygen 生成密钥对
- ssh-copy-id 复制公钥到远程主机
- 私钥加密,公钥解密

查看ansible生成的文件

```shell
rpm -ql ansible
/etc/ansible
/etc/ansible/ansible.cfg # ansible 配置文件
/etc/ansible/hosts
/etc/ansible/roles
```

## ping 走的是ICMP协议

## ansible第一条命令

```shell
ansible 192.168.12.26 -m ping ping 一台机器
ansible 192.168.12.26,192.168.12.28 -m ping ping多台机器
ansible all -m ping ping所有机器
ansible web -m ping ping 一个组
ansible 'web:!db' -m ping ping web中有但是db中没有
ansible "web:&db" -m ping ping web和db的并集
ansible "web:db" -m ping ping web和db的交集

```

hosts文件内容

```shell
# It should live in /etc/ansible/hosts
#
# - Comments begin with the '#' character #是注释
# - Blank lines are ignored 空行被忽略
# - Groups of hosts are delimited by [header] elements []表示主机组
# - You can enter hostnames or ip addresses 可以输入主机名或者ip地址
# - A hostname/ip can be a member of multiple groups 一台主机可以被分配多个组
www[001:006].example.com www001到www006.example.com
```

### host-pattern格式

- 单个的机器
- 多个的机器,逗号隔开
- 全部机器,all
- 可以写一个分组
- 可以写多个分组
- 并集
- 逗号隔开
- 冒号隔开
- 交集,:&隔开
- 差集: :!隔开

## ansible-doc 查看模块帮助信息

```shell
ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
-j 以json格式显示所有模块信息
-l 列出所有的模块
-s 显示模块的摘要信息
# 直接显示模块的所有帮助信息

```

ansible 特性: 幂等性 不管执行几次,结果都是一样的

# 命令相关

## command

```shell
ansible web -a 'ls'
ansible web -a 'chdir=/tmp pwd' # 先切换目录,在执行相应的命令,一般情况下在编译时候使用
ansible web -a 'creates=/tmp pwd' # 如果creates的文件存在,则不执行后面的操作
ansible web -a 'removes=/tmp pwd' # 如果removes的文件存在,则执行后面的操作
ansible web -a 'removes=/tmp mkdir /data' # 会执行后面的mkdir命令
ansible web -a 'creates=/data2 mkdir /data2' #会执行后面的mkdir命令

```

补充

```shell
查看用户是否被创建成功
tail -1 /etc/passwd
tail -1 /etc/shadow
id
echo '1' | passwd --stdin alex 非交互式设置密码
```

## shell

```shell
<>|;& $ 这些特殊字符command不支持
ansible web -m shell -a 'echo "1" | passwd --stdin alex' 设置alex的密码
ansible 192.168.12.25 -m shell -a '/root/a.sh' 执行shell脚本,前提是脚本有可执行权限
ansible 192.168.12.25 -m shell -a '/root/a.py' 执行python脚本,前提是脚本有可执行权限

```

## script

```shell
ansible db -m script -a '/root/m.sh' 执行管控机上的文件
ansible web -m script -a 'creates=/root/a.sh /root/m.sh' # 查看的是被管控机上的文件是否存在
```

# 文件相关的模块

## copy

```shell
ansible db -m copy -a "dest=/tmp/a.sh src=/root/m.sh" 复制文件到远程主机
ansible db -m copy -a "dest=/tmp/a.sh src=/root/m.sh backup=yes" 复制文件并备份远程文件
ansible web -m copy -a "dest=/tmp/a.sh src=/root/m.sh owner=alex mode=700" 修改复制后的文件的属主和权限
ansible web -m copy -a "src=/etc/init.d dest=/tmp" 复制目录到远程主机
ansible web -m copy -a "src=/etc/init.d/ dest=/tmp" 复制目录里面的文件到远程主机
ansible web -m copy -a "src=/etc/ansible dest=/tmp owner=alex" 复制目录到远程主机,并修改目录的属主,并且里面文件的属主也被修改了
ansible web -m copy -a "content='大弦嘈嘈如急雨,小弦切切如私语' dest=/tmp/b.txt" 直接将content里面的内容添加到dest的文件里面
```

## file

### 补充

```shell\
ln -s 原文件地址 目标文件地址 创建软连接
ln 创建硬链接
```

```shell
ansible cache -m file -a "path=/tmp/wupeiqi state=directory" 创建一个目录
ansible cache -m file -a "path=/tmp/wupeiqi.txt state=touch" 创建一个文件
ansible cache -m file -a "path=/tmp/t state=link src=/etc/init.d" 创建软连接 path是目标文件 src是源文件
ansible cache -m file -a "path=/tmp/t state=absent " 删除文件

转载于:https://www.cnblogs.com/wszxdzd/p/10380800.html

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

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

相关文章

CQYZOJ P1392 拔河问题

题目\(1\) Description 一个学校举行拔河比赛&#xff0c;所有的人被分成了两组&#xff0c;每个人必须&#xff08;且只能够&#xff09;在其中的一组&#xff0c;且两个组内的所有人体重加起来尽可能地接近. Input 第\(1\)行是一个\(n\)&#xff0c;表示参加拔河比赛的总人数…

灵活的Vue组件——原来这么简单

本篇学习目标 能够理解vue组件概念和作用能够掌握封装组件能力能够使用组件之间通信能够完成todo案例 1. vue组件 1.0_为什么用组件 以前做过一个折叠面板 需求: 现在想要多个收起展开的部分 方案1: 复制代码 代码重复 冗余不利于维护 案例用less写的样式, 所以下载 ya…

FOI冬令营 Day 3

目录 T1、签到题&#xff08;sort&#xff09;传送门 Code T2、送分题&#xff08;queue&#xff09;传送门 Code T3、简单题&#xff08;game&#xff09;传送门 Code 咕咕咕T1、签到题&#xff08;sort&#xff09; 传送门 原题&#xff1a;LOJ 2767 Code //2019/2/14 //50…

委托事件观察者模式

委托的默认返回类型&#xff1a;void 声明委托的关键字&#xff1a;delegate 多播委托&#xff1a;将多个方法绑定到一个委托变量 在调用方法时 可以执行绑定的方法 委托的描述&#xff1a; 委托是一个类 定义了方法的类型 可以将方法当做另一个方法进行传递 委托并不等同于方法…

赢在CSDN——名利兼收

文章目录&#x1f30a; 相识CSDN&#x1f30a; 益于CSDN流量将成为你我的亮点我的专栏收益到账啦学习会员助你拿捏专栏更多曝光自己的机会CSDN问答为你准备的零花钱&#x1f30a; 忠于CSDN&#x1f30a; 相识CSDN 小编自注册CSDN至今两年有余&#xff0c;记得初衷也仅仅是为了…

124angular1实现无限表单(仅供自己看)

//将本行的内容对象作为参数&#xff0c;传给点击函数&#xff0c;点击函数向后台发送请求&#xff0c;把获取的返回值作为内容对象的一个属性。 (function (angular) {angular.module(myModule, []).directive(treeModel, [$compile, function ($compile) {return {restrict: …

了解 Vue SSR 这一篇足以

文章目录1 - 什么是服务器端渲染&#xff1f;1.1 新建server文件夹1.2 生成一个node项目1.3 安装express1.4 服务端渲染小案例1.5 运行查看效果1.6 打开浏览器1.7 右键查看源代码2 - 什么是客户端渲染&#xff1f;2.1 新建client文件夹2.2 生成一个vue项目2.3 安装依赖并启动2.…

3 数组中的重复数字

题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字是重复的&#xff0c;也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 Input: {2, 3, 1, 0, 2, 5}Output: 2 思路 给出了长度为n且数组…

小型软件项目开发流程探讨

一&#xff0e;导言国内很多项目都是小型项目, 参与人员少(两到五个人), 要快速交付(一两个月) . 要成功完成这种项目, 除了使用成熟且被团队成员熟练使用的技术之外, 有一个良好的开发流程, 也是很必要的. 二&#xff0e;小型软件项目开发流程下图是我对小型软件项目开发流程…

Vue2的核心原理剖析

✨ 用了这么久的Vue2了你真的 知其然&#xff0c;知其所以然么&#xff1f; ✨今天博主就为大家带来一篇对Vue核心功能的部分剖析\textcolor{pink}{今天博主就为大家带来一篇对Vue核心功能的部分剖析}今天博主就为大家带来一篇对Vue核心功能的部分剖析 ✨后续文章会用更多小案…

Scrum之成败——从自身案例说起,仅供参考

从07年中初次接触Scrum的概念到其中几年项目中逐渐实践CI、TDD&#xff0c;到亲自掌握项目实践Scrum近一年&#xff0c;最终我们放弃了Scrum这个框架和所谓的“自组织”。原因为何&#xff1f; 1.成员放弃了Scrum所“赋予”的“权利” 比如领用任务、评估工作量、自组织协作、决…

sanic官方文档解析之下载和Configuration

1,sanic框架是做什么的? sanic的官方网址:https://sanic.readthedocs.io/en/latest/sanic框架是一个类似于flask框架的在Python3.5以上版本的文本服务器,他能够快速的编写,它是通过惊人的开发效率完成开发,希望通过这篇文章得到激励sanic框架的理念是:简单,高效 sanic的应用如…

首秀 Express 框架

文章目录框架特性express的使用初始化项目&#xff1a;下载框架模块&#xff1a;测试代码&#xff1a;总结以上代码&#xff1a;请求处理的中间件概念&#xff1a;中间件——app.use基本用法&#xff1a;next的用法app.use中间件的应用路由的保护网站维护公告自定义404&#xf…

云原生技能树测评

前言 利用午休后的10多分钟时间&#xff0c;看了看APP的技能树板块&#xff0c;简单的提出几个看法&#xff01; 答题过程 可以设置为闯关类型&#xff0c;答对一道后可以进入下一关&#xff0c;或者是一个章节为一关&#xff0c;让大家一直有一种期待 回答错误数量 可以…

原型和闭包

原型和闭包 一切皆对象 一切皆对象&#xff08;类型值除外&#xff09; undefined, number, string, boolean属于简单的值类型 函数、数组、对象、new Number(10)都是对象。他们都是引用类型 Null是基本数据类型&#xff0c;不是引用数据类型 基本数据类型的值就是它本身的值&a…

python 排序算法

冒泡排序&#xff1a; 1 #coding:utf-82 3 比较相邻的元素&#xff0c;每一趟交换后&#xff0c;最后的元素是最大的。4 第一次比较n-1次&#xff0c;第二次比较n-2次。。。第n-1次比较1次5 进行n-1次冒泡次数6 最优时间复杂度O(n),最坏时间复杂度O(n^2)7 8 9 def bubble_sort…

奖励 CSDN 社区的领军人物

设计动机 领军人物榜单在这里&#xff1a;https://blog.csdn.net/rank/list/role CSDN 是中国 IT 人士学习、成长、成功的平台&#xff0c; 这个平台有很多博主&#xff0c; 博主写的很多优秀文章获得了粉丝。 那么&#xff0c; 博主获得粉丝之后&#xff0c; 博主以粉丝为荣…

一文教会你何为重绘、回流?

文章目录css图层图层创建的条件重绘(Repaint)回流触发重绘的属性触发回流的属性常见的触发回流的操作优化方案requestAnimationFrame----请求动画帧写在最后学习目标&#xff1a; 了解前端Dom代码、css样式、js逻辑代码到浏览器展现过程了解什么是图层了解重绘与回流了解前端层…

mockjs中的方法(三)

1&#xff09;Mock.mock()&#xff1b; Mock.mock( url, type, template, function(options) ); 其中 url 是定义我们要请求的 url 地址&#xff0c;以便于我们请求的时候 mock 去进行拦截&#xff0c;知道我们要去请求那个值&#xff1b;但是它也是可选的&#xff0c;而且格式…

js函数、js对象的这些点你真的懂吗?

本篇学习目标 ✨了解函数&#xff08;高级&#xff09;原型原型链概念\textcolor{green}{了解函数&#xff08;高级&#xff09;原型原型链概念}了解函数&#xff08;高级&#xff09;原型原型链概念 ✨掌握函数作用域\textcolor{green}{掌握函数作用域}掌握函数作用域 ✨掌握…