Ansible自动化运维安装与简单使用

Ansible 简单的说是一个配置管理系统(configuration management system)。你只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式。你可以将代码部署到任意数量的服务器上。

Ansible能做什么

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

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

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

比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。 这些场景中我们都可以使用到ansible。

Ansible特性

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

Ansible架构

Ansible自动化运维安装与简单使用

Ansible工作原理

Ansible自动化运维安装与简单使用

Ansible主要组成部分功能说明

 PLAYBOOKS:
            任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件
 INVENTORY:
            Ansible管理主机的清单/etc/anaible/hosts
 MODULES:
            Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块
 PLUGINS:
            模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
 API:
            供第三方程序调用的应用程序编程接口
 ANSIBLE:
            组合INVENTORY、 API、 MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具

注意事项

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

安装Ansible

CentOS为例

安装环境查看

Ansible自动化运维安装与简单使用

安装

yum -y install ansible

查看版本

Ansible自动化运维安装与简单使用

Ansible 功能详解

配置文件

配置文件或指令 描述
/etc/ansible/ansible.cfg    主配置文件,配置ansible工作特性
/etc/ansible/hosts  主机清单
/etc/ansible/roles/ 存放角色的目录
/usr/bin/ansible    主程序,临时命令执行工具
/usr/bin/ansible-doc    查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook  定制自动化任务,编排剧本工具
/usr/bin/ansible-pull  远程执行命令的工具
/usr/bin/ansible-vault  文件加密工具
/usr/bin/ansible-console    基于Console界面与用户交互的执行工具

Ansible 配置文件

Ansible 配置文件/etc/ansible/ansible.cfg (一般保持默认)
 [defaults]
 #inventory = /etc/ansible/hosts # 主机列表配置文件
 #library = /usr/share/my_modules/ # 库文件存放目录
 #remote_tmp = $HOME/.ansible/tmp #临时py命令文件存放在远程主机目录
 #local_tmp = $HOME/.ansible/tmp # 本机的临时命令执行目录
 #forks = 5 # 默认并发数
 #sudo_user = root # 默认sudo 用户
 #ask_sudo_pass = True #每次执行ansible命令是否询问ssh密码
 #ask_pass = True      #连接时提示输入ssh密码
 #remote_port = 22    #远程主机的默认端口,生产中这个端口应该会不同
 #log_path = /var/log/ansible.log #日志
 #host_key_checking = False # 检查对应服务器的host_key,建议取消注释。也就是不会弹出

试验规划,两台主机192.168.56.11作为主控端,192.168.56.12被控端

修改配置文件/etc/ansible/hosts

[webservers]
192.168.56.11
192.168.56.12

webserves代表一个组,下面有两台主机

执行命令

ansible 192.168.56.11 -m ping

执行失败

Ansible自动化运维安装与简单使用

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

转载注明出处:https://www.heiqu.com/809f0cf0f810c7acee486e8ddc1fae65.html