ansible安装部署以及常用模块解析使用

ansible安装部署

1.配置阿里云的eple源

我们使用yum命令安装ansible,需要阿里云的eple源

阿里云eple源下载地址
也可以通过下面命令获取

epel(RHEL 8) centos8版本按照如下配置

1)安装 epel 配置包

yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm

2)将 repo 配置中的地址替换为阿里云镜像站地址

sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
epel(RHEL 7) centos7版本按照如下配置
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
清理yum源缓存并加载元数据
yum clean all
yum makecache

时间可能有点长,耐心等等…

安装ansible

yum install -y ansible

我的版本是centos7 yum安装最新版本是2.9.27的版本

ansible配置

配置ssh免密登录

首先要知道ansible是依靠其自带ssh模块远程控制被监控主机的,配置ssh免密是必需的!

  1. 首先在你的控制端上生成密钥,按照如下操作
ssh-keygen
ssh-copy-id 被监控端主机IP地址
如:ssh-copy-id 192.168.111.111
  1. ansible主配置文件
    yum安装过的ansible配置文件就在/etc/ansible下
    我们需要编辑配置文件,关闭指纹验证。什么叫指纹验证?就是两个主机间第一次远程连接时会出现一长段,需要你输入yes or no,如果不开启忽略指纹验证,两主机第一次互信,即使配置了ssh免密钥登录,使用ansible时依旧失败。
vim /etc/ansible/ansible.cfg

将其前面的注释号删除,大概在文件70行附近

被监控主机清单的定义
vim /etc/ansible/hosts

格式如下:
[ ]框内可自定义名称,根据你的业务需求整个组取名字,方便后续批量操作
ps:如果写的是主机名,要求本机或者dns服务器能解析
ps2:主机【组】名称,尽量不使用符号起名

[webserver]
192.168.0.0
192.168.1.1
......
[testserver]
test-1
......

如果你不希望写在官方定义的配置文件下,你也可以选择自定义文件
使用ansible命令时,需要使用 -i 参数加上你的文件路径名称,指定你要读取的主机清单
命令如下:

ansible test -m yum -a "name=httpd state=present" -i /ansible/host

ansible常用模块使用

写在前面

ansible的使用其实并不难,模块多,参数多是他的特点,因为篇幅限制,在这里是很难将所有模块以及他们的参数全都罗列出来的。所以在这里告诉大家一条万能命令ansible-doc,可以让大家很快熟悉ansible模块及参数

ansible-doc -l 查看所有模块
ansible-doc -l

在这里插入图片描述

ansible-doc 模块名 :查看指定模块
ansible-doc file

file可以换成你想查看的所有模块,doc进去后,使用“ /EXAMPLE ” 匹配到ansible官方给你的例子,里面讲的很清楚,这个模块怎么用,需要什么参数。以file模块举例
在这里插入图片描述

ansible-doc -s -模块名:查看指定模块的参数
ansible-doc -s file

以file模块为例,可以查看到file模块的参数,但是大家也可以看到参数后面的解析一大堆,很难沉下心去看,所以建议使用上述第二条命令查看具体使用方法更好
在这里插入图片描述

常用模块详解:

  1. setup:查看远程主机的一些基本信息
ansible test -m setup
  1. ping: 用于测试远程主机的运行状态
ansible test -m ping
  1. file:设置文件属性,使用该模块可以对文件进行增删查改:
    创建文件(state=touch)、目录(state=directory)
ansible test -m file -a "path=/data/test.txt state=touch"
ansible test -m file -a "path=/data/test state=directory"

定义文件/目录的属组,权限,属主,路径
当你要设置属组与属主时,一定要注意是否有相应的组、主,否则定义失败

ansible test -m file -a "path=/root owner=root group=root mode=1777"

递归(rescurse=yes)设置目录的属性

ansible test -m file -a "path=/data/dir state=directory recurse=yes owner=root group=root"

创建(state=link)、删除(state=absent) 软连接

ansible test -m file -a "src=/etc/resolve.conf dest=/tmp/resolv.conf state=link"
ansible test -m file -a "path=/tmp/resolv.conf state=absent"
  1. copy:复制文件到远程主机
    参数选项如下:
    backup: 在覆盖之前,将源文件备份,(yes/no)
    src:被复制的本地文件路径,如果是目录,则将递归复制
    dest:将控制端源文件复制到远程主机的绝对路径,若源文件是目录,那么路径也必须是目录且必须存在
    force:如果目标主机包含该文件,但内容不同,(=yes)将强制覆盖,(=no)则当目标主机目标位置不存在时才复制,默认为yes
    实例:
ansible test -m copy -a "src=/root/copy.txt dest=/tmp/copy.txt" 
  1. command:在远程主机上执行命令
    相关选项:
    creates:创建文件,当文件名存在时,则不执行该指令
    removes:删除文件,当文件名不存在时,则不执行该指令
    chdir:在执行指令之前,先切换到该目录
    executeable:切换shell来执行该指令,执行路径必须是绝对路径

  2. shell:切换到某个shell执行指定的指令,参数与command相同,shell权限很高,但本人不太建议过多使用,使用时,通常会有warning提示你有更好的模块去使用。
    ps:与conmmand不同的是,command不支持管道符“|” ,shell模块支持。

  3. group、user模块:系统用户组管理,系统用户管理,需要注意的是,可以使用hash加密明文密码

  4. service/systemd:系统服务管理模块,启动关闭服务等操作
    注意:此处state状态必须是过去式,started,restarted,stopped,reloaded
    实例:开启apache服务

ansible test -m service -a "name=httpd state=started "

设置开机自启

ansible test -m systemd -a "name=httpd enabled=yes"
  1. yum: 软件包安装管理
    state=latest(最新)/present(当前)/absent(卸载)
    name=需要安装的包名
    实例:
    yum安装httpd服务
ansible test -m yum -a "name=httpd state=latest"
  1. unarchive: 解压模块,他要求远程被监控主机必须有解压工具,比如unzip,tar…
    copy=yes/no是否在本机寻找压缩文件
    简单解释一下这个参数,如果copy=yes,解压的文件直接从控制端寻找,不要求被监控端有这个压缩文件,copy=no,则要求被监控端必须存在该压缩文件,否则该命令执行失败
  2. cron:计划任务管理
    实例
    使用ansible添加一条定时任务
    ps:name选项的作用是注释定时任务,防止任务重复
ansible test -m cron -a "name='cron01' job=/bin/sh /test/job.sh"

查看定时任务列表,检查是否添加

crontab -l
  1. mount:挂载模块
    state=
    1) present(开机挂载,仅写入/etx/fstab,需要重启才能挂载,慎用,否则有可能出现开机失败)
    2) mounted(挂载,并将配置写入/etc/fstab)
    3)unmounted(卸载,但不清理/etc/fstab)
    4)absent(卸载,并清理/etc/fstab写入的配置)
    实例:nfs文件系统挂载
ansible test -m mount -a "src=192.168.x.x:/data/mount path=/data/mount fstype=nfs opts=default state=present/mounted"

nfs文件系统卸载

ansible test -m mount -a "src=192.168.x.x:/data/mount path=/data/mount fstype=nfs opts=default state=unmounted/absent"
  1. firewalld/selinux:防火墙管理模块

总结

ansible有很多模块,涉及到的方向也很多,我们也没必要了解所有模块,只需要根据实际的业务场景了解相应的模块即可,而且ansible对用户使用十分贴心,分门别类的很清楚,还想了解更多可以参考官方手册,找到答案
官方模块索引参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值