ansible批量部署(一)
自动化运维工具
shell脚本/Ansible(无客户端)/Saltstack(master-minion)
回顾服务器部署的流程:
买云主机->环境部署->软件部署->配置部署->启动服务->测试->加入集群
1.Ansible基本概述
ansible是一个配置管理系统configuration management system你只需要可以使用ssh访问你的服务器或设备就行
Ansible能做什么
可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
Ansible软件特点
1.ansible不需要单独安装客户端,SSH相当于ansible客户端
2.ansible不需要启动任何服务,仅需安装对应工具即可
3.ansible依赖大量的python模块实现批量管理
4.ansible配置文件/etc/ansible/ansible.cfg
Ansible基础架构

1.连接插件(connector plugins)用于连接主机 用来连接被管理端
2.核心模块(core modules)连接主机实现操作,它依赖于具体的模块来做具体的事情
3.自定义模块(custom modules)根据自己的需求编写具体的模块
4.插件(plugins)完成模块功能的补充
5.剧本(playbooks) ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6.主机清单(host inventory)定义ansible需要操作主机的范围
最重要的一点是ansible 事模块化的 它所有的操作都依赖于模块
2.Ansible配置
环境部署
m01 172.16.1.71 ansible管理端
backup 172.16.1.51 ansible受控端
nfs 172.16.1.41 ansible受控端
web01 172.16.1.7 ansible受控端
).安装ansible
一定先部署好epel源
[root@m01 ~]# yum install ansible
查看版本
[root@m01 ~]# ansible --version
ansible 2.9. ).ssh部署公钥
[root@m01 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -C anlione
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.51
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7 ).配置ansible主机清单
主机清单配置文件/etc/ansible/hosts
[root@m01 ~]# vim /etc/ansible/hosts
....
[oldboy]
172.16.1.7
172.16.1.51
172.16.1.41 )验证ansible
[root@m01 ~]# ansible oldboy -m ping
172.16.1.7 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
172.16.1.51 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
172.16.1.41 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
} [root@m01 ~]# ansible oldboy -m command -a "hostname"
172.16.1.41 | CHANGED | rc= >>
nfs 172.16.1.51 | CHANGED | rc= >>
backup 172.16.1.7 | CHANGED | rc= >>
web01
3.Ansible清单管理
inventory文件通常用于定义管理主机的认证信息,例如ssh登录用户名、密码以及key相关信息。如何配置inventory文件
主机
1.支持主机名通配以及正则表达式,例如web[1:3].oldboy.com
2.支持基于非标准的ssh端口,例如web01.oldboy.com:6666
3.支持指定变量,可对个别主机特别配置,如登录用户,密码等
主机组
1.支持嵌套组,例如[oldboy:children],那么在oldboy模块下面的组都会被game所包含
2.支持指定变量,例如[oldboy:vars]在下面指定变量
//指定主机组
[backup]
172.16.1.51
[nfs]
172.16.1.41
[web]
172.16.1.7
[oldboy:children]
nfs
backup
web
验证:
ansible oldboy -m ping
ansible nfs -m ping
ansible backup -m ping //指定变量
[oldboy]
172.16.1.7
172.16.1.51
172.16.1.41
[oldboy:vars]
ansible_ssh_pass=
Ansible内置变量

