Ansible自动化配置详解

第1章 Ansible基本概述

1.1 ansible是一个配置管理系统configuration management system,

你只需要可以使用ssh访问你的服务器或设备就行。

1.安装软件
2.配置服务

1.2 ansible能做什么

ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
 比如:同时在100台服务器上安装nfs服务,并在安装后启动服务。
 比如:将某个文件一次性拷贝到100台服务器上。
 比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。
 这些场景中我们都可以使用到ansible。

1.3 ansible软件特点

1.ansible不需要单独安装客户端,SSH相当于ansible客户端。
2.ansible不需要启动任何服务,仅需安装对应工具即可。
3.ansible依赖大量的Python模块来实现批量管理。
4.ansible配置文件/etc/ansible/ansible.cfg
实现从管理机m01到其他机器的密钥认证

第2章 Ansible安装配置

2.1 ansible借助公钥批量管理

创建及利用非交换式工具实现批量分发公钥与批量管理服务器

[root@m01 ~]# ssh-keygen -t rsa
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
[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.7

2.2 安装ansible

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

2.3 配置ansible

[root@m01 ~]# vim /etc/ansible/hosts
[zeq]
172.16.1.31
172.16.1.41

2.4 验证ansible

2.4.1 ansible是通过ssh端口探测通信

[root@m01 ~]# ansible zeq -m ping
172.16.1.7 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
172.16.1.31 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
172.16.1.41 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

2.4.2 批量执行命令

[root@m01 ~]# ansible zeq -m command -a "df -h"

2.4.3 如果没有给对应的主机下发公钥,可以使用密码的方式进行添加

172.16.1.41 ansible_ssh_user='root' ansible_ssh_pass='1' ansible_ssh_port='22'

2.5 定义主机清单

[root@m01 ~]# vim /etc/ansible/hosts
[web]
172.16.1.7

[nfs]
172.16.1.31

[backup]
172.16.1.41

[zeq:children]
web
nfs
backup

2.5.1 测试

[root@m01 ~]# ansible web --list-hosts          #web
  hosts (1):
    172.16.1.7
[root@m01 ~]# ansible nfs --list-hosts          #nfs
  hosts (1):
    172.16.1.31
[root@m01 ~]# ansible backup --list-hosts      #rsync
  hosts (1):
    172.16.1.41
[root@m01 ~]# ansible zeq --list-hosts        #集中所有的小组,用于执行一些基础的配置
  hosts (3):
    172.16.1.31
    172.16.1.41
    172.16.1.7

第3章 ansible命令语法格式及模块

1.command 执行命令
2.shell 执行命令
3.yum 安装软件模块
4.copy 配置模块
5.service 启动服务模块
6.user 用户管理
7.file 创建目录,创建文件,往文件写内容
8.cron 定时任务
9.mount 挂载

3.1 command命令模块

默认模块, 执行命令

[root@m01 ~]# ansible zeq  -a "hostname"

3.2 如果需要一些管道操作,则使用shell

[root@m01 ~]# ansible zeq -m shell -a "ifconfig|grep eth0" -f 50
-f =forks /etc/ansible/ansible.cfg #结果返回的数量


 

3.3 yum安装模块

参数

 

说明

 

name

 

指定要安装的软件包名称

 

state

 

指定使用yum的方法

 

installed,present

 

安装软件包

 

removed,absent

 

移除软件包

 

latest

 

安装最新软件包

 

3.3.1 推送脚本文件至远程,远程执行脚本文件

[root@m01 ~]# ansible zeq -m yum -a "name=httpd state=installed"

3.4 copy模块

参数

 

说明

 

src

 

推送数据的源文件信息

 

dest

 

推送数据的目标路径

 

backup

 

对推送传输过去的文件,进行备份

 

content

 

直接批量在被管理端文件中添加内容

 

group

 

将本地文件推送到远端,指定文件属组信息

 

owner

 

将本地文件推送到远端,指定文件属主信息

 

mode

 

将本地文件推送到远端,指定文件权限信息

 

3.4.1 推送文件模块

[root@m01 ~]# ansible zeq -m copy -a "src=/etc/hosts dest=/tmp/test.txt owner=www group=www mode=0600"

3.4.2 在推送覆盖远程端文件前,对远端已有文件进行备份,按照时间信息备份

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

3.4.3 直接向远端文件内写入数据信息,并且会覆盖远端文件内原有数据信息

[root@m01 ~]# ansible zeq -m copy -a "content='bgx' dest=/tmp/zeq"

3.5 service服务模块

参数

 

说明

 

name

 

定义要启动服务的名称

 

state

 

指定服务状态是停止或是运行

 

started

 

启动

 

stopped

 

停止

 

restarted

 

重启

 

reloaded

 

重载

 

enabled

 

是否让服务开启自启动

 

[root@m01 ~]# ansible zeq -m service -a "name=crond state=stopped enabled=yes"

3.6 user模块

[root@m01 ~]# echo "bgx"| openssl passwd -1 -stdin

$1$1KmeCnsK$HGnBE86F/XkXufL.n6sEb.

[root@m01 ~]# ansible zeq -m user -a 'name=xlw password="$1$1KmeCnsK$HGnBE86F/XkXufL.n6sEb."'

3.7 file配置模块

参数

 

说明

 

path

 

指定远程主机目录或文件信息

 

recurse

 

递归授权

 

directory

 

在远端创建目录

 

touch

 

在远端创建文件

 

link

 

link或hard表示创建链接文件

 

absent

 

表示删除文件或目录

 

mode

 

设置文件或目录权限

 

owner

 

设置文件或目录属主信息

 

group

 

设置文件或目录属组信息

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3a0981c8485e68d51cb60d6ea07e15c8.html