一、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. 类String

    1字符串声明和创建 boolean contains(String str) 判断大字符串中是否包含小字符串 boolean endsWith(String str) 判断字符串是否以某个指定的字符串 ...

  2. window10 本地搭建SVN服务器

    window10本地搭建SVN服务器教程:https://www.cnblogs.com/warmlight/p/11075644.html 我按照这篇教程成功搭建SVN服务器. 有个比较坑的地方是w ...

  3. 【GTS】关于GtsTetheringTestCases模块的几个失败项

    GTS---关于GtsTetheringTestCases模块的几个失败项 1.run gts -m GtsTetheringTestCases -t com.google.android.tethe ...

  4. ODBC Driver Development

    ODBC Driver Development By Vikash Agarwal, May 01, 2002 Open your database system to the world. Vika ...

  5. SQL的“增删改”

    结构语言分类 DDL(数据定义语言)  create  drop  alter   创建删除以及修改数据库,表,存储过程,触发器,索引.... DML(数据操作语言)   insert  delete ...

  6. 极*Java速成教程 - (2)

    Java语言基础 Java的一切都是以对象为基础,对象是生是死的生命周期由虚拟机管理,但是在创生和消亡阶段,需要我们去管理这个类怎么生,怎么死.我们也以此为契机,慢慢接触Java的诸多细节和具体实现. ...

  7. Count on a tree SPOJ 10628 主席树+LCA(树链剖分实现)(两种存图方式)

    Count on a tree SPOJ 10628 主席树+LCA(树链剖分实现)(两种存图方式) 题外话,这是我第40篇随笔,纪念一下.<( ̄︶ ̄)↗[GO!] 题意 是说有棵树,每个节点上 ...

  8. Good number(3进制)

    https://codeforces.com/problemset/problem/1249/C2 C2. Good Numbers (hard version) time limit per tes ...

  9. 2019牛客暑期多校训练营(第五场) - C - generator 2 - BSGS

    https://ac.nowcoder.com/acm/contest/885/C 这个跟平时那种求离散对数的bsgs不一样,虽然可以转化成离散对数来做不过会T掉.展开递推式然后合并具有a的项,发现其 ...

  10. Python 函数知识总汇

    函数在一个程序起到很重要的作用,那么如何学好函数呢,那函数有什么内容的,总结一下函数的知识归类 1,函数定义 def  函数名(): print("...") 2,函数返回值 re ...