药材网网站技术建设,做网站公司的出路,wordpress 物流主题,顾问式 网站Ansible:
远程操作主机功能#xff1a;
自动化运维#xff08;playbook剧本YAML#xff09;
是基于Python开发的配置管理应用部署攻具#xff0c;在自动化运维当中#xff0c;现在是异军突起
Ansible能批量配置#xff0c;部署#xff0c;管理上千台主机#xff0c…Ansible:
远程操作主机功能
自动化运维playbook剧本YAML
是基于Python开发的配置管理应用部署攻具在自动化运维当中现在是异军突起
Ansible能批量配置部署管理上千台主机类似于xshe的一键输入工具不需要每次都切换主机进行操作只要一台ansible的固定主机就可以所有节点操作
不需要agent客户端
主需要一台主机上配置了ansible
是基于模块进行工作只是提拱了一种运行的架构执行操作和辩证的是ansible的模块来实现的
Copy
Service
Ansible默认是通过ssh的密钥队来实现通信的可以改 Ansible的另一个特点
所有模块都是幂等性。
所谓幂等性指的是多次操作多次执行对系统资源的影响是一致的。
例如
Systemctl stop fierwalld 只要发现停止的目标服务已经停止了后续同样的操作不会改变任何结果什么也不做 Systemctl restart firewallld 每一次操作都会先停止再起动 HTTP get 也是幂等性
Post多次执行相同的post可能创建多个相同的资源所以不具有幂等性 Ansible的幂等性决定了你可以放心大胆的使用重复执行某个任务不会对结果产生仍和影响绝大多数情况 Ansible的四大组件
lnventory主机清单主机组定义ansible可以远程操作的服务器模块ansible常用的模块有13个通过这些模块可以实现远程的配置和操作Plugins插件Playbook剧本shell脚本YAML格式 Ansible的优缺点
部署较为简单只要在控制主机部署即可被控制主机需要有ssh和pyhon2.5以上版本基本上Linux都是自带的
Ansible只能控制liunx系统windows不行
基于模块工作可以使用任意语言开发模块二次开发底层架构 环境
管理端20.0.0.51 ansible
被管理端20.0.0.52 20.0.0.53
备用20.0.0.54 管理端安装ansible
yum -y install epel-release yum -y install ansible 安装tree查看目录文件
tree /etc/ansible Ansible.cfgansible的主配置文件一般无需修改
Hosts主机组声明可以被控制的主机
Roles:公共角色目录 配置主机有两种方式
直接声明主机的IP地址主机名/etc/hosts映射 添加两个不同的主机 管理端配置密钥队
//配置密钥对验证
ssh-keygen -t rsa #一路回车使用免密登录
sshpass -p 123 ssh-copy-id root20.0.0.52
sshpass -p 123 ssh-copy-id root20.0.0.53 分别传给20 30在此重新配置密钥队让其真正的生效 Ansible的命令格式
Ansible组名/ip -m 模块名称 -a “参数列表”执行的命令单引号双引号都可以 指定IP地址只会目标主机执行 指定组组内所有的声明的主机都会执行 所有声明的主机都会执行 不加-m也就是不声明使用的模块默认就是command模块 Command的常用参数
Chdir:在远程主机上运行命令提前进入目录 Creates:判断指定的文件是否存在如果存在不执行后面的操作 Remove判断指定的文件是否存在如果存在执行后面的操作 模块一
Command模块在远程主机执行Linux的命令不支持管道符重定向输出 远程执行命令 被管理主机查看日志,查看操作记录 主机名也可以用 模块二
shell模块在远程主机执行命令相当于远程主机 需要交互的命令ansible都不太行 例题
切出IP地址 在ansible当中多个引号之间要做隔离 怎么把多个shell命令写一块多个命令之间可以用连接在一起
表示逻辑且前一个命令成功才会执行下一个命令 写一个需求 定义一个需求 ;表示逻辑或前一个命令成功与否后面的命令都会执行 模块三
cron模块
远程给主机设置定时任务
两种状态present表示添加默认就是添加可以省略 Absent表示移除#absent在整个ansible的语法当中都表示移除的意思删除
分 时 日 月 周
分minute
时hour
日day
月month
周weekday
Job:任务执行的命令
Name任务计划的名称 演示一个定时任务每五分钟执行一次 写一个需求 删除定时任务 如果是none就直接等于none删除 如果有多个none他就会删除多个none多计划任务如果不给名字一旦删除none全部删除不推荐最好是指定一个不重复的名称 模块四
USER模块用户管理模块
常用的参数
Name指定用户名必须要有
State present absent 创建用户可以不加present但是删用户一定要加absent
Systemyes |no,标记用户是否是一个程序用户
Uid:用户的唯一标识
Group用户的所在组
Create_homeyes|no,替换用户的家目录不需要替换用户的家目录可以不写
Password给用户创建密码
Command用户的注释信息可有可无
Removeyes|no 当删除用户时加上removeyes删除用户的家目录userdel -r如果不需要删除家目录可以不写 例 在创建用户时虽然声明了是一个程序用户但是默认登录shell如果没有额外的声明还是默认的/bin/bash.UID会按照程序用户来指定程序用户没有家目录 那我们该怎么声明 使用ansible的USER模块创建用户时如果创建普通用户可以不加systemno,指定shell类型也可以不加默认就是/bin/bash
如果创建的是程序用户一定声明systemyes声明shell的类型shell/sbin/nologin
也可以指定uid的方式给用户分配一个uid 举几个实例 Create_homeyes|no,替换用户的家目录不需要替换用户的家目录可以不写 如何删除用户 模块五
Group模块用户组的管理模块
Name必须要有
Gid:设置组的ID 如何创建用户的时候添加组 Ansible不适合使用交互命令 如何删除组 要先删组用户,再删除用户
演示 模块六:
Ping模块