一篇带你快速入门ansible和使用

#基本概述
ansible是一款开源自动化工具,基于python paramiko模块开发,分布式,无需客户端
官网网址:https://www.ansible.com
官方文档:https://docs.ansible.com/ansible/latest/user_guide/become.html
#应用场景
批量执行和分发任务
#如:同时在1000台服务器上安装apache服务,并在安装后启动服务
#如:将某一个文件一次性拷贝到1000台服务器上
#特点
部署简单,只需要在ansible控制端部署
默认使用SSH协议进行管理
主从集中化管理
配置简单,扩展性强
支持API及自定义模块,可通过python扩展
通过playbooks剧本来定制强大的配置
#架构图

#安装
#1.设置epel仓库(ansible仓库默认不在yum仓库中,所以要启用epel仓库)
yum install epel-release -y #2.使用yum进行安装
yum install ansible -y #3.查看版本
Ansible --version
#ansible命令参数
ansible - Define and run a single task 'playbook' against a set of hosts
#针对一组主机定义并运行单个任务“剧本”
ansible命令语法:ansible [-i:主机文件] [-f:批次] [组名] [-m 模块名称] [-a:模块参数]
#ansible常用参数
-v,–verbose # 详细模式,如果命令执行成功,输出详细的结果 (-vv –vvv -vvvv)
-i PATH, -inventory=PATH # 指定 host 文件的路径,默认是在 /etc/ansible/hosts
inventory [ˈɪnvəntri] 库存
-f NUM,-forks=NUM # NUM 是指定一个整数,默认是 5 ,指定 fork 开启同步进程的个数。
-m NAME,-module-name=NAM # 指定使用的 module 名称,默认使用 command模块
-a,MODULE_ARGS #指定 module 模块的参数
-k,-ask-pass #提示输入 ssh 的密码,而不是使用基于 ssh 的密钥认证
-sudo # 指定使用 sudo 获得 root 权限
-K,-ask-sudo-pass #提示输入 sudo 密码,与 -sudo 一起使用
-u USERNAME,-user=USERNAME # 指定移动端的执行用户
-C,–check #测试此命令执行会改变什么内容,不会真正的去执行
#ansible查看帮助
ansible-doc -l #列出所有的模块列表
ansible-doc -s 模块名 #查看指定模块的参数
ansible-doc 模块名 #查看指定模块的详细参数
#示例:ansible-doc yum | ansible-dco firewalld
#基本使用
#实验拓扑图

