初识ansible
Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。
Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。
Ansible 特点:
- 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
- 默认使用 SSH(Secure Shell)协议对设备进行管理。
- 主从集中化管理。
- 配置简单、功能强大、扩展性强。
- 支持 API 及自定义模块,可通过 Python 轻松扩展。
- 通过 Playbooks 来定制强大的配置、状态管理。
- 对云计算平台、大数据都有很好的支持。 >> 提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 —- AWX 平台。
1.安装ansible
yum install -y ansible
2.配置文件说明
ls -l /etc/ansible/
total 36
-rw-r--r-- 1 root root 19315 Jun 16 05:17 ansible.cfg
-rw-r--r-- 1 root root 1035 Jul 10 14:40 hosts
drwxr-xr-x 2 root root 4096 Jun 16 05:17 roles
ansible.cfg ansible的配置文件
inventory = /etc/ansible/hosts 配置inventory文件
library = /usr/share/ansible 配置ansible模块目录
forks =5 默认最多几个进程同时工作
Sudo_user = root
Remote_port =22
Host_key_checking = False 是否检车ssh主机秘钥
Timeout = 60 ssh超时时间
log_path = /var/log/ansible.log 默认不记录日志
hosts为Inventory文件
如果inventory 指向一个目录,如下所示
inventory = /root/inventory
目录下面可以创建已hosts文件命名的,该文件放置的时单个主机
也可以创建已组命名的文件,如group,该文件内的主机为该组下的主机
命令可以使用–list-hosts查看
Ansible hostgroup –list-hosts
Inventory文件简单配置
[hostgroup]
Host1 ansible_ssh_user=root ansible_ssh_port=22,ansible_ssh_pass = '123456'
Host2
192.168.0.[1:10] 表示10个ip
[Hostgroup:children] 多个主机组
Hostgroup1
Hostgroup2
[hostgroup:vars] 定义主机组变量
Http_port =80
ansible简单使用
-i 指定 inventory文件 可不写,默认为/etc/ansiable/hosts 后面跟组名或者主机名
-u 指定用户
-m 模块 默认是command模块
-a 模块命令
-k 提示输入密码
-f 一次性并发的进程 forks
-P 0 返回默认job id,通过 -m async_status -a ‘jid=’ 来查询该任务
ansible all 表示所有主机
ansible优化
开始ssh长连接
Openssh 5.6版本以上支持
sh_args = -o ControlMaster = auto -o ControPersist =5d 设置长连接时间为5天
开启pipelining
pipelining = True
开启accelerate
[accelerate]
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0
设置facts缓存
gathering = smart
fact_caching_timeout = 86400
fact_caching = jsonfile/redis/memcached 可以使用redis,memcached或者json文件
fact_caching_connection = /dev/shm/ansible_fact_cache
fact_caching_connection = localhost:6379:0:admin admin为redis密码