一、ansible软件

1、介绍

①ansible是一个基于Python开发的自动化运维工具

②其功能实现基于SSH远程连接服务

③ansible可以实现批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能

http://docs.ansible.com/ 官方资料

2、ansible特点

①不需要安装客户端,基于系统自带的sshd服务,sshd就相当于ansible的客户端

②不需服务端

③需要依靠大量的模块实现批量管理功能

④配置文件/etc/ansible/ansible.cfg

3、ansible命令语法格式

4、常用参数

命令参数

参数说明

-m

-m后边是模块的名字,默认模块为command

-a

-a,后面是要执行的命令;也可以写一个ip,针对一台服务器来执行命令

-C,--check

不做任何改变,只是尝试预言一些可能出现的改变,执行前检查

--syntax-check

执行语法检查在剧本,但不执行剧本

5、常用模块

常用模块

模块说明

command *****

执行命令模块,ansible命令执行默认模块

shell *****

执行shell脚本模块

script *****

把脚本发到客户端,然后执行,执行脚本命令在远端服务器上

copy *****

把本地文件发送到远端

file

设定文件属性模块

service

系统服务管理模块

cron

定时任务管理模块

yum

yum软件包安装管理模块

synchronize

使用rsync同步文件模块

6、ansible查看帮助信息

ansible-doc –l       #列出所有的模块
ansible-doc -s copy #查看指定模块用法

二、ansible实战部署

1、利用SSH批量分发公钥