一:定义主机清单(有两种方式:一种基于端口,用户名密码,一种基于SSH密钥)
1、基于端口、用户名、密码定义清单
格式:ansible_ssh_port:指定ssh端口 ansible_ssh_user:指定用户 ansible_ssh_pass:指定密码 ssh_sudo_pass:指明sudo时候的密码
2、基于SSH密钥来访问定义清单
在ansible服务端生成秘钥,并且复制公钥到节点中
#ssh-keygen 一直回车
#一键生成
ssh-keygen -f ~/.ssh/id_rsa -P '' -q
使用ssh-copy-id命令复制ansible公钥到节点
ssh-copy-id root@192.168.186.142
#使用sshpass批量分发密钥到服务器
[root@game scripts]# cat scp_isa.sh
#!/bin/bash
ip=(130 131 132 133)
for i in ${ip[@]}
do
sshpass -p"Skills39" ssh-copy-id -i /root/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" root@192.168.228.$i
done
#服务端查看效果
[root@game ~]# cat /root/.ssh/known_hosts
192.168.228.130 ecdsa-sha2-nistp256 AAAAE2VjZHNhL.....AuHi+n9iVPC0Of9D/MKK8lWuGHg=
192.168.228.131 ecdsa-sha2-nistp256 AAAAE2VjZHNh...d8FX4mqoYCp43E2knM9t8YAZGg/k08=
192.168.228.132 ecdsa-sha2-nistp256 AAAAE2VjZHNhL....y6U2tCs+SU/Sg+rGR8E76lqC316Q=
192.168.228.133 ecdsa-sha2-nistp256 AAAAE2....iTuiJ+0VNOYrhh2gqW36XJVlW1+p6pj2dbo=
#服务端测试面密钥登录
ssh 192.168.228.130
#配置清单
#/etc/ansible/hosts
[db-server]
192.168.186.142
192.168.186.135
#网段范围写法
[all]
192.168.228.[130:133] #如果写主机名,需要在/etc/hosts里面写
[a]
k8s-master
#/etc/hosts
[root@game ~]# cat /etc/hosts
192.168.228.130 k8s-master
二:在ansible服务端运行命令
#提示:
#首次运行如果不进行什么修改的话会提出警告,可以按照将deprecation改为False
[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default,
this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
#[root@k8s-master ~]# vim /etc/ansible/ansible.cfg
deprecation_warnings=False
1、使用ping检查k8s-node节点机器的连通性
[root@k8s-master ~]# ansible k8s-node -m ping
#提示:也可以指定hosts文件,但是默认就是读取那个文件,所以不指定也是可以的# ansible -i /etc/ansible/hosts k8s-node -m ping
192.168.86.133 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.86.132 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
2、检查ansible节点的运行时间
[root@k8s-master ~]# ansible k8s-node -m command -a 'uptime'
192.168.86.133 | CHANGED | rc=0 >>
23:16:34 up 5 min, 2 users, load average: 0.00, 0.03, 0.03
192.168.86.132 | CHANGED | rc=0 >>
23:16:34 up 31 min, 2 users, load average: 0.00, 0.01, 0.04
3、检查节点的内核版本
[root@k8s-master ~]# ansible k8s-node -a 'uname -r'
192.168.86.132 | CHANGED | rc=0 >>
3.10.0-1062.el7.x86_64
192.168.86.133 | CHANGED | rc=0 >>
3.10.0-1062.el7.x86_64
一篇带你快速入门ansible和使用的更多相关文章
- 【转】C#单元测试,带你快速入门
[转]C#单元测试,带你快速入门 注:本文示例环境 VS2017 XUnit 2.2.0 单元测试框架 xunit.runner.visualstudio 2.2.0 测试运行工具 Moq 4.7.1 ...
- .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
写在前面 上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了 ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用
写在前面 上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现.但 ...
- 5分钟带你快速入门和了解 OAM Kubernetes
什么是 OAM? OAM 的全称为开放应用模型(Open Application Model),由阿里巴巴宣布联合微软共同推出. OAM 解决了什么问题? OAM 本质是为了解耦K8S中现存的形形色色 ...
- Zara带你快速入门WPF(3)---触发器篇
一.前言 使用触发器,可以动态的改变控件的外观,因为一些事件或属性改变了,把鼠标移动到按钮上,按钮就会改变其外观.通常这些必须写在C#代码中,使用WPF也可以使用XAMl实现,而这只会影响UI. 属性 ...
- Zara带你快速入门WPF(2)---布局篇
一.章节目标 这几章节我们会创建一个完整的Window程序,包括使用DataGrid空间,数据绑定是把.NET类中的数据提供给用户界面的一个重要概念,还允许修改数据,包括.NET4.5新增的INoti ...
- 30分钟带你快速入门MySQL教程
这是一篇真正适合初学者的MySQL数据库入门文章,哪怕你从来没有接触过数据库,或者说你从来没有听说过有数据库这东西,请一定要相信我,我当时就是这么过来的. 如果你刚开始接触MySQL数据库,或者你需要 ...
- C#单元测试,带你快速入门
注:本文示例环境 VS2017 XUnit 2.2.0 单元测试框架 xunit.runner.visualstudio 2.2.0 测试运行工具 Moq 4.7.10 模拟框架 为什么要编写单元测试 ...
随机推荐
- failed to find romfile "efi-virtio.rom"
问题:failed to find romfile "efi-virtio.rom" 解决:apt-get install ipxe-qemu
- Spring Boot 如何解决项目启动时初始化资源
在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资 ...
- mysql高级内容学习总结
创建索引 create [unique] index indexname on tablename(columnname(length)) alter tablename add [unique] i ...
- 如何寻找决策最优解?熵权TOPSIS助你科学决策
熵权topsis是一种融合了熵值法与TOPSIS法的综合评价方法.熵值法是一种客观赋值法,可以减少主观赋值带来的偏差:而topsis法是一种常见的多目标决策分析方法,适用于多方案.多对象的对比研究,从 ...
- 焦大:SEO重思录(上)收录量和收录率的重新定位
http://www.wocaoseo.com/thread-198-1-1.html 前一段焦大在seo前线就看到有人问为何我收录量很大但是流量很低呢?有时候几百万的收录量但是流量却只有1000不到 ...
- Promise对象入门
简介 promise对象可以获取异步操作的消息,提供统一的API,各个异步操作都可以用同样的方法进行处理. promise对象不受外界影响,其有三种状态:pending(进行中).fulfilled( ...
- 关于提高服务器的带宽策略bonding
一:bonding的概念 所谓bonding就是将多块网卡绑定同一IP地址对外提供服务,可以实现网卡的带宽扩容.高可用或者负载均衡. 二:bonding的优势 1 网络负载均衡 2 提高带宽网络传输效 ...
- js中使用const声明变量时需要注意
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址(初始化的内容)不得改动.对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 简单 ...
- Lua 调用的 C 函数保存 state 的两种方式: Storing State in C Functions 笔记
http://yanbin.is-programmer.com/posts/94214.html Registery的Key 1. 整数Key用于Lua的引用机制,所以不要使用整数作为Key 2. 通 ...
- 分享一款知识库平台系统-wcp
入园这么些天了,今天搭建了一套知识库系统,使用效果还不错,分享一些过程经验. 搭建准备: 软件系统:WCP4.3免费版 (免费开源,支持Windows,使用简单,有傻瓜式一键安装包-win平台) 服务 ...