视频 怎么做网站,专门做餐饮ppt的网站,工具类网站怎么优化seo,护卫神 安装wordpressAnsible是一个基于Python开发的配置管理和应用部署工具#xff0c;能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作#xff0c;使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作 Ansible是基于模块工作的#xff0c;它… Ansible是一个基于Python开发的配置管理和应用部署工具能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作 Ansible是基于模块工作的它只是提供了一种运行框架它本身没有完成任务的能力真正执行操作的是Ansible的模块 比如copy模块用于拷贝文件到远程主机上service模块用于管理服务的启动、停止、重启等 Absible特点 部署简单只需在主控端部署Ansible环境 被控端无需做任何操作 默认使用ssh协议设备进行管理 主从集中化管理 配置简单、功能强大、扩张性强 支持API及自定义模块可以通过pyhton轻松扩展 通过playbooks 来指定强大的配置、状态管理 对云计算平台、大数据都有很好的支持
ansible工作机制
ansible核心组件
hostinventory记录由ansible管理的主机信息【端口 ip 密码等】playbook“剧本” yaml格式文件多个任务定义在一个文件中定义主机需要哪些模块来完成的功能core modules核心模块主要操作是通过调用核心模块来管理任务custom modlues自定义模块来完成核心无法完成的功能【支持多语言】connectionplugins连接插件 ansible和host通信使用 ansible 环境安装部署
管理端 192.168.86.44 ansible
被管理端 192.168.86.55
被管理端 192.168.86.77 管理端安装 ansible
yum install -y epel-release //先安装 epel 源
yum install -y ansible 配置主机清单
vim /etc/ansible/hosts
[webservers] #配置组名
192.168.86.55 #组里包含的被管理的主机IP地址或主机名主机名需要先修改/etc/hosts文件[dbservers]
192.168.86.77 配置密钥对验证
ssh-keygen -t rsa #一路回车使用免密登录
ssh-copy-id root192.168.86.55
ssh-copy-id root192.168.86.77 Ansible 命令行
命令格式ansible 组名 -m 模块 -a 参数列表
【不加-m指定模块则默认使用command模块】ansible-doc -l #列出所有已安装的模块按q退出
Ansible 模块
1、command模块在远程主机执行命令不支持管道重定向等shell的特性。
ansible-doc -s command #-s 列出指定模块的描述信息和操作动作 【q退出】常用参数
chdir在远程主机上运行命令前提前进入目录
creates判断指定文件是否存在如果存在不执行后面的操作
removes判断指定文件是否存在如果存在执行后面的操作 指定 ip 执行 date命令
ansible 192.168.86.55或192.168.86.77 -m command -a date 指定组执行 date命令
ansible webservers或dbservers -m command -a date all 代表所有 hosts 主机
ansible all -m command -a date 所有主机切换到 home目录进行ls命令
ansible all -a chdir/home ls ./ 2、shell 模块:在远程主机执行命令相当于调用远程主机的shell进程然后在该shell下打开一个子shell运行命令支持管道符号等功能
ansible-docc -s shell 指定dbservers组中的test用户修改密码
ansible dbservers -m shell -a echo 123456 | passwd --stdin test 指定dbservers组执行 ifconfig ens33命令列出第二行以空格为标志展示出第二个空格内容 3、cron 模块在远程主机定义任务计划。其中有两种状态statepresent表示添加可以省略absent表示移除。
ansible-doc -s cron常用的参数
minute/hour/day/month/weekday分/时/日/月/周
job任务计划要执行的命令
name任务计划的名称 指定webservers组创建任务计划
ansible webservers -m cron -a minute*/1 job/bin/echo helloworld nametest crontab
ansible webservers -a crontab -l
ansible webservers -m cron -a nametest crontab stateabsent 【假如该计划任务没有取名字nameNone即可】 查看定时任务 移除定时任务 4user 模块用户管理的模块
ansible-doc -s user常用的参数
name用户名必选参数
statepresent|absent创建账号或者删除账号present表示创建absent表示删除
systemyes|no是否为系统账号
uid用户uid
group用户基本组
shell默认使用的shell
move_homeyse|no如果设置的家目录已经存在是否将已经存在的家目录进行移动
password用户的密码建议使用加密后的字符串
comment用户的注释信息
removeyes|no当stateabsent时是否删除用户的家目录 指定dbservers组创建test2用户、查看用户、删除用户
ansible dbservers -m user -a nametest2
ansible dbservers -m command -a tail /etc/passwd
ansible dbservers -m user -a nametest2 stateabsent 5、group 模块用户组管理的模块
ansible-doc -s group 创建mysql组、查看、将test01用户添加到mysql组中
ansible dbservers -m group -a namemysql gid306 systemyes 6、copy模块用于复制指定主机文件到远程主机
ansible-doc -s copy常用的参数:
dest指出复制文件的目标及位置使用绝对路径如果是源目录指目标也要是目录如果目标文件己经存在会覆盖原有的内容
src指出源文件的路径可以使用相对路径或绝对路径支持直接指定目录如果源是目录则目标也要是目录
mode指出复制时目标文件的权限
owner指出复制时目标文件的属主
group指出复制时目标文件的属组
content指出复制到目标主机上的内容不能与src一起使用 将/etc/fstab复制到/opt目录下更名为fstab.bak并指定属主和权限
ansible dbservers -m copy -a src/etc/fstab dest/opt/fstab.bak ownerroot mode640 7、file模块设置文件属性
ansible-doc -s file 修改文件的属主属组权限等修改dbservers组的fstab.bak的属主、属组、权限
ansible dbservers -m file -a ownertest groupmysql mode644 path/opt/fstab.bak 设置/opt/fstab.link为/opt/fstab.bak的链接文件
ansible dbservers -m file -a path/opt/fstab.link src/opt/fstab.bak statelink 创建/删除文件
创建ansible dbservers -m file -a path/opt/abc.txt statetouch
删除ansible dbservers -m file -a path/opt/fstab.bak stateabsent 8、hostname模块用于管理远程主机上的主机名
ansible-doc -s hostname 修改dbservers组的主机名
ansible dbservers -m hostname -a nameaaaa 9、ping模块检测远程主机的连通性
ansible-doc -s ping 测试连通性
ansible all -m ping 10、yum模块在远程主机上安装与卸载软件包
ansible-doc -s yum 安装/卸载服务
安装ansible dbservers -m yum -a namehttpd
卸载ansible dbservers -m yum -a namehttpd stateabsent 11、service/systemd模块用于管理远程主机上的管理服务的运行状态
ansible-doc -s service常用的参数
name被管理的服务名称
statestarted|stopped|restarted动作包含启动关闭或者重启
enabledyes|no表示是否设置该服务开机自启
runlevel如果设定了enabled开机自启则要定义在哪些运行目标下自启动 查看web服务器httpd运行状态
ansible dbservers -a systemctl status httpd 启动httpd服务
ansible dbservers -m service -a enabledtrue namehttpd statestarted 12、script模块实现远程批量运行本地的 shell 脚本
ansible-doc -s script 在ansible服务器编写脚本
vim test.sh
#!/bin/bash
echo hello ansible from script /opt/script.txt
chmod x test.sh指定dbservers组执行并查看内容 13、setup模块facts 组件是用来收集被管理节点信息的使用 setup 模块可以获取这些信息
ansible-doc -s setup 获取mysql组主机的facts信息
ansible dbservers -m setup 使用filter可以筛选指定的facts信息
ansible dbservers -m setup -a filter*ipv4 inventory 主机清单
Inventory支持对主机进行分组每个组内可以定义多个主机每个主机都可以定义在任何一个或多个主机组内。
如果是名称类似的主机可以使用列表的方式标识各个主机
vim /etc/ansible/hosts
[webservers]
192.168.86.44:2222 #冒号后定义远程连接端口默认是 ssh 的 22 端口
192.168.86.1[2:5][dbservers]
db-[a:f].example.org #支持匹配 a~f
inventory 中的变量
ansible_host ansible连接节点时的IP地址ansible_port连接对方的端口号ssh连接时默认为22ansible_user连接对方主机时使用的主机名。不指定时将使用执行ansible或ansible-playbook命令的用户ansible_password连接时的用户的ssh密码仅在未使用密钥对验证的情况下有效ansible_ssh_private_key_file指定密钥认证ssh连接时的私钥文件ansible_ssh_common_args提供给ssh、sftp、scp命令的额外参数ansible_become允许进行权限提升ansible_become_method指定提升权限的方式例如可使用sudo/su/runas等方式ansible_become_user提升为哪个用户的权限默认提升为rootansible_become_password提升为指定用户权限时的密码
1主机变量
[webservers]
192.168.86.44 ansible_port22 ansible_userroot ansible_passwordabc12342组变量
[webservers:vars] #表示为 webservers 组内所有主机定义变量
ansible_userroot
ansible_passwordabc1234[all:vars] #表示为所有组内的所有主机定义变量
ansible_port223组嵌套
[nginx]
192.168.86.44
192.168.86.55
192.168.86.66[apache]
192.168.86.3[0:3][webs:children] #表示为 webs 主机组中包含了 nginx 组和 apache 组内的所有主机
nginx
apache