Ansible-入门使用方法
Ansible介绍
自动化运维工具,统一配置管理工具。自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。
统一配置管理工具:
- Ansible python 基于ssh通信,不用安装客户端
- SaltStack python 不基于ssh,使用自己的客户端和服务端通信,跨平台,跨系统操作。
- puppet Raby
Ansible的功能及优点
1.远程执行
批量执行远程命令,可以对多台主机进行远程操作
2.配置管理
批量配置软件服务,可以进行自动化方式配置,服务的统一配置管理,和启停
3.事件驱动
通过Ansible的模块,对服务进行不同的事件驱动
比如:
1)修改配置后重启
2)只修改配置文件,不重启
3)修改配置文件后,重新加载
4)远程启停服务管理
4.管理公有云
通过API接口的方式管理公有云,不过这方面做的不如saltstack
.
saltstack本身可以通过saltcloud管理各大云厂商的云平台。
5.二次开发
因为语法是Python,所以便于运维进行二次开发。
6.任务编排
可以通过playbook的方式来统一管理服务,并且可以使用一条命令,实现一套架构的部署
7.跨平台,跨系统
几乎不受到平台和系统的限制,比如安装apache
和启动服务
在Ubuntu上安装apache服务名字叫apache2
在CentOS上安装apache服务名字叫httpd
在CentOS6上启动服务器使用命令:/etc/init.d/nginx start
在CentOS7上启动服务器使用命令:systemctl start nginx
Saltstack基础使用
# 1.安装服务端和客户端
[root@m01 ~]# yum install -y salt-master salt-minion
# 2.客户端
[root@m01 ~]# yum install -y salt-minion
# 3.修改客户端的配置文件
[root@m01 ~]# vim /etc/salt/minion
master: 10.0.0.61
# 4.一定先启动服务端,再启动客户端
[root@m01 ~]# systemctl start salt-master salt-minion
[root@m01 ~]# systemctl start salt-minion
[root@oldgirl ~]# /etc/init.d/salt-minion start
# 查看认证key
[root@m01 ~]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
m01
oldgirl
web01
Rejected Keys:
### 认证1个key
[root@m01 ~]# salt-key -a web01
### 全部认证
[root@m01 ~]# salt-key -A
[root@m01 ~]# salt '*' test.ping
[root@m01 ~]# salt '*' cmd.run 'touch /root/zls123_456.txt'
环境
主机名 | wanIP | lanIP | 角色 |
---|---|---|---|
m01 | 10.0.0.61 | 172.16.1.61 | Ansible控制端 |
web01 | 10.0.0.7 | 172.16.1.7 | Ansible被控端 |
web02 | 10.0.0.8 | 172.16.1.8 | Ansible被控端 |
web03 | 10.0.0.9 | 172.16.1.9 | Ansible被控端 |
lb01 | 10.0.0.5 | 172.16.1.5 | Ansible被控端 |
lb02 | 10.0.0.6 | 172.16.1.6 | Ansible被控端 |
db01 | 10.0.0.51 | 172.16.1.51 | Ansible被控端 |
backup | 10.0.0.41 | 172.16.1.41 | Ansible被控端 |
nfs | 10.0.0.31 | 172.16.1.31 | Ansible被控端 |
安装
[root@m01 ~]# yum -y install ansible
ansible配置文件
/etc/ansible/ansible.cfg
/etc/ansible/hosts 主机清单配置文件
[root@m01 ~]# cat /etc/ansible/ansible.cfg
#inventory = /etc/ansible/hosts #主机列表配置文件
#library = /usr/share/my_modules/ #库文件存放目录
#remote_tmp = ~/.ansible/tmp #临时py文件存放在远程主机目录
#local_tmp = ~/.ansible/tmp #本机的临时执行目录
#forks = 5 #默认并发数
#sudo_user = root #默认sudo用户
#ask_sudo_pass = True #每次执行是否询问sudo的ssh密码
#ask_pass = True #每次执行是否询问ssh密码
#remote_port = 22 #远程主机端口
host_key_checking = False #跳过检查主机指纹,在密码验证的时候忽略yes/和no的那一步。
log_path = /var/log/ansible.log #ansible日志
主机清单
让ansible知道哪些机器需要维护,还有hosts的作用。
连接方式:
ip + port+user+pass
#方式一、IP+端口+用户+密码
[root@m01 ~]# vi /etc/ansible/hosts
[webs]
10.0.0.7 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='1'
10.0.0.8 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='1'
hostname+pass
# 写法一
[root@m01 ~]# vi /etc/ansible/hosts
[web_group]
web01 ansible_ssh_host=10.0.0.7 ansible_ssh_pass='1'
web02 ansible_ssh_host=10.0.0.8 ansible_ssh_pass='1'
[root@m01 ~]# ansible web_group -m ping
web02 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
web01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
# 写法二(需要编辑hosts)
[root@m01 ~]# vi /etc/ansible/hosts
[web_group]
web01 ansible_ssh_pass='1'
web02 ansible_ssh_pass='1'
[root@m01 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.8 web02
10.0.0.7 web01
10.0.0.9 web03
10.0.0.31 nfs01
[root@m01 ~]# ansible web_group -m ping
web02 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
web01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
nfs01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
# 写法三
[web_group]
web0[1:3] ansible_ssh_pass='1'
# 表示的是web01到web03;需要编辑hosts
# 写法四,定义变量
[web_group]
web0[1:3]
[web_group:vars]
ansible_ssh_pass='1'
# 需要编辑hosts,做主机解析
[root@m01 ~]# ansible web_group -m ping
web01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
web02 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
web03 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
主机密钥
# 先分发密钥
[root@m01 ~]# ssh-keygen
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.51
[root@m01 ~]# vi /etc/ansible/hosts
[web_group]
10.0.0.7:22
10.0.0.8
10.0.0.9
[root@m01 ~]# ansible web_group -m ping
10.0.0.8 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.0.0.9 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.0.0.31 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.0.0.7 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.0.0.51 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
推荐使用的方式
不同用处的主机分成不同的组。
# 需要分发主机密钥
[root@m01 ~]# vi /etc/ansible/hosts
[web_group]
web01 ansible_ssh_host=10.0.0.7 ansible_ssh_port=22 # 后面ssh端口不是22的,可以使用该参数,更改端口
web02 ansible_ssh_host=10.0.0.8
[backup_group]
backup ansible_ssh_host=10.0.0.41
[nfs_group]
nfs ansible_ssh_host=10.0.0.31
[db_group]
db01 ansible_ssh_host=10.0.0.51
db02 ansible_ssh_host=10.0.0.52
# =======================================
# 分组书写的方式之一
[root@m01 ~]# vi /etc/ansible/hosts
[web_group]
web01 ansible_ssh_host=10.0.0.7 ansible_ssh_port=22
web02 ansible_ssh_host=10.0.0.8
[backup_group]
backup ansible_ssh_host=10.0.0.41
[nfs_group]
nfs ansible_ssh_host=10.0.0.31
[db_group]
db01 ansible_ssh_host=10.0.0.51
db02 ansible_ssh_host=10.0.0.52
# 可以引用上面的分组,!(和分组里面的主机名),比如安装rsync在特定的机器上,用此操作。
[rsync:children]
nfs_group
backup_group
[root@m01 ~]# ansible rsync -m ping
nfs | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
backup | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@m01 ~]# ansible rsync -m shell -a 'hostname'
nfs | CHANGED | rc=0 >>
nfs01
backup | CHANGED | rc=0 >>
backup
[root@m01 ~]# ansible rsync -m shell -a 'yum -y install rsync'
# 会提示ansible有专门的yum模块
[WARNING]: Consider using the yum module rather than running 'yum'. If you need to use command because yum is insufficient you can
add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
# 后面会有返回安装过后的值
查看主机
# 查看分组中有哪些主机
[root@m01 ~]# ansible rsync --list-host
# 查看所有的主机
[root@m01 ~]# ansible all --list-host
主机的指定:
1.组名字
2.[]标签名
3.IP(密钥连接的时候)
4.主机名
# 语法
ansible 指定主机(IP、主机清单名字、all) -m 指定模块
ansible webs -m ping
-m # 指定模块
Ansible-入门使用方法的更多相关文章
- Ansible 入门指南 - ansible-playbook 命令
上篇文章Ansible 入门指南 - 安装及 Ad-Hoc 命令使用介绍的额是 Ad-Hoc 命令方式,本文将介绍 Playbook 方式. Playbook 译为「剧本」,觉得还挺恰当的. play ...
- [转帖]Ansible 入门秘诀
Ansible 入门秘诀 作者: Jose Delarosa 译者: LCTT jdh8383 | 2019-03-08 09:24 收藏: 2 用 Ansible 自动化你的数据中心的关键点. ...
- Ansible 入门指南 - 学习总结
概述 这周在工作中需要去修改 nginx 的配置,发现了同事在使用 ansible 管理者系统几乎所有的配置,从数据库的安装.nginx 的安装及配置.于是这周研究起了 ansible 的基础用法.回 ...
- 一、Ansible入门篇
一.Ansible简介 Ansible是一个自动化运维的工具 基于python语言编写,因此机器需要具备python环境. 通过ssh的连接方式进行自动化部署,ansible优先使用OpenSSH,在 ...
- ansible入门
前言 最近看了一下ansible,挺火的一个配置管理工具,对比老大哥puppet,使用起来要简单一些,并且可以批量执行命令,对比同是python语言编写的saltstack,不需要安装客户端(基于pa ...
- Ansible 入门指南 - 安装及 Ad-Hoc 命令使用
安装及配置 ansible Ansilbe 管理员节点和远程主机节点通过 SSH 协议进行通信.所以 Ansible 配置的时候只需要保证从 Ansible 管理节点通过 SSH 能够连接到被管理的远 ...
- ansible基本使用方法
一.ansible的运行流程 ansible是基于ssh模块的软件,所以主控端和被控端的ssh服务必须正常才能保证ansbile软件的可用性. 检查ssh服务是否正常: systemctl sta ...
- ansible入门及组件介绍
Ansible简介 Ansible是自动化运维的工具,基于Python开发,实现了批量系统配置.批量程序部署.批量运行命令等功能.Ansible是基于模块工作的,ansible提供一个框架,通过模块实 ...
- Ansible入门笔记(1)之工作架构和使用原理
目录 Ansible入门笔记(1) 1.Ansible特性 2.ansible架构解析 3.ansible主要组成部分 1)命令执行来源: 2)利用ansible实现管理的方式 3)Ansile-pl ...
- ansible入门02
1.常用模块 1.1 group模块 添加或删除组 name= state=:present(添加),absent(删除) sy ...
随机推荐
- 201871030122-牛建疆 实验三 结对项目——《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 班级博客链接 作业要求链接 作业要求链接 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming).(2)掌握Github协 ...
- springboot项目配置logback日志系统
记录springboot项目配置logback日志文件管理: logback依赖jar包 SpringBoot项目配置logback理论上需要添加logback-classic依赖jar包: < ...
- FastAPI项目实战:"异步"接口测试"平台"
apiAutoTestWeb 是什么? apiAutoTest接口自动化测试工具的可视化版本,将原本对用例的操作转移到Web页面之上 用什么实现? 接口自动化测试:大体上测试逻辑将采用apiAutoT ...
- 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作ubuntu16.04-16
自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作ubuntu16.04-16 欢迎加QQ群:1026880196 进行交流学习 制作Ope ...
- Linux终端更改字体
1 概述 这里的终端是指通过F1-F6/F2-F7进入的纯命令终端. 修改字体可以通过setfont命令. 2 查看字体 可以通过查找目录consolefonts来确定本地机器上的字体位于哪里: fi ...
- qsort 快排函数(C语言)
qsort 快排函数(C语言) 函数原型 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, ...
- 测试工具PerfDog的使用
使用操作:https://www.jianshu.com/p/cc04c710e643下载地址:https://perfdog.qq.com/
- 09- Linux下压缩和解压命令
压缩和解压命令 gzip命令: 作用: tar命令 作用:对文件或文件夹进行打包和解包的操作. 格式:tar [选项] 文件名 [文件名或路径] 练习题:
- 12- APP接口测试以及接口文档的分析
什么是接口? 为什么要做接口测试? 接口测试流程 需求评审 需求分析 接口用例设计 执行测试用例 bug的定位于追踪 接口文档分析 接口文档分析:开发 内容: 1.接口名称 2.接口地址 3.支持方式 ...
- 「跬步千里」详解 Java 内存模型与原子性、可见性、有序性
文题 "跬步千里" 主要是为了凸显这篇文章的基础性与重要性(狗头),并发编程这块的知识也确实主要围绕着 JMM 和三大性质来展开. 全文脉络如下: 1)为什么要学习并发编程? 2) ...