自动化运维Ansible


Ansible是什么

Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 CobblerFunc 的作者于 2012 年创建成立。

Ansible 基于 Python 语言实现,由 ParamikoPyYAML 两个关键模块构建。

只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等那样使用拉取安装agent的方式。你可以将代码部署到任意数量的服务器上!


Ansible能做什么

Ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作

  1. 比如:同时在100台服务器上安装nginx服务,并在安装后启动它们。

  2. 比如:将某个文件一次性拷贝到100台服务器上。

  3. 比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。


Ansible特性

  1. 模块化:调用特定的模块,完成特定任务
  2. ParamikoPyYAMLJinja2(模板语言)三个关键模块
  3. 支持自定义模块
  4. 基于Python语言实现
  5. 部署简单,基于pythonSSH(默认已安装),agentless
  6. 安全,基于OpenSSH
  7. 支持playbook编排任务
  8. 幂等性:一个任务执行一遍和执行n遍效果一样,不因重复执行带来意外情况
  9. 无需代理不依赖PKI(无需ssl
  10. 可使用任何编程语言写模块
  11. YAML格式,编排任务,支持丰富的数据结构
  12. 较强大的多层解决方案

Ansible架构

1.png


Ansible工作原理

2.png


Ansible主要组成部分功能说明

  1. PLAYBOOKS

    任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件

  2. INVENTORY

    Ansible管理主机的清单/etc/anaible/hosts

  3. MODULES

    Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块

  4. PLUGINS

    模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用

  5. API

    供第三方程序调用的应用程序编程接口

  6. ANSIBLE

    组合INVENTORYAPIMODULESPLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具

注意事项

  1. 执行ansible的主机一般称为主控端,中控,master或堡垒机
  2. 主控端Python版本需要2.6或以上
  3. 被控端Python版本小于2.4需要安装python-simplejson
  4. 被控端如开启SELinux需要安装libselinux-python
  5. windows不能做为主控端

安装Ansible

1
yum -y install ansible

配置 Ansible

1
ls /etc/ansible
1
2
3
4
5
ansible.cfg  hosts  roles

ansible.cfg 是 Ansible 工具的配置文件
hosts 用来配置被管理的机器
roles 是一个目录,playbook 将使用它

Ansible 管理机与被管理机做秘钥认证

生成密钥

1
ssh-keygen

3.png

将管理机公钥写入被管理机

1
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.3.171

4.png

hosts文件添加被管理机

1
vim /etc/ansible/hosts

添加如下行

1
2
[Client]
192.168.3.171

测试 Ansible

管理机运行

1
ansible Client -m ping

5.png


参考文档

https://www.cnblogs.com/wangxiaoqiangs/p/5685239.html

blog.51cto.com/191226139/2066936

---------------The End---------------
0%