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日志文件
mail 当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 修改加密文件的密码

//访问加密文件时需输入加密密码

posted @ 2022-04-18 08:35  爱和可乐的w  阅读(45)  评论(0编辑  收藏  举报