ansible介绍

1. 介绍

ansible是一个自动化运维工具,基于Python研发。糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。仅需在管理工作站上安装ansible程序配置被管控主机的IP信息,被管控的主机无需安装客户端。ansible应用程序存在于epel(第三方社区)源,依赖于很多python组件。

1.1 特性

  1. 模块化设计;

  2. 基于python,有paramikopyyamljinja2这3个关键模块实现

  3. 部署方便,agentless工具

  4. 主从模式工作;

  5. 支持自定义模块

  6. 支持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

  1. 下载epel源

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

  1. 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 [-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,对中已匹配的主机再过滤一次;

--list-hosts: 只打印出哪些主机会执行这个playbook文件,不会实际执行;

-M:要执行的模块路径,默认为==/usr/shar/ansible==

-o: 压缩输出

--private-key:私钥路径

-T:ssh连接超时时间,默认==10s==

-t:日志输出目录,日志文件名已主机名命名

-v:version

3.3 个性配置

修改/etc/ansible/ansible.cfg`文件

  1. host_key_checking = False关闭该注释,用于解决首次连接服务器时提示需验证。

  2. 常用文件目录:

  • 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 查看

或官网查看:

https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html

命令行中用模块

可用-m 来调用模块,-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 < > | ; &

你可能感兴趣的:(ansible介绍)