2019-04-23ansible知识

1,ansible介绍

ssh密钥认证+脚本批量管理,特点:简单,实用

但是看起来比较low,需要人工写脚本,类似于实时复制的inotify工具

2013年以前这种方式很普遍

MySQL高可用MHA集群,要求所有的机器互相密钥认证,大数据集群也需要


2,批量管理工具历史

SSH+脚本 CFEngine    Puppte    saltstack          ansible

2013年                         10-13年        14-17年      (python)


3,为什么使用ansible?

简单,方便,容易学习,功能同样强大

ansible有配置文件,可以多线程直接实现,不需要写脚本,类似实时复制的sersync


4,什么是ansible

Ansible是一个用来远程管理服务器的工具软件

Ansible是一个用来批量部署远程主机上服务的工具,这里远程主机(Remote  Host),是指任何可以通过SSH登录的主机,所以它既可以是远程虚拟机或物理机,也可以是本地主机

Ansible通过SSH协议实现管理节点与远程节点之间的通信。理论上来说,只要能通过SSH登录到远程主机来完成的操作,都可以通过Ansible实现批量自动化操作。涉及管理操作:复制文件、安装服务、服务启动停止管理、配置管理等等。


5,为什么要用批量管理工具运维

提高效率,服务器很多的情况下,例如阿里几十万台服务器


6,Ansible特点

Ansible基于Python语言实现,由Paramiko和PyYAML两个关键模块构建

Shell、Python是Linux运维学员必会的两门语言


1,安装部署过程特别简单,学习曲线很平坦

2,不需要单独安装客户端,只是利用现有的SSHD服务(协议)即可

3,不需要服务端(no  server)

4,ansible playbook,采用yaml配置,提前编排自动化任务

5,ansible功能模块较多,对于自动化的场景支持丰富


7,Ansible架构介绍

1、连接插件connectior plugins用于连接主机 用来连接被管理端

2、核心模块 core modules 连接主机实现操作, 它依赖于具体的模块来做具体的事情

3、自定义模块 custom modules,根据自己的需求编写具体的模块

4、插件 plugins,完成模块功能的补充

5、剧本 playbooks,ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行

6、主机清单 inventor,定义ansible需要操作主机的范围

最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块

(懂Python可以二次开发)


8,ansible实践环境准备

61(BOSS)======>>31(nfs)

61  (BOSS)  ======>>41(backup)


9,安装ansible

BOSS管理机操作:

[root@BOSS ~]# yum install ansible -y       

               ===============>>此处省略

[root@BOSS ~]# rpm -qa |grep libselinux-python

libselinux-python-2.5-12.el7.x86_64        =======>>正确

其他所有被管理的机器:

[root@NFS ~]# rpm -qa |grep libselinux-python

libselinux-python-2.5-14.1.el7.x86_64

[root@NFS ~]# yum install libselinux-python -y

=================>>此处省略

[root@BACKUP ~]# rpm -qa |grep libselinux-python

libselinux-python-2.5-14.1.el7.x86_64

[root@BACKUP ~]# yum install libselinux-python -y

       =======================>>此处省略


10,主机列表配置

ssh列表实现方法:

for n in 7 8

do

echo 172.16.1.$n

done

/etc/ansible/hosts主机资产清单文件,用于定义被管理主机的认证信息

例如ssh登录用户名、密码以及key相关信息。如何配置Inventory文件

1.主机支持主机名通配以及正则表达式,例如web[1:3].oldboy.com代表三台主机

2.主机支持基于非标准的ssh端口,例如web1.oldboyedu.com:6666

3.主机支持指定变量,可对个别主机的特殊配置,如登陆用户\密码

4.主机组支持指定变量[group_name:vars],同时支持嵌套组[game:children]

实践:

[root@BOSS ~]# cp /etc/ansible/hosts{,.ori}

cp: overwrite '/etc/ansible/hosts.ori'? y

[root@BOSS ~]# cat >/etc/ansible/hosts<<EOF

> [oldboy]

> 172.16.1.31

> 172.16.1.41

>

> [oldgirl]

> 172.16.1.31

> 172.16.1.41

> 172.16.1.51

> EOF

检查:

[root@BOSS ~]# cat /etc/ansible/hosts

[oldboy]

172.16.1.31

172.16.1.41

[oldgirl]

172.16.1.31

172.16.1.41

172.16.1.51

====================>>正确

/etc/ansible/ansible.cfg ###########ansible的配置文件


11,小试牛刀

[root@BOSS ~]# ansible oldboy -m command -a "free -m"  =============>>报错

ansible oldboy -m command -a "free -m"   ######要想成功,先解决yes/no的问题

