Ansible部署和模块应用

1.Ansible的概述

ansible 自动化运维工具,也叫机器管理工具。也可以实现批量管理成百上千的多台主机,是应用级别跨主机编排工具。

(1)ansible的特性

(1)无客户端agent,不需要在被控制的主机节点上安装任何客户端应用
(2)控制节点是通过ssh协议与被控制的主机节点通信的
(3)基于模块工作的,可以通过模块实现在被控制的主机节点上执行相应的操作
(4)很多模块具有幂等性,可以实现多次模块操作的状态如果没有发生改变,则不会重复执行

2.ansible 环境安装部署

systemctl disable --now firewalld
setenforce 0
vim /etc/selinux/config
       disabled
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum install -y epel-release	
yum install -y ansible



  • ansible 目录结构

  • 配置主机清单

  • 配置密钥对验证

3.ansible 的常用模块

  • ansible命令格式
ansible-doc -l                  #列出当前ansible支持的模块列表,按q退出
ansible-doc -s 模块名           #查看模块的详细信息
ansible 组名 -m 模块名 -a '模块参数'



(1)command 模块

在远程主机执行linux命令,但不支持管道、重定向等特殊符号,是ansible默认的模块

常用的参数
chdir 在远程主机上运行命令前提前进入目录
creates 判断指定文件是否存在,如果存在,不执行后面的操作
removes 判断指定文件是否存在,如果存在,执行后面的操作









(2)shell 模块

在远程主机执行linux命令,支持管道、重定向等特殊符号
chdir 、 creates 、 removes


(3)cron 模块

在远程主机设置crontab计划任务
present表示添加(可以省略),absent表示移除。

常用的参数
minute
hour
day
month
weekday
job 任务计划要执行的命令
name 任务计划的名称
user 指定计划任务属于哪个用户,默认是root用户


(4)user 模块

在远程主机管理用户账号

常用的参数
state=present 或 absent 创建账号或者删除账号,present表示创建,absent表示删除
system=yes 或 no 是否为系统账号
uid 用户uid
group 用户基本组
groups 用户所属附加组
shell 默认使用的shell
create_home=yse 或 no 是否创建家目录
password 用户的密码,建议使用加密后的字符串
remove=yes或no 当state=absent时,是否删除用户的家目录





(5)group 模块

在远程主机管理组账号
name 、 gid 、 state=present|absent



(6)copy 模块

复制本地的文件/目录/内容到远程主机

常用的参数
dest 指出复制文件的目标及位置,使用绝对路径,如果源是目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容
src 指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode 指出复制时,目标文件的权限
owner 指出复制时,目标文件的属主
group 指出复制时,目标文件的属组
content 指出复制到目标主机上的内容,不能与src一起使用




(7)fetch

将远程主机的文件/目录复制到本地
src 、 dest

(8)file 模块

在远程主机管理文件/目录
path 、 mode 、 owner 、 group 、 state=absent|touch|directory|link 、 src(指定软链接源文件路径,path指定链接文件路径)




(9)hostname 模块

在远程主机设置主机名
name

(10)ping 模块

检测与远程主机的网络连通性

(11)yum/apt 模块

在远程主机通过yum|apt管理软件包
name state=present|latest|absent



(12)service/systemd 模块

在远程主机通过service|systemctl管理服务状态

常用的参数
name 被管理的服务名称
state=started或stopped或restarted或reloaded 动作包含启动关闭或者重启
enabled=yes或no 表示是否设置该服务开机自启
runlevel 如果设定了enabled开机自启去,则要定义在哪些运行目标下自启动




(13)script 模块

在远程主机执行脚本





(14)mount 模块

在远程主机执行挂载和解挂载操作

常用的参数
src 定义挂载设备的路径
path 定义挂载到哪个目录,必须指定
fstype 指定挂载文件的系统类型,必须指定,xfs、iso9660、nfs...
opts 定义挂载的参数,defaults、rw、ro...
state 定义挂载的状态,mounted(进行挂载,修改/etc/fstab信息)、absent(永久性卸载,并修改 /etc/fstab信息)、unmounted(临时卸载,不修改/etc/fstab信息)







(15)archive 模块

在远程主机压缩文件/目录

常用的参数
path 必须参数,远程主机上需要被打包压缩的源文件/目录
dest 打包压缩后的包文件路径(包文件的父目录必须存在);如果包文件已存在,则会被覆盖
format 指定压缩类型,包括: bz2、gz(默认)、tar、xz、zip
remove=yes或no 是否删除源文件



(16)unarchive 模块

将本地或远程主机的压缩包解压缩到远程主机的指定位置

常用的参数
copy 默认为 copy=yes ,拷贝的文件从 ansible 主机复制到远程主机,copy=no 表示在远程主机上寻找源文件解压
src tar包源路径,可以是 ansible 主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需设置 copy=no
dest 解压后文件的目标绝对路径
remote_src 和 copy 功能一样且互斥,设置 remote_src=yes 表示文件在远程主机上,设置为 remote_src=no 表示文件在 ansible 主机上




(17)replace 模块

在远程主机通过正则表达式匹配文件内容进行修改

常用的参数
path 必须参数,指定要修改的文件
regexp 必须参数,指定一个正则表达式
replace 替换regexp参数匹配到的字符串
backup=yes或no 修改源文件前创建一个包含时间戳信息的备份文件
before 如果指定,则仅替换/删除此匹配之前的内容,可以和after参数结合使用
after 如果指定,则仅替换/删除此匹配之后的内容,可以和before参数结合使用
owner 修改文件用户名
group 修改文件组名
mode 修改文件权限






(18)setup 模块

通过ansible_facts组件收集远程主机的系统信息(facts信息)






4.inventory 主机清单

Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。
如果是名称类似的主机,可以使用列表的方式标识各个主机。
主机清单配置文件/etc/ansible/hosts

(1)格式

[组名]
主机IP[:ssh端口]          #ssh端口默认为 22
主机名[:ssh端口]
主机IP[0:255]             #设置连续的主机列表范围
主机名[a:z]
主机IP   ansible_port=   ansible_user=   ansible_password=   ....      #设置主机变量

[组名:vars]                #设置组变量
ansible_port=
ansible_user=
ansible_password=
....

[大组名:children]          #设置组嵌套
组名1
组名2
....






(2)inventory 中的变量

Inventory变量名 含义
ansible_host ansible连接节点时的IP地址
ansible_port 连接对方的端口号,ssh连接时默认为22
ansible_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 提升为哪个用户的权限,默认提升为root
ansible_become_password 提升为指定用户权限时的密码

(1)主机变量



(2)组变量

表示为所有组内的所有主机定义变量

(3)组嵌套

posted @ 2024-07-24 14:42  无敌小鲁班  阅读(166)  评论(0)    收藏  举报