0
点赞
收藏
分享

微信扫一扫

Ansible 基础

ansible 是一个自动化的工具,所以ansible并没有服务需要进行管理;主要来实现企业级的自动化批量部署或下发配置等等,并且ansible 还是一个无代理架构,可以通过应用自身的能力来管理应用本身。

ansible 优势:不需要去做重复的事,配置的下发和应用的部署,以及滚动更新

ansible 执行任务的方式主要为以下两种:

ad-hoc ==》临时命令 ==》 用来执行简单的任务

playbook ==》 剧本 ==》 用来执行复杂的任务

Ansible 基础_ansible

用户通过 ansible 下发请求后执行的步骤如下:

第一步,回去 Host Inventory(主机清单)中确认需要操控的主机是否在清单中;

第二步,检查用户所使用的是哪一个Core Modules(模块),这里模块分为两种,一种是Core Modules 核心模块,第二种则是 Costorne Modules 扩展模块,扩展模块的出现是为了弥补核心模块功能的不足;

第三步,找到模块后就会根据 Connection Plugins 链接插件链接到被控主机;

第四步,是将模块推送到远程主机来执行(这里其实就是python脚本,执行完毕后就会自己删除掉);

第五步,执行完毕后则会关闭连接。

Ansible 安装

安装方式:

(1)使用yum安装

(2)使用源码包编译安装

(3)使用python的pip包管理器安装

Ansible 基础_linux_02

Ansible 的主机清单

ansible 所有被管理的对象都可以叫做主机例如服务器,路由器,存储等等,并且ansible只能管理清单中的主机,如果执行任务的主机不在清单里面,那么ansible就无法执行任务;

所有记录主机的文件被叫做主机清单==》inventory ==》默认清单 ==》/etc/ansible/hosts

Ansible 基础_ansible_03

ansible 文件定义主机的方式:

(1)使用主机名定义主机,例如:host1.example.com(需注意,该主机名是可以解析成IP)

(2)使用IP来定义主机,例如 192.168.1.1

(3)匹配连续的IP或字母,例如 192.168.1.[1:100],node[a:z],如下图其中 ansible all --list-host 是列举出清单中所有的主机

Ansible 基础_redhat_04

(4)通过分组的方式来定义主机(注:如果清单中同时出现主机组和主机,那么主机必须在主机组前面),如下图所示

Ansible 基础_linux_05

特殊查询:ansible ungrouped --list-hosts #表示查询不属于任何组的主机 

Ansible 的配置文件

默认:

重点:/etc/ansible/ansible.cfg 主配置文件 ==》如果配置文件不存在会使用默认配置

/etc/ansible/hosts inventory主机清单

/etc/ansible/roles 角色存放的目录

ansible.cfg 配置模块:

Ansible 基础_配置文件_06

[defaults]==>通用配置项

[inventory]==>主机清单配置项

[privilege_escalation]==>权限提升配置项

[paramiko_connection]==>远程链接的模块,适用与rhel6之前的系统版本

[ssh_connection]==>SSH的配置项

[persistent_connection]==>保持长链接配置项

[accelerate]==> 链接加速配置项

[selinux]==>SELINUX配置项

[colors]==>颜色配置项

[diff]==>前后两次执行对比

#ansible 的配置文件在系统上会存在多份,其中优先级如下,从高到低

1,ANSIBLE_CONFIG 环境变量

2,./ansible.cfg 当前的工作目录

3,~/.ansible.cfg 当前用户的家目录

4,/etc/ansible/ansible.cfg 默认配置文件

基础配置示例:

(1)优先确认有被控设备正常运行,然后再来配置ansible清单(这里是通过主机名来配置的ansible被控清单,主机名本机已在/etc/hosts文件中做了指定IP解析)

Ansible 基础_ansible_07

(2)配置 ansible.cfg 配置文件

Ansible 基础_ansible_08

<<EOF
#配置参数含义
inventory = ./hosts #指定当前目录下的hosts为ansible主机清单
remote_user = devops #使用devops用户来连接到被控
ask_pass = false #不使用密码,而是使用秘钥验证

bcome=True #开启提权
become_method=sudo #提权方式为sudo
become_uset=root #提权到root用户
become_ask_pass=false #提权时不需要验证密码

ssh_args #ssh连接项开启,保障连接复用提升性能
EOF

ansible all -m ping #测试ansible的联通性

<< EOF
初期测试时可直接通过ssh秘钥特性实现免密登陆,同步来验证ansible的联通性
EOF

Ansible 基础_linux_09

举报

相关推荐

0 条评论