Ansible基础

概述

  ​Ansible用 SSH 协议管理机器,通过python脚本来实现的,所以管理机和托管机都需要安装python2.6以及更高的版本,除此之外被管理的机器不需要安装任何组件。因此,批量操作的环境是比较轻量的。

配置文件

/etc/ansible/ansible.cfg:主配置文件

# 禁用验证host_key_checking(建议开启)
host_key_checking=False 

# 定义库文件位置,脚本,或者存放可通信主机的目录
inventory = /etc/ansible/hosts

# ansible默认搜寻模块的位置 Ansible知道如何搜寻多个用冒号隔开的路径,同时也会搜索在playbook中的"./library"。
library = /usr/share/my_modules/

# 日志存放位置 默认不开启,ansible将会吧模块加载纪录在系统日志系统中.不包含用密码。(建议开启)
log_path=/var/log/ansible.log
 
# 默认是command模块。(建议参数改为shell)
module_name = command
 
# 默认ansible会为输出结果加上颜色。如果你想关闭这一功能,可以把nocolor设置为1。
nocolor=0

# 默认ansible可以调用一些cowsay的特性,使得/usr/bin/ansible-playbook运行起来更加愉快。如果不喜欢cows,可以通通过将nocows设置为1来禁用这一选项:
nocows=0
 
# 对于Ansible中的异步任务,这个是设置定义,当具体的poll interval没有定义时,多少时间回查一下这些任务的状态,默认值是一个折中选择15秒钟。
poll_interval=15
 
# 如果你是用pem密钥文件而不是SSH客户端或密钥认证的话, 你可以设置这里的默认值, 来避免每一次提醒设置密钥文件位置"--ansible-private-keyfile"
private_key_file=/path/to/file.pem
 
# 这个设置是你系统默认的远程SSH端口, 如果不指定,默认为22号端口:(建议修改成别的端口)
remote_port = 22
 
# 这是个ansible使用/usr/bin/ansible-playbook连接的默认用户名。注意如果不指定, /usr/bin/ansible默认使用当前用户名称:
remote_user = root
 
# 默认SSH链接尝试超时时间
timeout = 10

# 默认通信机制为smart。如果本地系统支持ControlPersist技术的话, 将会使用(基于OpenSSH)ssh, 如果不支持该技术,将使用paramiko库,其他传输选项包括local, chroot,jail等等。用户通常可以这个设置为smart,让playbook在需要的条件自己选择connectin参数
transport = smart

# 默认设置会记录并验证通过在用户hostfile中新发现的的主机(如果host_key_checking 被激活的话)。这个选项在有很多主机的时候将会性能很差。在这种情况下,建议使用SSH传输代替。当设置为False时, 性能将会提升,在host_key checking被禁用时候, 建议使用
record_host_keys=True
 
# 如果这个设置为True, scp将代替用来为远程主机传输文件
scp_if_ssh=False   
 
# 执行ansible模块来使用管道特性, 从而减少执行远程模块SSH操作次数。当使用sudo操作的时候, 必须在所有管理的主机的/etc/sudoers中禁用requiretty
pipelining=False
 
# 在急速模式下使用的端口。
accelerate_port = 5099

# 设置从客户机获取数据的超时时间。如果在这段时间内没有数据传输,套接字连接会被关闭。考虑到异步任务,超时时间应该大于2倍的poll_interval,默认值为30秒
accelerate_timeout = 30

# 设置套接字调用的超时时间。默认设置为1.0秒
accelerate_connect_timeout = 1.0
 
# 控制加速daemon守护进程的超时时间,单位分钟,默认为30分钟
accelerate_daemon_timeout = 30
 
# 设置将允许多个私钥被加载到daemon
accelerate_multi_key = yes

/etc/ansible/hosts:主机清单

# Ex 1: 未分组的主机,在任何组头之前指定。
green.example.com
blue.example.com
192.168.100.1
192.168.100.10

# Ex 2: webservers组
[webservers]
alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110
# 如果有多个主机遵循一种模式,则可以指定
www[001:006].example.com

# Ex 3: dbservers组中的数据库服务器集合
[dbservers]
db01.intranet.mydomain.net
db02.intranet.mydomain.net
10.25.1.56
10.25.1.57
# 这是另一个主机范围的例子
db-[99:101]-node.example.com

/etc/ansible/roles:角色

/usr/share/ansible_plugins:插件

四种交互方式

在这里插入图片描述

  • CMDB:CMDB 存储和管理者企业IT架构中的各项配置信息,是构建 ITIL 项目的核心工具,运维人员可以组合 CMDB 和 Ansible,通过 CMDB 直接下发指令调用Ansible 工具集完成操作者所希望达到的目标;
  • PUBLIC/PRIVATE 方式:Ansible 除了丰富的内置模块外,同时还提供丰富的 API语言接口,如PHP、Python、PERL 等多种流行语言,基于 PUBLIC/PRIVATE,Ansible 以 API 调用的方式运行;
  • Ad-Hoc 命令集:Users直接通过Ad-Hoc命令集调用Ansible工具集来完成任务;
  • Playbooks:Users 预先编写好 Ansible Playbooks,通过执行Playbooks 中预先编排好的任务集,按序执行任务;

Ansible 工具集

Ansible 工具集包含 Inventory、Modules、Plugins 和 API。

  • Inventory:用来管理设备列表,可以通过分组实现,对组的调用直接影响组内的所有主机;

  • Modules:是各种执行模块,几乎所有的管理任务都是通过模块执行的;

  • Plugins:提供了各种附加功能,如连接类型插件、循环插件、变量插件、过滤插件等;

  • API:供第三方程序调用的应用程序编程接口,可以基于此做 Ansible的二次开发;

ssh-key验证

​ ansible基于ssh协议的,所以批量请求主机,需要验证登录信息。账号密码登录不安全,所以基于key验证是最佳解决方案。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值