Ansible_00_初识Ansible
@
Ansible
Ansible:基于Python实现的配置管理和自动化工具
1)Ansible通过SSH连接到各个服务器,按照顺序并行执行任务;
2)Ansible使用YAML文件格式和Jinja2模板语言配置;
3)Ansible默认采用推送更新模式
(可更改);
//Ansible支持ssh-agent程序
Ansible优化方式:
(1)开启SSH长连接;
1)配置~/.ssh/config文件实现SSH长连接(多路复用)
//启用长连接
ControlMaster auto
//存储套接字的文件路径
ControlPath /tmp/%r@%h:%p
//1)%r代表用户名
//2)%h代表服务器名
//3)%p代表连接端口号
//长连接的超时时间
ControlPerisist 10m
(2)开启pipelining
1)功能:使连接到SSH会话的管道直接执行Python脚本
2)需配置服务器的/etc/sudoers的“Defaults 用户名 !requiretty
”;
默认task执行流程:
1.基于调用的模块生成Python脚本;
2.将生成的脚本传输至服务器;
3.服务器调用脚本;
(3)设置facts缓存
1)配置ansible.cfg文件实现facts缓存
gathering = smart
//到达过期时间后更新变量
fact_caching_timeout = 过期时间(秒)
//缓存方式可为jsonfile、redis或memcached
//存在读取脏数据的风险(可手动刷新缓存)
fact_caching = 缓存方式
ansible.cfg
ansible.cfg文件:Ansible主配置文件
1)可在该文件设置inventory文件的默认值
2)Ansible按照以下顺序查找ansible.cfg文件:
ANSIBLE_CONFIG环境变量的值 |
./ansible.cfg |
~/.ansible.cfg |
/etc/ansible/ansible.cfg |
//一般会在playbook的同级目录下创建,便于版本控制(第二种情况)
常用配置参数如下:
1. inventory = inventory文件路径
2. remote_user = SSH连接使用的用户名
3. remote_port = SSH连接使用的端口
4. private_key_file = 连接SSh的私钥
5. host_key_checking = 是否检查主机密钥
6. pipelining= 是否开启pipelining
7. gathering= facts变量收集方式
8. log_path=日志文件路径
9. executable = 指定服务器的Shell全路径
10. roles_path = ~/ansible_roles //指定默认role路径
11. nocows = 1 //关闭奶牛显示
stdout_callback=stdout回调插件
stdout回调插件 | 说明 |
---|---|
actionable | 只显示change和false |
debug | 高可读的stderr和stdout |
default | 显示默认输出 |
dense | 覆盖输出 |
json | JSON格式输出 |
minimal | 最小限度输出 |
oneline | 仅显示在一行 |
selective | 仅显示标记task的输出 |
skippy | 跳过未选取hosts的输出 |
callback_whitelist=回调插件
多个回调插件之间使用,分隔
回调插件 | 说明 |
---|---|
log_plays | 将playbook执行结果记录到/var/log/ansible/hosts日志文件 |
当task失败时发送邮件 | |
profile_tasks | 报告每个task的执行时间 |
Ansible安装
安装
(1)启用EPEL仓库:yum install -y epel-release
(2)安装Ansible:yum install -y ansible
(3)验证(查看版本号):ansible --version
//Ansible不存在于默认Yum仓库中
管理
ansible命令:调用Ansible管理服务器
指令格式:ansible 选项
选项 | 含义 |
---|---|
-i | 指定inventory文件 (默认值:/etc/ansible/hosts) |
-m | 指定使用模块 (默认值:command模块) |
-a | 指定模块参数 (多个参数时需使用引号括起来) |
-b | 通过sudo获取root身份执行 |
-e | 同时传入最高优先级变量 (传入变量文件,需在文件前添加“@”) |
ansible-doc命令:查询Ansible模块相关信息
指令格式:ansible-doc 选项 模块名
ansible-playbook命令:执行playbook文件
指令格式:ansible-playbook 选项 YAML文件路径
选项 | 含义 |
---|---|
-l | 指定playbook只在特定群组上执行 |
--list-tasks | 列出playbook中所有的task |
--flush-cache | 清除/刷新缓存 |
--ask-vault-pass | 输入加密密码 |
--vault-password-file | 指定加密密码的文件路径 |
1)若加密密码文件具有执行权限,则自动调用文件内容作为密码输入
ansible-vault命令:创建/编辑加密文件
指令格式:ansible-valut 选项 文件路径
选项 | 含义 |
---|---|
encrypt | 加密纯文本文件 |
decrypt | 解密加密文件 |
view | 打印加密文件 |
create | 创建加密文件 |
edit | 编辑加密文件 |
rekey | 修改加密文件的密码 |
//访问加密文件时需输入加密密码