48小时系统班试听入口

Linux实战技术——Ansible详解!

发布作者:新盟教育 发布日期:2022-05-09 浏览人数:1232人

Linux小白必备实战技能

Ansible的特性


Ansible是一种常用的自动运维化工具,基于python开发,分布式,无需客户端,轻量级,配置语言采用YAML。


1.模块化:调用特定的模块,完成特殊的任务。


2.Paramiko(python对ssh的实现),PyYaml,jinja2(模块语言)三个关键模块。


3.支持自定义模块,可使用任何编程语言写模块。


4.基于python语言实现。


5.部署简单,基于python和SSH(默认已安装),agentless,无需代理不依赖KPI(无需SSL)。


6.安全,基于OpenSSH。


7.幂等性:一个任务执行一次和执行n遍效果一样,不因重复执行带来意外情况。


8.支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构。


9.较强大的多层解决方案role。


Ansible的作用目标


1.自动化部署APP。

2.自动化管理配置项。

3.自动化的持续交付。

4.自动化的云服务管理。


Ansible的架构



Ansible的工作原理



Ansible命令执行来源


1> USER,普通用户,即SYSTEM ADMINISTRATOR。

2> CMDB(配置管理数据库) API 调用。

3> PUBLIC/PRIVATE CLOUD API调用 (公有私有云的API接口调用)。

4> USER-> Ansible Playbook -> Ansibile。


利用ansible实现管理的方式:


1> Ad-Hoc 即ansible单条命令,主要用于临时命令使用场景。


2> Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前期的规划过程。


Ansible-playbook(剧本)执行过程:


将已有编排好的任务集写入Ansible-Playbook。


通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行。


Ansible主要操作对象


  • HOSTS主机

  • NETWORKING网络设备


注意事项:


1.执行ansible的主机一般称为主控端,中控,master或堡垒机。

2.主控端Python版本需要2.6或以上。

3.被控端Python版本小于2.4需要安装python-simplejson。

4.被控端如开启SELinux需要安装libselinux-python。

5.windows不能做为主控端 ansible不是服务,不会一直启动,只是需要的时候启动。


一、Ansible的安装


yum安装:

EPEL源:yum -y install epel-release
yum install ansible -y(只推荐这一种方法)


二 、Ansible的相关文件




配置文件:

/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性(一般无需修改)
/etc/ansible/hosts 主机清单(将被管理的主机放到此文件)
/etc/ansible/roles/ 存放角色的目录


程序:

/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc 查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
/usr/bin/ansible-console 基于Console界面与用户交互的执行工具


三、Ansible的相关命令



列出所有主机:ansible all --list-hosts。

e.g.1 打开三台机器,第一台安装ansible工具,编辑/etc/ansible/hosts文件,在文件末行添加子目录ip地址。


[webserves]是为了便捷地使用主机,在inventory file中设置的分组命名。


然后将第一台机器的公钥拷贝到两个子网中:

cd /root/.ssh/
ll
ssh-copy-id root@192.168.218.11 id_rsa.pub

1.在管理节点生成公钥 ssh-keygen; 路径为 :

~/.ssh/id_rsa.pub


2.添加目标节点的SSH认证信息,在管理节点执行如下命令 :

ssh-copy-id root@目标节点ip


第三步为测试:

ansible+分组名称或all -m ping

ansible all -m ping -k 连接时需要输入密码,默认为key验证
ansible “*” -m ping 连接所有的ip地址
ansible webservers --list-hosts 列出这组的ip地址
ansible “lvs-servers:webservers” -m ping : 表示或的关系
ansible “lvs-servers:&webservers” -m ping :& 表示逻辑与关系
ansible ‘lvs-servers:!webservers’ -m ping :! 逻辑非关系(此处用单引号)
ansible webservers -m ping -v 查看详细执行过程
ansible all -m ping -u wang -k 以wang用户执行ping存活检测

e.g.2 开启三台机器,在第一台安装ansible,另外两台创建用户xingyun
useradd xingyun
cat /etc/passwd | grep xingyun
passwd wang (设置用户wang的密码)


配置两个子网中xingyun用户的sudo权限:

vi /etc/sudoers (在末行添加)


以xingyun sudo到root执行ping存活检测:

ansible all -m ping -u xingyun -K -b


ping模块测试链接:

ansible 192.168.218.11,192.168.218.12 -m ping -k


在另外两台子网中创建用户wang, 以xingyun sudo至wang用户来执行ping存活检查:

ansible all -m ping -u xingyun -K -b --become-user=wang



推荐阅读

>>>新手必备-Linux入门之云计算是什么

>>>红帽认证入门-Linux系统介绍及企业版本选型

>>>新手必备-Linux系统安装配置+Xshell远程连接

>>>Linux常用命令行合集之绝对路径和相对路径

>>>软连接与硬连接


运维界升职加薪必备的云计算技术,你学了吗?

学完高级运维云计算课程之后,你可以:

  • 跨越90%企业的招聘硬门槛

  • 增加70%就业机会

  • 拿下BAT全国TOP100大厂敲门砖

  • 体系化得到运维技术硬实力

  • 技术大佬年薪可达30w+

兴奋二维码1.png