[root@m01 scripts]# cat piliang.sh
#!/bin/bash
rm -f /root/.ssh/*
ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" &>/dev/null
for ip in 8 31 41
do
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip" >/dev/null 2>&1
echo "172.16.1.$ip ok"
done

2、ansible软件安装

yum install ansible -y           #管理机m01安装
yum install libselinux-python -y #被管理机安装

3、模块使用测试

①command

[root@m01 scripts]# ansible oldboy -m command -a "hostname" #oldboy为主机组名称,也可以指定某一台服务器
[root@m01 scripts]# ansible 172.16.1.41 -a "hostname"

②copy

[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/hosts"
ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/a/b/c/d/e/f/hosts" #目录不存在自动创建目录

③copy扩展

ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/host owner=oldboy group=oldboy mode=600" #更改文件权限属性

④backup

[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/hosts backup=yes"

⑤shell

ansible oldboy -m copy -a "src=/server/scripts/yum.sh dest=/server/scripys/" #shell模块分发脚本时到被管理机然后再执行
ansible oldboy -m copy -a "src=/server/scripts/yum.sh dest=/server/scripts/ mode=655" #直接加执行权限

⑥script

ansible oldboy -m script -a "/server/scripts/yum.sh" #script模块直接远程执行脚本,无需提前复制到被管理机

⑦yum

ansible oldboy -m yum -a "name=htop state=installed"

⑧cron

添加定时任务

ansible 172.16.1.31 -m cron -a 'name="install ser" minute=0 hour=0 job="/server/scripts/yum.sh &>/dev/null"'

删除定时任务

ansible 172.16.1.31 -m cron -a 'name="install ser" minute=0 hour=0 job="/bin/sh /server/scripts/yum.sh &>/dev/null" state=absent'

⑨mount模块

选项:
fstype:挂载文件的类型(常见的有ext3,ext4,xfs)
name:挂载点
opts:mount命令挂载的参数
passno
src:要挂载的文件
state:mounted
present:只处理fstab中的配置
absent:删除挂载点
mounted:自动创建挂载点并挂载之
umounted:卸载
例子:
- name: Mount DVD read-only
mount:
path: /mnt/dvd
src: /dev/sr0
fstype: iso9660
opts: ro
state: present

⑩service模块

ansible oldboy -m service -a "name=crond state=stop enabled=no" #此处name是服务名,表示将crond停止,取消开机自启动

file模块

ansible oldboy -m file -a "src=/etc/hosts dest=/tmp/hosts state=link #创建软链接

测试所有主机的连通性

[root@m01 ~]# ansible all -m ping

被管理机不需要分发公钥文件,实现ansible管理

[root@oldboy.com ~]# cat /etc/ansible/hosts
[test] #主机组名称
172.16.1.7 ansible_ssh_user=root ansible_ssh_pass=
172.16.1.31 ansible_ssh_user=root ansible_ssh_pass=
172.16.1.41 ansible_ssh_user=root ansible_ssh_pass=

三、ansible剧本

1、剧本编写格式

# play-book #注释
- hosts:空格all #指定演员信息,这里all指处理所有服务器,也可以指定某一台,接ip地址
空格空格tasks:
空格空格空格空格- command:空格echo hello oldboy linux

2、多主机单任务编写方式

[root@m01 ansible-playbook]# cat cron.yml
# command play-book
- hosts: oldboy
tasks:
- cron: name=oldboy01 minute= hour= job='/bin/sh /server/scripts/yum.sh /dev/null'

3、 多主机多任务编写方式

[root@m01 ansible-playbook]# cat cron.yml
# command play-book
- hosts: oldboy
tasks:
- name: cron task
cron: name=oldboy01 minute= hour= job='/bin/sh /server/scripts/yum.sh /dev/null'
- name: shell task
shell: echo "$HOSTNAME" >>/tmp/hostname.txt

4、不同主机做不同的任务

# command play-book
- hosts: rsync
tasks:
- name: edit rsyncd.conf
copy: src=/etc/ansible/conf/rsync_conf/rsyncd.conf dest=/etc/rsyncd.conf
- name: create user
shell: useradd -s /sbin/nologin -M rsync
- hosts: nfs
tasks:
- name: yum install nfs-utils rpcbind
shell: yum install -y nfs-utils rpcbind
- name: edit exports
copy: src=/etc/ansible/conf/nfs_conf/exports dest=/etc/exports

四、利用ansible安装rsync服务器

[root@m01 ansible-playbook]# cat rsync.yml
#rsync server play-book
- hosts: 172.16.1.41
tasks:
- name: .install rsync
yum: name=rsync state=installed
- name: .edit rsyncd.conf
copy: src=/etc/ansible/conf/rsync/rsyncd.conf dest=/etc/
- name: .create rsync user
shell: userdel -r rsync && useradd rsync -s /sbin/nologin -M
- name: .create auth file
copy: src=/etc/ansible/conf/rsync/rsync.password dest=/etc/ mode=
- name: .create backup dir
file: dest=/backup state=directory owner=rsync group=rsync
- name: .start rsync server
shell: rsync --daemon

五、利用ansible安装nfs服务器

[root@m01 ansible-playbook]# cat nfs.yml
#nfs server play-book
- hosts: 172.16.1.31
tasks:
- name: .install rpcbind
yum: name=rpcbind state=installed
- name: .install nfs-utils
yum: name=nfs-utils state=installed
- name: .edit nfs config exports
copy: src=/etc/ansible/conf/nfs/exports dest=/etc/
- name: .create share dir
shell: mkdir /data -p && chown -R nfsnobody.nfsnobody /data
- name: .start rpcbind
shell: /etc/init.d/rpcbind start
- name: .start nfs
shell: /etc/init.d/nfs start

六、利用ansible配置sersync数据同步

[root@m01 ansible-playbook]# cat sersync.yml
#sersync server play-book
- hosts: 172.16.1.31
tasks:
- name: .send sersync soft
copy: src=/etc/ansible/conf/sersync/sersync_installdir_64bit.zip dest=/server/tools/
- name: .exec sersync scripts
script: /server/scripts/sersync.sh
- name: .send sersync conf file
copy: src=/etc/ansible/conf/sersync/confxml.xml dest=/usr/local/sersync/conf/
- name: .start sersync server
shell: /usr/local/sersync/bin/sersync -dro /usr/local/sersync/conf/confxml.xml

linux运维、架构之路-ansible批量管理的更多相关文章

  1. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...

  2. 运维自动化之1 - ansible 批量主机管理

    2000 - 2016 年,维护的小型机.linux刚开始的2台增加到上千台,手工检查.日常版本升级需要管理太多设备,必须通过运维自动化实现 特别是版本升级,需要到同类机器部署代码.起停设备,必须在一 ...

  3. 最适合初学者的Linux运维学习教程2018版

    Linux运维工程师是一个新颖岗位,现在非常吃香,目前从行业的角度分析,随着国内软件行业不断发展壮大,越来越多复杂系统应运而生,为了保证系统稳定运行,必须要有足够多的Linux运维工程师.维护是软件生 ...

  4. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  5. Linux(11):期中架构(3)--- SSH远程管理服务 & ansible 批量管理服务

    SSH远程管理服务 1. 远程管理服务知识介绍 # 1.1 SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Worki ...

  6. Linux 运维入门到跑路书单推荐

    一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...

  7. Linux运维企业架构实战系列

    Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...

  8. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...

  9. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

随机推荐

  1. 测开之路一百零六:bootstrap布局

    可以在html的head里面加一些说明 <meta http-equiv="X-UA-Compatible" content="IE=edge">& ...

  2. Mac 设置git命令tab自动补全(亲测有效)

    转载 :https://blog.csdn.net/tiancaijyy/article/details/84888868 注意: 获取git-completion.bash  要对应自己的git版本 ...

  3. 剑指offer--day06

    1.1 题目:调整数组顺序使奇数位语偶数前面:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的 ...

  4. 使用 Spring HATEOAS 开发 REST 服务

    使用 Spring HATEOAS 开发 REST 服务 学习博客:https://www.ibm.com/developerworks/cn/java/j-lo-SpringHATEOAS/ htt ...

  5. java Map与Bean相互转化

    import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector ...

  6. [19/05/13-星期一] HTML_head标签 和 body标签_文本标签

    一.概念 概念:超文本标记语言 作用:需要将Java在后台根据用户的请求处理结果在浏览器显示给用户.数据已经过来了,但是显示可能比较凌乱,所以html应用而生,就像写作文要加标点看着舒服. 在浏览器中 ...

  7. Redis基础都不会,好意思出去面试?

    作者:张君鸿 juejin.im/post/5d078cd6f265da1b8466e62c Redis的数据结构 Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据 ...

  8. [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路)

    [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路) 题面 有n个空心物品,每个物品有外部体积\(out_i\)和内部体积\(in_i\),如果\(in_i& ...

  9. JS相比TS的缺点(或TS的优点)

    JS只有在运行时,才会抛出错误, JS里有任何的拼写错误 都不会提示错误 JS运行时报的错,指向也未必是错误的源头,也就是说:A类里因为书写代码有误,会造成运行时其他的类报错如B JS无法做到不同pa ...

  10. R语言基础篇——数据读写

    1.键盘输入数据(适合小数据集) #创建一个指定模式但不含数据的变量 mydata<-data.frame(age=numeric(0),gender=character(0),weight=n ...