栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Ansible自动化运维

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ansible自动化运维

文章目录
  • 一、Ansible介绍
  • 二、安装Ansible
  • 三、Ansible管理方式
    • 1、ssh密码认证管理方式
    • 2、 免密登入
  • 四、Ansible模块
    • 1、command
    • 2、shell

一、Ansible介绍

Ansible 是一个简单,强大且无代理的自动化运维工具,基于Python语言编写,Ansble无需代理,不需要在客户端安装额外的 agent 。

架构:

  • 清单(inventory): 受控节点设备的列表。在这个列表中,你可以根据某些标准(如,作用,服务等)将拥有相同属性的计算机组织到一个组中。Ansible 清单,支持静态清单(一旦定义好,除非你修改配置文件,不然不会发生改变。),也支持动态清单(通过脚本从外部源获取清单,该清单可以随着环境的改变而改变。)。

  • Playbook: 需要在被控节点主机上运行的任务列表,从而让他们达到我们预期的状态。Playbook 中包含一个或多个 play,每个 play 会在一组或多组计算机上按顺序执行已经定义好的一系列 task,每个 task 都是一个执行模块。

  • 模块(Module): 用于确保主机处于某一个特定的状态,例如可以使用 yum(对于不同发行版本的 Linux,模块名可能有所不同个,如,在 Ubuntu 中与之对应的是 apt 模块。) 模块确保主机已经安装了某个软件,如果主机状态已经是预期的了(已经安装了该软件),那么就不会执行任何操作,执行下一个模块(task)。

  • Plugin 添加到 Ansible 中的代码段,用于扩展 Ansible 平台

二、安装Ansible

环境:

IP地址主机名介绍
10.10.14.50ansible管理端
10.10.14.51node1被管理端节点1
10.10.14.52node2被管理端节点2

1、安装ansible

# 1、配置时间同步&时区同步
ntpdate ntp1.aliyun.com
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

# 2、安装ansible
yum -y install epel-release.noarch 
yum -y install ansible

# 3、检查ansible是否安装成功!
ansible-2.9.25-1.el7.noarch
ansible --version
三、Ansible管理方式

ansible 批量管理主机方式主要又两种:

  • 传统的输入ssh密码验证
  • 密钥管理(免密)
# 1、备份原ansible的hosts文件
cp /etc/ansible/hosts{,.bak}

# 2、添加清单(被管理端机器)地址。
tail -3 /etc/ansible/hosts
[node]
10.10.14.51
10.10.14.52
1、ssh密码认证管理方式
# 语法:ansible 主机列表 -m command -a "hostname" -k -u root
-m: 指定模块
-a: 指定在被管理端执行的命令
-k: 询问密码
-u: 指定用户

ansible node -m command -a "hostname" -k -uroot

//密码验证方式,如果主机列表中机器密码不一致 会出现下面这种错误。只会返回密码正确机器的信息。

所以密码验证的这种方式并不实用。一般都是实用下面的免密登入方式!

2、 免密登入

1、修改hosts配置文件实现免密登入。

# 1、可以在/etc/ansible/hosts文件中定义密码,即可实现快速的免密认证!
# 参数:
ansible_host  主机地址
ansible_port  端口,默认22
ansible_user  认证用户
ansible_ssh_pass 认证用户密码

# 2、修改hosts配置文件如下:
tail -3 /etc/ansible/hosts
[node]
10.10.14.51 ansible_user=root ansible_ssh_pass=111
10.10.14.52 ansible_user=root ansible_ssh_pass=Qinziteng666.

# 3、验证
ansible node -m command -a "hostname" -uroot 
10.10.14.51 | CHANGED | rc=0 >>
node1
10.10.14.52 | CHANGED | rc=0 >>
node2

//可以看到 验证都成功了 但是这种在配置文件中填写主机密码极其不安全!不推荐

2、ssh密钥方式实现免密登入。

[root@ansible ~]# ssh-keygen
[root@ansible ~]# for i in 51 52 ;do ssh-copy-id 10.10.14.$i;done

# 验证
[root@ansible ~]# ansible node -m command -a "hostname" 
10.10.14.52 | CHANGED | rc=0 >>
node2
10.10.14.51 | CHANGED | rc=0 >>
node1

//这种方式相对还是比较安全的。
四、Ansible模块
# 1、查看ansible所有模块
ansible-doc -l

# 2、过滤command模块
ansible-doc -l | grep command

# 3、查看command模块使用帮助
ansible-doc -s command
1、command

作用:在远程节点上执行命令
缺点:

  • 使用command模块不支持shell变量 $name 等
  • 使用command模块不支持特殊符号> < | ; * 等
参数:
chdir :        在执行命令之前,先通过cd到指定的目录
create :       在创建一个文件之前,判断该文件是否存在,如果存在则跳过前面命令,如果不存在则执行前面命令
removes :      和create相反,判断文件是否存在,如果存在则执行前面命令,不存在则跳过命令
free_from :    该参数可以输入任何的系统命令,实现远程管理 
warn :         取消告警  

command 是 ansible 默认模块 也就是说 不指定模块默认使用的模块是 command 如下:

[root@ansible ~]# ansible node -a "hostname"
10.10.14.52 | CHANGED | rc=0 >>
node2
10.10.14.51 | CHANGED | rc=0 >>
node1

练习:

# 1、获取所有被管理端的负载信息
[root@ansible ~]# ansible all  -m command -a "uptime"
10.10.14.52 | CHANGED | rc=0 >>
 05:05:10 up 51 min,  2 users,  load average: 0.02, 0.02, 0.03
10.10.14.51 | CHANGED | rc=0 >>
 05:05:11 up 51 min,  2 users,  load average: 0.00, 0.01, 0.05


# 2、进入被管理端/tmp目录下 输出当前路径
[root@ansible ~]# ansible node -m command -a "pwd chdir=/tmp/"
10.10.14.51 | CHANGED | rc=0 >>
/tmp
10.10.14.52 | CHANGED | rc=0 >>
/tmp

# 3、判断t2目录是否存在 不存在则创建 存在则跳过
[root@ansible ~]# ansible node -m command -a " mkdir /root/t2 create=t2"

# 4、盘算t2目录是否存在 存在则执行hostname指令 不存在则跳过
[root@ansible ~]# ansible node -m command -a "hostname   removes=/root/t2"
10.10.14.51 | CHANGED | rc=0 >>
node1
10.10.14.52 | CHANGED | rc=0 >>
node2	

# warn参数 取消告警信息
[root@ansible ~]# ansible node -m command -a "chmod 000 /etc/hosts"
//正常使用chmod命令会出现报警信息 如下:

//使用warn参数取消告警
[root@ansible ~]# ansible node -m command -a "chmod 000 /etc/hosts warn=False"
2、shell
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号