大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步!
我的主页:早九晚十二
专栏名称:Ansible从入门到精通 立志成为ansible大佬
Ansible初识
ansible基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
环境准备
首先我们需要先准备两台机器,一台为安装ansible的主控机,一台为测试机
#主控机
yum -y install ansible
Ansible的主要组成部分
ANSIBLE PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件INVENTORY;Ansible管理主机的清单/etc/anaible/hostsMODULES; Ansible执行命令的功能模块,多数为内置核心模块,也可自定义PLUGINS:;模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
API: 供第三方程序调用的应用程序编程接口
ANSIBLE: 组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具
Ansible的配置文件详解
Inventory 主机清单
ansible的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名
默认的inventory file为/etc/ansible/hosts
inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成
/etc/ansible/hosts文件格式inventory文件遵循INI文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中;此外,当如若目标主机使用了非默认的SSH端口还可以在主机名称之后使用冒号加端口号来标明。
例如
[test]
192.168.100.100
test1.example.com
如果主机名称遵循相同的命名格式,也可以以列表标注
[test]
192.168.100.[1:100]
test[1:100].example.com
test[a:z].example.com
配置文件/etc/ansible/ansible.cfg
该文件是ansible的主配置文件,所有内容都在里面定义,一般都是默认状态,我们操作的一般也只是**[defaults]**分组
#inventory = /etc/ansible/hosts # 主机列表配置文件
#library = /usr/share/my_modules/ # 库文件存放目录
#remote_tmp = SHOME/.ansible/tmp #临时py命令文件存放在远程主机目录
#local_tmp= $HOME/.ansible/tmp # 本机的临时命令执行目录
#forks= 5 # 默认并发数,即同时执行五台机器
#sudo user = root # 默认sudo 用户
#ask_sudo_pass = True #每次执行ansible命令是否询问ssh密码
#ask _pass= True
#remote_port = 22 #默认使用22端口远程等登录
#host_key_checking = False # 检查对应服务器的host key,建议取消注释
#log_path=/var/log/ansible.log #日志文件
需要注意的主要是host_key_checking,如果不取消注释,无法实现批量免密登录。另外log_path默认是不记录,如果开启的话,服务即时生效,不必重启
Ansible的命令执行来源
USER,普通用户,即SYSTEM ADMINISTRATOR
CMDB (配置管理数据库) API 调用
PUBLIC/PRIVATE CLOUD API调用
USER-> Ansible Plavbook -> Ansibile利用ansible实现管理的方式:
Ad-Hoc 即ansible命令,主要用于临时命令使用场景
Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前提的规划
Ansible-Playbook执行过程
将已有排好的任务集写入Ansible-Playbook
通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行
Ansible主要操作对象 :
HOSTS主机
NETWORKING网络设备
注意事项
执行ansible的主机一般称为主控端,中控,master或堡垒机
主控端Python版本需要2.6或以上
被控端Python版本小于2.4需要安装python-simplejson
被控端如开启SELinux需要安装libselinux-python
windows不能做为主控端
码字不易。如果文章对您有希望的话,请三连支持一波。
如有问题,欢迎留言,一起探讨,感谢。
也可关注下方公众号,看到留言后会第一时间回复。