NH.A.0004——Ansible的20个模块讲解及Playbook剧本剖析

一、概述:
1、Ansible自动化运维工具简介及特点剖析
2、Ansible自动化运维工具原理和有点深入理解
3、Ansible模块企业实战工具及命令演练
4、Ansible自动化运维工具playbook应用实战
5、详解Ansible配置文件和高级性能调优
在这里插入图片描述

linux云计算工程师三大核心职能:
在这里插入图片描述
平台架构组建:负责参与并审核架构设计的合理性,搭建运维平台管理架构,通过开源解决方案,以确保在产品发布之后能高效稳定的运行,保障并不断提升服务的可用性,确保用户数据安全,提升用户体验。
日常运营保障:负责用运维技术或者运维平台确保产品可以高效的发布上线,负责保障产品7*24小时稳定运行,在此期间可以对出现的问题可以快速定位并解决,在日常工作中不断优化系统架构和部署的合理性,以提升系统服务的稳定性,
性能效率优化:用自动化工具或者运维平台提升软件在研发周期中的工程效率,不断优化系统架构,提升部署效率,优化资源利用率,支持产品的不断迭代,需要不断的进行架构的优化调整,以确保整个产品能够在功能不断丰富和复杂的条件下,同时保证高可用性。
Ansible是什么:
Ansible简单说是一个配置管理系统(configuration management system),你只需要可以使用ssh访问你的服务器或者设备就行。它也不同于其他工具,因为他使用推送的方式,而不是puppet等。那样使用拉取安装agent的方式,你可以将代码部署到任意数量的服务器上!
Ansible能做什么:
Ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的公工作;
比如:同时在100台服务器上安装nginx服务,并在安装后启动他们
比如:将某个文件一次性拷贝到100台服务器上
比如:每当有新服务器加入工作环境是,你都要为新服务器部署某个服务,也就是你需要经常重复的完成相同的工作。
这些场景我们都可以使用到Ansible

Ansible架构:
在这里插入图片描述右边绿色是我们被管理的主机(虚拟机、物理机、云主机等)从以上架构图中可以看出Ansible是由主机清单(配置),playbook(配置),以及各模块插件组成,简单的说就是,用户(管理员)通过Ansible的主机清单配置或playbook配置(一组任务)调用Ansible的各种模块及参数来对,清单中的主机进行统一的管理。

Ansible可以工作在linux、BSD、Mac OS、等平台,对Python环境的版本最低要求为Python2.6以上,如果操作系统Python软件版本为2.4,需要升级方可使用Ansible工具;

配置Ansible实战:
1、硬件环境:
Ansible-server端:192.168.1.60
Ansible-client端:192.168.1.70
Ansible-client端:192.168.1.71
Ansible-client端:192.168.1.72

安装方式:
源码安装 ,pip,yum安装;
Centos Red Hat操作系统可以直接基于YUM工具自动安装Ansible,Centos6.x或者Centos7.x安装前,需要安装epel扩展源,代码如下:

2、环境安装:

[root@localhost ~]# yum -y install epel-release   //安装扩展源
[root@localhost ~]# yum install -y ansible
 (11/15): ansible-2.9.14-1.el7.noarch.rpm    
[root@localhost ~]# ansible --version    //查看它的版本
ansible 2.9.14 
python version = 2.7.5 
[root@localhost ~]# ll /etc/ansible/     //可以查看到它的配置文件
-rw-r--r-- 1 root root 19985 10月  8 01:35 ansible.cfg        //此文件为Ansible的主配置文件
-rw-r--r-- 1 root root  1016 10月  8 01:35 hosts              //定义主机组的
drwxr-xr-x 2 root root     6 10月  8 01:35 roles              //定义不同角色

Ansible主机清单:
Ansible远程批量管理,其中执行命令是通过Ad-Hoc来完成,也几点对点单条执行命令,能够快速执行,而且不需要保存执行的命令,默认hosts文件配置主机列表,可以配置分组,可以定义各种ip及规则,hosts列表默认配置。

[root@localhost ansible]# cat hosts |more    //查看Ansible主机清单
[root@localhost ansible]# vim hosts 
# them like this:
[web]                   //定义了一个组名
192.168.1.[70:72]       //定义了组内的主机、 70/71/72主机
[web]                   //或者这样定义也可以
192.168.1.70
192.168.1.71
192.168.1.72

