1. 介绍
ansible是一个自动化运维工具,基于Python研发。糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。仅需在管理工作站上安装ansible程序配置被管控主机的IP信息,被管控的主机无需安装客户端。ansible应用程序存在于epel(第三方社区)源,依赖于很多python组件。
1.1 特性
模块化设计;
基于python,有
paramiko
、pyyaml
和jinja2
这3个关键模块实现部署方便,agentless工具
主从模式工作;
支持自定义模块
支持playbook剧本,所有任务按照设置顺序依次执行;
1.2 架构
ansible core
: ansible自身核心模块;host inventory
:主机库,定义可管控的主机列表;connection plugins
:连接插件,一般默认ssh协议;modules
:core modules为自带,custom modules为自定义模块playbook
:剧本模块
1.3 配置文件
主配置文件/etc/ansible/ansible.cfg
主机列表:/etc/ansible/hosts
2. 安装
系统centos6.5
- 下载epel源
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
-
yum install ansible
即可
3. 配置
3.1 添加host
即主机清单(host invenory), 即通知ansible需要管理哪些主机。也可通过-i
选项进行单独指定。默认为/etc/ansible/hosts
,添加格式:
[group]
hostanme
ip address
支持主机名或IP地址格式,按照组的形式进行添加,同一个IP可同属于多个组
也可通过命令行管理,Ad-hoc command
3.2 ansible命令格式
语法格式:
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
-m: 要执行的模块,默认为==command==
-a:模块参数
-u:ssh连接用户名,默认为==root==,也可在ansible.cfg
中配置
-k:体术输入ssh登陆密码
-s:以sudo方式运行
-U:sudo到哪个用户,默认为==root==
-K:提示输入sudo密码,当不是NOPASSWD模式时使用
-C:测试,并不会真运行
-c:连接类型,默认为==smart模式==
-f:fork出多少个进程并发,默认==5个==
-i: hosts文件路径,默认==/etc/ansible/hosts==
-I:指定pattern,对<host_pattern>中已匹配的主机再过滤一次;
--list-hosts: 只打印出哪些主机会执行这个playbook文件,不会实际执行;
-M:要执行的模块路径,默认为==/usr/shar/ansible==
-o: 压缩输出
--private-key:私钥路径
-T:ssh连接超时时间,默认==10s==
-t:日志输出目录,日志文件名已主机名命名
-v:version
3.3 个性配置
修改/etc/ansible/ansible.cfg`文件
host_key_checking = False
关闭该注释,用于解决首次连接服务器时提示需验证。常用文件目录:
inventory:/etc/ansible/hosts
library: /usr/share/my_modules/
remote_tmp: $HOME/.ansible/tmp
local_tmp: $/HOME/.ansible/tmp
配置文件: /etc/ansible/ansible.cfg
3.4 ansible模块
模块就是ansible的命令,模块详细用法可用ansible-doc <module_name>
查看
或官网查看:
https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html
命令行中用模块
可用-m <module_name>
来调用模块,-a para
添加模块的参数
如:
ansible all -m yum -a "name=httpd state=present"
playbook中使用模块
tasks
每个action都是对模块的一次调用,action的写法:
module_name: module_para
常用模块
ping
debug:用于打印消息
copy:本地复制到远端
template:从本地复制到远端,并进行变量替换
file:设置文件属性
user:用户账户
yum:yum包管理
service:管理服务
firewalld:管理防火墙
shell:节点上执行shell命令,支持
$HOME < > | ; &
command:远程节点上执行命令,不支持
$HOME < > | ; &