ansible的介绍与基本应用

目录

      • 1. ansible简介
      • 2. ansible的优点
      • 3. 安装ansible
      • 4. ansible 的部署
        • 4.1 构建ansible清单
        • 4.2. 列出主机
        • 4.3. 自定义清单
        • 4.4. 管理ansible配置文件
      • 5. 运行临时命令

1. ansible简介

ansible是开源自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

2. ansible的优点

1.跨平台支持
2.人类可读自动化: ansible提供linux,Windows,unix和网络设备的无代理支持,适用于物理、虚拟、云和容器环境
3.完美描述应用:playbook
4.轻松管理版本控制:playbook是纯文本,可视作源代码
5.支持动态清单
6.编排可与其他系统轻松集成:puppet、jenkins
7.基础架构即代码
8.减少人为错误

3. 安装ansible

①:在安装ansible之前确保已经在实验主机上搭建epel仓库
②:安装ansible dnf install -y ansible
ansible的介绍与基本应用_第1张图片

4. ansible 的部署

4.1 构建ansible清单

清单:定义了ansible将要管理的一批主机;
默认主机清单 :/etc/ansible/hosts
示例:
ansible的介绍与基本应用_第2张图片
注意:一台主机可以存在于多个主机组
还可以通过范围简化主机规格
ansible的介绍与基本应用_第3张图片

4.2. 列出主机

命令 作用
ansible all --list-hosts #列出清单中所有受管主机
ansible ungrouped --list-hosts 列出不属于某个组的主机
ansible webservers --list-hosts #列出属于webservers组的主机

示例:
①:vim /etc/ansible/hosts ##编写主机清单
ansible的介绍与基本应用_第4张图片
②:列出主机
ansible的介绍与基本应用_第5张图片

4.3. 自定义清单

① 建立清单目录 : mkdir deploy-inventory
② 编写主机清单 : vim inventory
ansible的介绍与基本应用_第6张图片
③:列出主机

命令 作用
ansible all f -i inventory --list-hosts 列出清单中所有受管主机
ansible ungrouped -i inventory --list-hosts 列出不属于某个组的主机
ansible webservers -i --list-hosts 列出属于webservers组的主机

ansible的介绍与基本应用_第7张图片

4.4. 管理ansible配置文件

配置文件:

  • /etc/ansible/ansible.cfg : #基本配置文件,如果找不到其他配置文件,使用这个
  • ~/.ansible.cfg: #如果存在此配置并且当前工作目录中也没有ansible.cfg,此文件替代/etc/ansible/ansible.cf
  • . ./ansible.cfg : #执行ansible命令的目录中如果有ansible.cfg,就用它,不使用上面两个(推荐使用,上面两个不常用)

管理配置文件中的设置:

  • [defaults] #部分设置ansible操作的默认值
  • [privilege_escalation] #配置ansible如何在受管主机上执行特权升级

示例:
在当前工作目录下创建配置文件 vim ansible.cfg
ansible的介绍与基本应用_第8张图片
ansible webservers -i inventory --list-hosts -v ##显示webservers组使用的配置文件
ansible的介绍与基本应用_第9张图片 如何使用siudo下放权利:
vim /etc/sudoers.d/student ##为student建立一个下放权限的文件
ansible的介绍与基本应用_第10张图片

5. 运行临时命令

使用临时命令可以快速测试和更改,无需编写playbook
格式:
ansible host-pattern -m module [-a 'module arguments'] [-i inventory]
①:检查能否在受管主机上运行python模块ansible all -m ping
ansible的介绍与基本应用_第11张图片
②:使用临时命令通过模块执行任务ansible-doc -l #列出所有模块
③:ansible-doc ping #查看ping模块帮助文档
常用ansible模块:

文件模块:
     	-copy:将本地文件复制到受管主机
		-file:设置文件的权限和其他属性
		-lineinfile:确保特定行是否在文件中
		-synchronize:使用rsync同步内容

系统模块:
     	-firewalld:使用firewalld管理任意端口和服务
		-reboot:重启
		-service:管理服务
		-user:添加、删除和管理用户账户

Net Tools模块:	
        -get_url:通过http、https、或者ftp下载文件
		-nmcli:管理网络
		-uri:与web服务交互

示例:
①:使用user模块确保student用户存在于rhel8_no1.test.com且uid为1000
ansible的介绍与基本应用_第12张图片
②:使用command模块执行临时命令 (通过-u 选项使用student进行连接并执行id命令)
ansible的介绍与基本应用_第13张图片
注意:command模块允许执行远程命令,但这些命令不是shell处理,所以无法访问shell环境变量,所以不能执行重定向、传送等操作
③:使用copy模块,以student用户登录,使用root权限,把“westos ansible”复制给192.168.1.19主机的/etc/mo
td文件 (- -become 给student用户权限提升)
ansible的介绍与基本应用_第14张图片
在192.168.1.19受管主机上查看文件内容,copy模块复制内容成功
ansible的介绍与基本应用_第15张图片
ssh远程登录192.168.1.19主机时会显示更改的内容
ansible的介绍与基本应用_第16张图片
④:使用copy模块,修改192.168.1.19受管主机的apache默认发布页面
ansible的介绍与基本应用_第17张图片
ansible的介绍与基本应用_第18张图片

你可能感兴趣的:(Linux)