4.Ansible常用模块
安装软件包
修改配置文件
创建程序用户组
创建程序用户组
创建目录,并修改所属和权限
启动服务
挂载
测试
在ansible中是指需要快速执行一条命令,并且不需要保存的命令,对于复杂的命令为playbook
Ansible注意事项->提示颜色信息说明
翔黄色:对远程节点进行相应修改
帽子绿:对远程节点不进行相应修改,或者只对远程节点信息进行查看
深红色:操作执行命令有异常
浅紫色:表示对命令执行发出警告信息(可能存在的问题,给你一下建议)
1.command模块和shell模块
# 默认模块,执行命令
[root@m01 ~]# ansible oldboy -a "hostname"
# 如果需要一些管道操作,则使用shell
[root@m01 ~]# ansible oldboy -m shell -a "df -h | grep /$" -f # -f =forks /etc/ansible/ansible.cfg #结果返回的数量
注意:command和shell模块的区别:
command只能调用一条指令
shell可以使用管道
不支持别名
举例:统一创建用户oldboy,并修改密码为123
[root@m01 ~]# ansible oldboy -m shell -a "useradd oldboy"
[root@m01 ~]# ansible oldboy -m command -a "echo 123 | passwd --stdin oldboy"
172.16.1.41 | CHANGED | rc= >>
| passwd --stdin oldboy 172.16.1.51 | CHANGED | rc= >>
| passwd --stdin oldboy 172.16.1.7 | CHANGED | rc= >>
| passwd --stdin oldboy [root@m01 ~]# ansible oldboy -m shell -a "echo 123 | passwd --stdin oldboy"
2.yum模块
[root@m01 ~]# ansible web -m yum -a "name=httpd state=installed"
name ---指定要安装的软件包名称,如果有多个,用","隔开
state ---指定使用yum的方法
installed,present --安装软件包
removed,absent --移除软件包
latest --安装最新软件包
3.copy模块
# 推送文件模块
[root@m01 ~]# ansible oldboy -m copy -a "src=/tmp/test dest=/etc/hosts" # 在推送覆盖远程端文件前,对远端已有文件进行备份,按照时间信息备份
[root@m01 ~]# ansible oldboy -m copy -a "src=/tmp/test dest=/etc/hosts backup=yes" # 直接向远端文件内写入数据信息,并且会覆盖远端文件内原有数据信息
[root@m01 ~]# ansible oldboy -m copy -a "content='oldboy' dest=/tmp/oldboy" src ---推送数据的源文件信息
dest ---推送数据的目标路径
backup ---对推送传输过去的文件,进行备份
content ---直接批量在管理端文件中添加内容
group ---将本地文件推送到远端,指定文件属组信息
owner ---将本地文件推送到远端,指定文件属主信息
mode ---将本地文件推送到远端,指定文件权限信息
案例1:批量推送hosts文件,并备份
cat: /etc/host: 没有那个文件或目录
[root@m01 ~]# cat /etc/hosts
172.16.1.7 web01
172.16.1.41 nfs
172.16.1.51 backup
172.16.1.71 m01 [root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/etc/hosts backup=yes"
案例2:添加rsync认证文件和rsync客户端密码
添加rsync服务端认证文件
[root@m01 ~]# ansible backup -m copy -a "content='rsync_backup:1' dest=/etc/rsync.passwd group=root owner=root mode=600"
验证:
[root@m01 ~]# ansible backup -m shell -a "ls -l /etc/rsync.passwd"
172.16.1.51 | CHANGED | rc= >>
-rw------- root root 1月 : /etc/rsync.passwd [root@m01 ~]# ansible backup -m shell -a "cat /etc/rsync.passwd"
172.16.1.51 | CHANGED | rc= >>
rsync_backup: 添加rsync客户端密码文件
[root@m01 ~]# ansible oldboy -m copy -a "content='1' dest=/etc/rsync.pass group=root owner=root mode=600"
验证:
[root@m01 ~]# ansible oldboy -m shell -a "cat /etc/rsync.pass"
172.16.1.7 | CHANGED | rc= >> [root@m01 ~]# ansible oldboy -m shell -a "ls -l /etc/rsync.pass"
172.16.1.41 | CHANGED | rc= >>
-rw------- root root 1月 : /etc/rsync.pass
4.service模块
[root@m01 ~]# ansible oldboy -m service -a "name=crond state=started enabled=yes" name # 定义要启动服务的名称
state # 指定服务状态时停止或是允许,停止和运行指令要写过去时
started # 启动
stopped # 停止
restarted # 重启
reloaded # 重载
enabled # 是否让服务开启自启动
案例1:启动web01的httpd服务,并添加一个首页文件,通过浏览器可以访问
[root@m01 ~]# ansible web -m service -a "name=httpd state=started enabled=yes"
[root@m01 ~]# ansible web -m copy -a "content='11111' dest=/var/www/html/index.html"
ansible批量部署(一)的更多相关文章
- Ansible批量部署工具
Ansible:自动化运维工具 你需要在一台机器上yum install 一个包,这时候有一个需求,比如现在有5台机同时需要装apache这个包,那么100台呢,ssh上去就太慢了,这时候就借助到了a ...
- 利用ansible批量部署zabbix-agent
应用环境:Linux运维工作少不了一个好的监控,zabbix就是目前比较好的一款开源监控软件. 监控类型多种多样,如果不介意或者系统支持安装,那么agent方式是首选. 当主机数量较多时,可以利用相关 ...
- ansible 批量部署准备工作
Ansible:自动化运维工具,基于Python开发 功能{ 批量系统配置 批量程序部署 批量运行命令等等 } 准备工作: 一.操作主机安装epel源 和 ansible工具 yum -y insta ...
- ansible批量部署mysql
1.1 将mysql软件包同步到客户端服务器,做安装前期准备 Ps:mysql安装包线拖到ansible服务端的/ansible/roles/mysql/files目录下 vim /ansible/r ...
- Ansible批量部署工具的安装
1.系统安装gcc,以及python2.6以上(2.6.8): 第一种比较简单的安装方法: 1)直接yum install -y ansible; 2)然后更改配置,/etc/ansible/ansi ...
- ansible批量部署nginx
1.1 将nginx的安装包,和安装脚本copy到客户端,并安装脚本 vim /ansible/roles/nginx/tasks/main.yml - name: copy nginx_tar_gz ...
- ansible批量部署tomcat
1.1 构建目录结构 此操作是安装nginx+mysql+tomcat+db的目录结构,可以参考一下,不错~ mkdir -p /ansible/roles/{nginx,mysql,tomcat,d ...
- ansible批量部署模块(二)
回顾:Ansible: 无需客户端程序 只要有SSH 模块化 ansible帮助工具ansible-doc 模块名ansible-doc 模块名 -s 列出该模块的所有选项ansible-doc -l ...
- Jenkins +svn +maven +tomcat+ ansible 自动化批量部署
Jenkins +svn +maven +tomcat+ ansible 自动化批量部署 一.部署svn yum install subversion 先创建目录 mkdir /home/svn 创建 ...
随机推荐
- 开源Git代码托管平台
开源Git代码托管平台主要参考有以下4个: 1.GitHub 很多开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费.GitHub地址:https://github ...
- java课程之团队开发冲刺阶段2.9
总结昨天进度: 已经完成查询课程信息任务 遇到的困难: 已经全部解决 今天的任务: 修改APP图标 当日总结: manifest中管理着APP的基本信息资料,所以是在manifest文件中修改APP的 ...
- 文献阅读报告 - 3DOF Pedestrian Trajectory Prediction
文献 Sun L , Yan Z , Mellado S M , et al. 3DOF Pedestrian Trajectory Prediction Learned from Long-Term ...
- Dubbo与Zookeeper 简介
转自http://blog.csdn.net/congcong68/article/details/41113239 首先说一下Dubbo解决什么问题: (1)当服务越来越多时,服务Url配置管理变得 ...
- Swift4 - GCD的使用
Swift4 - GCD的使用 2018年03月30日 17:33:27 Longshihua 阅读数:1165 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csd ...
- Vue-router的介绍
1.路由基础介绍 (1)什么是前端路由: 路由是根据不同的URL地址展示不同的内容或页面. 前端路由就是把不同路由对应不同的内容或页面的任务交给前端来做.之前是通过服务端根据URL的不同返回不同的页面 ...
- hdu1232 城镇间修路(并查集)
问题是这样的: Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇 ...
- LGOJ4299 首都
这题是 \(LCT\) 维护子树信息中的 \(LCT\) 维护重心 Description link 题意概述:给定一个森林,要求支持以下操作 1.链接两个点 2.求一个点所在树的重心 3.求所有重心 ...
- Java 知识点(一)
博主对 Java知识点的整理基于 c语言,整理内容为 Java的重点及与 c语言的差异点或编程通要知识点.水平有限,欢迎指正.(参考书籍<Java 核心技术 卷Ⅰ>) Java 的类名:名 ...
- Linux-IO多路复用select函数实践
#include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/time.h ...