ping模块实战:
Ansible最基础的模块为ping模块,主要用判断客户端是否在线,用ping本身的服务器,范沪指changed ping;

//ansible web -m ping  //使用Ansible对web组内的主机进行ping模块测试
[root@localhost ansible]# ansible web -m ping
Are you sure you want to continue connecting (yes/no)?      //提示没有配置秘钥对,解决方案针对问题一
[root@localhost ~]# ansible web -m ping
192.168.1.70 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.72 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.1.71 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    }, 
    "changed": false, 
    "ping": "pong"
}

command模块:
Ansible command模块为Ansible默认模块,主要用于执行linux命令,可以在直接管理远程服务器,任务操作等。

[root@localhost ~]# ansible web -m command -a "date"
192.168.1.71 | CHANGED | rc=0 >>
Wed Nov  4 14:25:03 UTC 2020
192.168.1.70 | CHANGED | rc=0 >>
Wed Nov  4 14:25:03 UTC 2020
192.168.1.72 | CHANGED | rc=0 >>
Wed Nov  4 14:25:03 UTC 2020
[root@localhost ~]# ansible web -m command -a "ping -c 1 www.baidu.com" 
[root@localhost ~]# ansible web -m command -a "yum install httpd -y"
[root@localhost ~]# ansible web -m command -a "systemctl start httpd.service"
[root@localhost ~]# ansible web -m command -a "ss -tan"     //查看端口
Ansible Playbook应用:
Playbook由一个或多个“paly”组成的列表,play的主要功能Ansible中的Task定义好的角色,指定剧本对应的服务器组;
远程安装nginx服务器脚本;playbook代码如下;
vim nginx_install.yaml
---         //脚本内容;
-host:web
 remote_user:root
 tasks:
 -name:cvc Pcre-devel and Zlib LIB Install.
  yum:name=pcre-devel,pcre,zlib-devel,gcc-c++ state=installed
 -name:cvc Nginx WEB Server Install Process.
 shell:cd /tmp;rm -rf nginx-1.15.0.tar.gz;wget
http://nginx.org/download/nginx-1.15.0.tar.gz;tar xzf nginx-1.15.0.tar.gz;cd nginx-1.15.0;./configure --prefix=/usr/local/nginx;make,make isntall

[root@localhost ~]# ansible-playbook nginx_install.yam1 -vvv   //执行脚本在三台主机上部署nginx

问题一:

[root@localhost ansible]# ansible web -m ping
The authenticity of host '192.168.1.71 (192.168.1.71)' can't be established.
ECDSA key fingerprint is SHA256:+fXgJ0vWlg+shAIaDf+FJKJrFrdECU/NOXu5iVz3fuU.
ECDSA key fingerprint is MD5:bb:c7:9f:3b:69:7e:8c:cc:12:04:23:59:c1:ce:b5:df.
Are you sure you want to continue connecting (yes/no)? The authenticity of host '192.168.1.72 (192.168.1.72)' can't be established.
ECDSA key fingerprint is SHA256:+fXgJ0vWlg+shAIaDf+FJKJrFrdECU/NOXu5iVz3fuU.
ECDSA key fingerprint is MD5:bb:c7:9f:3b:69:7e:8c:cc:12:04:23:59:c1:ce:b5:df.
Are you sure you want to continue connecting (yes/no)? The authenticity of host '192.168.1.70 (192.168.1.70)' can't be established.
ECDSA key fingerprint is SHA256:+fXgJ0vWlg+shAIaDf+FJKJrFrdECU/NOXu5iVz3fuU.
ECDSA key fingerprint is MD5:bb:c7:9f:3b:69:7e:8c:cc:12:04:23:59:c1:ce:b5:df.
Are you sure you want to continue connecting (yes/no)?
错误提示:没有和远程主机配置秘钥对,可以使用ssh-keygen配置秘钥对
解决方案:免秘钥的
[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub   -p 22 [email protected]  //将秘钥对拷贝到目标主机。
[root@localhost ~]# ssh 192.168.1.70        //测试目标配置是否成功
Last login: Sun Nov  1 06:29:29 2020 from 192.168.1.101
[root@cb687a8072d1 ~]# ip addr

猜你喜欢

转载自blog.51cto.com/15005403/2552215