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 # 指定模块
FBI WARNING

QQ:1402122292 认准原创sheldon 别人叫我晓东

Ansible-入门使用方法的更多相关文章

  1. Ansible 入门指南 - ansible-playbook 命令

    上篇文章Ansible 入门指南 - 安装及 Ad-Hoc 命令使用介绍的额是 Ad-Hoc 命令方式,本文将介绍 Playbook 方式. Playbook 译为「剧本」,觉得还挺恰当的. play ...

  2. [转帖]Ansible 入门秘诀

    Ansible 入门秘诀 作者: Jose Delarosa 译者: LCTT jdh8383 | 2019-03-08 09:24   收藏: 2 用 Ansible 自动化你的数据中心的关键点. ...

  3. Ansible 入门指南 - 学习总结

    概述 这周在工作中需要去修改 nginx 的配置,发现了同事在使用 ansible 管理者系统几乎所有的配置,从数据库的安装.nginx 的安装及配置.于是这周研究起了 ansible 的基础用法.回 ...

  4. 一、Ansible入门篇

    一.Ansible简介 Ansible是一个自动化运维的工具 基于python语言编写,因此机器需要具备python环境. 通过ssh的连接方式进行自动化部署,ansible优先使用OpenSSH,在 ...

  5. ansible入门

    前言 最近看了一下ansible,挺火的一个配置管理工具,对比老大哥puppet,使用起来要简单一些,并且可以批量执行命令,对比同是python语言编写的saltstack,不需要安装客户端(基于pa ...

  6. Ansible 入门指南 - 安装及 Ad-Hoc 命令使用

    安装及配置 ansible Ansilbe 管理员节点和远程主机节点通过 SSH 协议进行通信.所以 Ansible 配置的时候只需要保证从 Ansible 管理节点通过 SSH 能够连接到被管理的远 ...

  7. ansible基本使用方法

    一.ansible的运行流程 ansible是基于ssh模块的软件,所以主控端和被控端的ssh服务必须正常才能保证ansbile软件的可用性. 检查ssh服务是否正常:   systemctl sta ...

  8. ansible入门及组件介绍

    Ansible简介 Ansible是自动化运维的工具,基于Python开发,实现了批量系统配置.批量程序部署.批量运行命令等功能.Ansible是基于模块工作的,ansible提供一个框架,通过模块实 ...

  9. Ansible入门笔记(1)之工作架构和使用原理

    目录 Ansible入门笔记(1) 1.Ansible特性 2.ansible架构解析 3.ansible主要组成部分 1)命令执行来源: 2)利用ansible实现管理的方式 3)Ansile-pl ...

  10. ansible入门02

    1.常用模块 1.1 group模块 添加或删除组             name=             state=:present(添加),absent(删除)             sy ...

随机推荐

  1. 201871030122-牛建疆 实验三 结对项目——《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客链接 作业要求链接 作业要求链接 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming).(2)掌握Github协 ...

  2. springboot项目配置logback日志系统

    记录springboot项目配置logback日志文件管理: logback依赖jar包 SpringBoot项目配置logback理论上需要添加logback-classic依赖jar包: < ...

  3. FastAPI项目实战:"异步"接口测试"平台"

    apiAutoTestWeb 是什么? apiAutoTest接口自动化测试工具的可视化版本,将原本对用例的操作转移到Web页面之上 用什么实现? 接口自动化测试:大体上测试逻辑将采用apiAutoT ...

  4. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作ubuntu16.04-16

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作ubuntu16.04-16 欢迎加QQ群:1026880196 进行交流学习   制作Ope ...

  5. Linux终端更改字体

    1 概述 这里的终端是指通过F1-F6/F2-F7进入的纯命令终端. 修改字体可以通过setfont命令. 2 查看字体 可以通过查找目录consolefonts来确定本地机器上的字体位于哪里: fi ...

  6. qsort 快排函数(C语言)

    qsort 快排函数(C语言) 函数原型 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, ...

  7. 测试工具PerfDog的使用

    使用操作:https://www.jianshu.com/p/cc04c710e643下载地址:https://perfdog.qq.com/

  8. 09- Linux下压缩和解压命令

    压缩和解压命令 gzip命令: 作用: tar命令 作用:对文件或文件夹进行打包和解包的操作. 格式:tar [选项] 文件名 [文件名或路径] 练习题:

  9. 12- APP接口测试以及接口文档的分析

    什么是接口? 为什么要做接口测试? 接口测试流程 需求评审 需求分析 接口用例设计 执行测试用例 bug的定位于追踪 接口文档分析 接口文档分析:开发 内容: 1.接口名称 2.接口地址 3.支持方式 ...

  10. 「跬步千里」详解 Java 内存模型与原子性、可见性、有序性

    文题 "跬步千里" 主要是为了凸显这篇文章的基础性与重要性(狗头),并发编程这块的知识也确实主要围绕着 JMM 和三大性质来展开. 全文脉络如下: 1)为什么要学习并发编程? 2) ...