环境声明
- Vmware虚拟主机 Ansible服务器 Centos7.7
- Azure虚拟机 Ansible客户机 Centos7.7
- 阿里云 ECS Ansible客户机 Centos7.7
- Aws EC2 Ansible客户机 Centos7.7
Ansible模块
借助ssh协议,Ansible实现了ansible服务器与客户机之间的通信,基于各个模块完成所需的各种功能。本文将介绍常用的模块及用法。
在开始实践各项功能之前,请确保您已经在主机配置清单中配置好了主机的连接信息,以方便进行下面的实践。
Ansible常用模块包括shell模块、复制模块、用户模块、软件包管理、服务模块、文件模块、收集模块等。
如果需要获取模块的详细用法,可以使用ansible-doc [模块名]获取详细信息
- shell模块
shell模块的标识符为shell,语句结构为
ansible [操作对象] -m shell -a '[操作语句]'
操作语句与普通shell语句语法类似
举例`:安装apache
ansible host2 -m shell -a 'yum -y install httpd' -o
获取负载均衡信息
ansible host2 -m shell -a 'uptime' -o
- 复制模块
复制模块的标识符为copy,语法结构为
ansible [操作对象] -m copy -a '操作语句'
操作语句结构参数化,类似变量的声明与赋值,可选参数
src=源地址变更
owner=属主
group=属组
mode=权限
更多参数可以参考ansible-doc copy
举例:复制文件/etc/file1到/tmp/file2`
ansible host1 -m copy -a 'src=/etc/file1=/tmp/file2 mode=777 owner=root'`
- 用户模块
用户模块的标识符为user,语法结构为
ansible [操作对象] -m user -a '操作语句
操作语句参数化,类似变量声明与赋值,常见可选参数
name=用户名
state=操作类型
password=加密后的密码
更多参数可以参考ansible-doc user
举例:创建用户
ansible host1 -m user -a 'name=test state=present password=[加密后的密码]'
计算加密密码`
echo '明文密码''openssl passwd -1 -stdin`
- 软件包管理模块
以Centos的yum安装为例,标识符为yum,语法结构为
ansible [操作对象] -m yum -a '操作语句'
操作语句参数化,类似变量声明与赋值,常见可选参数
name=软件包名
state=版本
更多参数可以参考ansible-doc yum
举例:安装httpd
ansible host2 -m yum -a 'name="httpd" state=latest'`
- 服务模块
服务模块标识符为service,语法结构为
ansible [操作对象] -m service -a '操作语句'
操作语句参数化,类似变量声明与赋值,常见可选参数
name=服务名
state=操作符
更多可选参数可以参考ansible-doc service
举例:启动httpd并设置开机自启动
ansible host2 -m service -a 'name=httpd state=started enabled=no'`
- 文件模块
文件模块标识符为file,语法结构为
ansible [操作对象] -m file -a '
操作语句操作语句参数化,类似变量声明与赋值,常见可选参数
path=文件名
state=操作符
更多可选参数可以参考ansible-doc file
举例:创建权限为777的文件/tmp/test.txt
ansible host1 -m file -a 'path=/tmp/test.txt mode=777 state=touch'
- 收集模块
文件操作标识符为setup,语法结构为
ansible [操作对象] -m setup '[操作语句]'
操作语句为空,获取所有信息
使用filter=变量名可获取指定信息
更多可选参数可以参考ansible-doc setup
举例:获取Ipv4地址
ansible host1 -m setup -a 'filter=ansible_all_ipv4_addresses'
总结
- Ansible的操作基于模块工作,每个模块的工作方式可以使用"ansible-doc [模块]"来查询
- shell模块类似于万能模块,能够实现其他模块的各种功能。但是其他模块操作语句参数化的处理,能够使得操作更加明晰。同时为接下来使用YAML语言编写剧本提供了帮助。
个人博客同步更新