1,ssh连接一遍

2,ssh -o 参数

上述命令就是sshpass的封装

================================================================

修改Host增加用户和密码:

[root@BOSS ~]# vim /etc/ansible/hosts

  1 [oldboy]

  2 172.16.1.31

  3 172.16.1.41

  4

  5 [oldgirl]

  6 172.16.1.31

  7 172.16.1.41

  8 172.16.1.51

  9                                                                                   

10 [oldboy_pass]

11 172.16.1.31 ansible_ssh_user=root ansible_ssh_pass=123456

12 172.16.1.41 ansible_ssh_user=root ansible_ssh_pass=123456

==========================================================

测试:

[root@BOSS ~]# ansible oldboy_pass -m command -a "free -m"

172.16.1.31 | CHANGED | rc=0 >>

              total        used        free      shared  buff/cache  available

Mem:            974          77        672          7        225        734

Swap:          1999          0        1999

172.16.1.41 | CHANGED | rc=0 >>

              total        used        free      shared  buff/cache  available

Mem:            974          72        678          7        223        740

Swap:          1999          0        1999

================================================>>>成功

结论:使用SSH连接

密码认证  host里主机后面加密码      Paramiko模块   重点:

密钥认证:提前发公钥,才能使用ansible,SSHPSAA工具

http://docs.ansible.com/ansible/latest/intro_inventory.html#list-of-behavioral-inventory-parameters

====================================================================

特殊端口:

[oldboy]

172.16.1.7  ansible_port=52113  ansible_user=root ansible_ssh_pass=123456

172.16.1.8  ansible_port=52113  ansible_user=root ansible_ssh_pass=123456

==================================================================


12,基于SSH秘钥认证的实践

秘钥分发脚本:

[root@BOSS ~]# vim yy.sh

 #!/bin/bash

#QQ: 2221269920

 #Private web site: www.xiakexing.vip

 #Date﻾Z2019-04-23

 #Author: longjie

 ssh-keygen -f ~/.ssh/id_rsa  -P '' -q

 for ip in 7 8 41 31

 do

 sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.

    16.1.$ip

 done  

==============================================>>>脚本内容


11,ansible命令参数

-m MODULE_NAME, 模块名字,默认command

-a MODULE_ARGS, 模块参数

-f FORKS     并发进程数,默认5个。

-i INVENTORY(default=/etc/ansible/hosts)指定主机列表文件

=============================================================

ansible

ansible-doc

ansible-playbook

ansible-galaxy

=======================================================


12,ansible模块查看和帮助

查找模块

ansible-doc -l      ######模块就Linux命令了

查看某个模块的具体参数帮助

ansible-doc -s command  #Linux命令参数

=====================================================

12.1 command模块 *****

1)功能说明:

command  Executes a command on a remote node

功能说明:执行一个命令在远程节点上

操作实践:

ansible oldboy -m command -a "free -m"

ansible oldboy -m command -a "df -h"

ansible oldboy -m command -a "ls /root"

ansible oldboy -m command -a "cat redhat-release"

ansible oldboy -m command -a "cat /etc/redhat-release"

最通用的功能

===========================================================

脚本:

#!/bin/bash

#QQ: 2221269920

#Private web site: www.xiakexing.vip

#Date﻾Z2019-04-23

#Author: longjie

for n in 31 41

do                                 

  echo "=====172.16.1.$n======"

  ssh 172.16.1.$n "$1"

done

============================================

执行:

[root@BOSS ~]# sh pp.sh "cat /etc/redhat-release"

=====172.16.1.31======

CentOS Linux release 7.5.1804 (Core)

=====172.16.1.41======

CentOS Linux release 7.5.1804 (Core)

===============================>>>成功


参数信息:

参数:chdir=/tmp配置相当于cd /tmp

[root@m01 ~]# ansible oldboy  -m command -a "pwd chdir=/etc"

ansible oldboy  -m shell -a "cd /etc/;pwd"

参数:creates=/etc  相当于条件测试  [ -e /etc ]||pwd 和下面removes相反

[root@m01 ~]# ansible oldboy  -m command -a "pwd creates=/etc"

参数:removes=/root 相当于条件测试 [ -e /root ]&&ls /root

ansible oldboy  -m command -a "ls /root removes=/root"

ansible oldboy  -m shell -a "[ -d /etc ]||pwd"

[root@m01 ~]# ansible oldboy  -m command -a "cat /etc/hosts removes=/etc/hosts"

参数:warn=False 忽略警告

[root@m01 ~]# ansible oldboy  -m command -a "chmod 000 /etc/hosts warn=False"























©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容